{"_id":"ethereum-waffle","_rev":"240-1f75ea9b8e231f253090c8dccf21ca18","name":"ethereum-waffle","dist-tags":{"latest":"4.0.10","beta":"3.0.0-beta.3","alpha":"4.0.7","dev":"4.0.10-dev.238c11c"},"versions":{"0.0.1":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.0.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test"},"engines":{"node":">=9.3"},"dependencies":{"solc-js":"^0.4.20-browser.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.0.1","dist":{"shasum":"5da2b56d96a96290b7d79796bbe085a46011d53a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.0.1.tgz","fileCount":22,"unpackedSize":14322,"integrity":"sha512-iMCLVz80qW+UDBB+8Vi8H4ovJYnu16r8nbbFlRo8ccO7wvntNIsLmIaLX/VhGST1HEqHNaUjLrg0FPnVy1Gwxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGgNx54xMSnqq8K1mm8Fcq/cp/+osp0dMnHe5gNmjmlQIgLghyB6xJCLalA59kM3ix5N22liLRnKZCqAlBdczQl40="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.0.1_1533291416954_0.895856574742752"},"_hasShrinkwrap":false},"0.1.0":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"lib/waffle.js","scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test && solium -d test/compiler/contracts"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.0","dist":{"shasum":"089f39d96b8ccccdf419acb29462343947807c43","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.0.tgz","fileCount":30,"unpackedSize":145819,"integrity":"sha512-EEENwxdk4/iJJHuPT4feHlurbwznXG6I8WvMARWR40VTUvnYH9/M9FsNNDJCGaIGRFXKZbajk4dNbwQoJIFfaw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChGnqit922ULGQPOBKkUGkUVw7LScemS6gCfzv7jHE3wIhAI0mRAe1+jdQsjIJl4EqGHTabCn7KhcWwkhY1qFL0T6P"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.0_1533309607599_0.5343373331501053"},"_hasShrinkwrap":false},"0.1.1":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"gitHead":"f5f4b63779136ca3feaaccc56b2eadbfbda73a23","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@0.1.1","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-5p1DOZCnjimOn2YGk80EbZvUTbUlWwIMeK1mLq9IPHEgxXWS04rtnjGtC5Q4qKejd/9GegPSbIyVncfTNHk11w==","shasum":"3ff1d1405b9b00c22ef20fedbb48941ba655bc06","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.1.tgz","fileCount":27,"unpackedSize":366659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZH0ZCRA9TVsSAnZWagAAja8QAI/c+R9BuXO+FvNFZFZG\n17s17j6W+juGQ4l8PpndGdPmG0/Jlth+NT6CVjCr1QU930cBsnxOCkg0474p\nUFznHf9rh2Fsrx6ngplu5HeQZtx5E1qvhSzOmAA+Ey5M5CKsqgulgPcUZpGq\n0mCEiFh+AWbW5y5dHBbG3aLzs5nwMlPUCYamshbWhDihgvVlUczmvr+Wsw+Y\nqlGK/SqA5jdY/1USiaqAZS9wwNuROKkw8rX67EPRWiloURy4KbTBsu2F45qO\nAsTX8Yo5ERHWboBVolQGxnpxzRkZ9ysf3yRa+2wKGMklibHy6qwnJtL1uMF7\nXydV4iguGYfUz9XD8VqUom9ZQPNM80cMDcN8wiwX+FX1hfRHgsbnbhyyKoPz\nkM81k/r5ImTGXpOKESsi/8e2pKjdQ5Y0gHCmfUbC4cz3syHFOmEokY52cpfs\nRW2IvemDPn9NR89VAgmzAqHqy8HsJklq1wUdYawLRys8lArz1b8vvULVNDPM\nq6oLtEpqK7zpP7IL+7oTlFP7EDZjNZ1BREny/OeIYwkzQbJOAQm+TJjaxtAD\nhEDmUyoeTMwY7AKN24JrNApyS9Wnd517LgXUASibkLWZQ7BqEE/f4pC8NR9F\nixKuXVWGT8cs0VSvXCgblSo16uf2/n0uTSlLcAPxS+NIgreKzjk2JPmo53Yl\nUJfo\r\n=q+ln\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkQQoboeTds20ES83yyxTizuKdDF+rLPNOMdHTUKsgHwIhAOY8dcBea/eebYxNDPS00TdPoUIiqomKlyCws5VIDgNd"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.1_1533312280747_0.5670747546988624"},"_hasShrinkwrap":false},"0.1.2":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.2","dist":{"shasum":"07f37bc2c613f5bfd27ecbd5f1f2374e6578b412","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.2.tgz","fileCount":35,"unpackedSize":162154,"integrity":"sha512-XqMBqsm5mUpAR9ilr1TFsXKSg9yRicxCUnTXGtMhli1p7nyLmucRwbFZIoCMf0vQr9n81BWYkOAnj85h2jMkyA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG77emgeJ+6fzBGse+YAoZ5nwDkDqR5Zo6ebZ2Ptc9GvAiBwe4OAAsacIbxOIpBzXtiADCI7BkKfgGC7ekXnl1TS3g=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.2_1533312953438_0.4245281569578303"},"_hasShrinkwrap":false},"0.1.3":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.3","dist":{"shasum":"958c34f5875a5ebffec46edffcf37652747feb0f","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.3.tgz","fileCount":35,"unpackedSize":162149,"integrity":"sha512-WPDywDa4Lor6IwEkjEjU4dhtjheVX/YdiU4EqvIhIAmSOKyahLPp7AI8idry7jWfj5Fv49GCNfJE5krFwbbm6Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIECjJ4xwAyQM5o7Sa93ejYDpuoiAYU981mhKML704jDKAiEA42SXHyPTyIVRp7jBhDw4aJcd1Jg/xeNQDCGnt54zeNc="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.3_1533313504200_0.5988199574273916"},"_hasShrinkwrap":false},"0.1.4":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"gitHead":"e76723fbfc6ebd3b77f71002c614858b0329327f","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@0.1.4","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-+WUWyy4HnGUU1vUuRPJgEch+X/OjNI+qTFOUPQwIa2cVCskdRPuptdU8nO/cs3xQtGAV2GwpSjTyc/LFafVRvw==","shasum":"bf99e2c088dd32d9e848e7553e672bf6545219c5","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.4.tgz","fileCount":27,"unpackedSize":366694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZbm5CRA9TVsSAnZWagAAE5gP/3YNvzQnE5rXOn+v0cpV\nsMKiAPX2V9qLrKWqoe2RP6YYQD/QTRLpHkrIMiWdOuEZxjqRVrOloWQOoPJ9\nCKYfbLdi7Odf6i6jfP5VeTtF89kuBwSwCrFJDCgzoUli1q4BjYIGgR3mjZqf\nA6/J/CCP0U6zLdcgOVzzhxx/+y7kuj36RboYNAzY+MgtmVnM86GhYT6ht8V9\nx+VUJD0htWTj4l6k77hH6ojbHBalmZl1sHgBQLeBYfStejYWfkEqh1yLEbKv\n7rwJB+DgSHBrbjT/KoV19n6r97h/zs1g1Hos6QFhMxaGTusGSrp1QDJ22+VZ\nL5v0sdpQZTy30A2g7KmxI5P6CPK6kKOPBSWnrQ97a7NpCA4jVIfJmfszHcPG\nLYfN6ekxwKAUGfsk4Tr2e8b1Ak2JyiXRNEsvM9y9uTpfcuDms3UPdSEphYF5\nk4vIH3rOGcaDQM6xIAQf/n2cj2Eq1Uxi4j3yMJams05zj/bG+iTMJIJE675Y\nAPWJcNm6sml2QP5X1oH96DMCnexWEnfIF33d1XtPrSy7rRZWvY6gYmK1uqGz\nu78vomkUpChYddBJVYAqki3CgrlaXMcDqWPUdQhyxLGkeZMWHF/neiGMNQnA\nzRFq7FN1QAihxc1W5IPnTcRT0kc18XAqn4SwFTw0rsWROKsgQU9A7Ae6+0pt\n/9kc\r\n=FUr/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDdwFijwPhElgRbWgjCRBWGXKh7ZizaxUs8UzqbFiCHgIgOht8adbIjXKUFDjbRbBI35sY8r5VTDKAWg3HeCxiTrk="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.4_1533393336880_0.7975799209340939"},"_hasShrinkwrap":false},"0.1.5":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.5","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.5","dist":{"shasum":"bef99670fd458f67cbcfae1d5899f136fbbe9449","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.5.tgz","integrity":"sha512-wZzZQDw662Kf1qqP71MxfLk8g0B71LAbQQA7wSavF9xy7ye6SV5jfgUYiugCzvI360zDToSrQA0MA37IqIp7Ug==","fileCount":35,"unpackedSize":162043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZb5KCRA9TVsSAnZWagAAldEQAJlXjx/Tq0pDVePAZ5Xg\ncKRDy1Pg5s6T7lQ583YYS+DxRU+X2dtPSook4xRTvFMgw2usYjbkhWWSv1My\nsUDB9cv0H0w8iPKzpg3Ddf4tQWHSdxk+DnsvDMefMZ6q3aozaMrPd3MOlvcA\nCPWPxIIpSkR7Q6A1MBsQI73zeRfO+ivAy1QFNwhBqW12j+SMTqHEZGOtQyqk\n5C96J/4PUDmKcYfJxJIGvKyXg6CJUCrc/bsXy95CLkV0pP7bfNoLRWqWckBo\nnGCPnR2FVVQWOBBonr1Iae1VMEBlkcgpMk4+zRrq3Q+ksYXGenHkrEzwamOr\nWbtWhI8Xos4zIc1kVEC/RJAfwdfn6Pywfuwgzl4QgBgcn8FgzDSD3VOCwnp1\nfFvs9czqDsLjST1qxzvRUV07pT1DZCvQ/H9KY2T1UWnA9s6Yvsjd8EH7MWco\nLD2mn/LioWq1fNdAyl2G2hhXclOBmA3ymzZ/uoNf+YkndFe5E9GIGNUIqNoh\nfwS7CMakFLiYRdYkJQua1iHtbZ68Qn+bKRxVmC2JEOa1K16qvFQj5Psn2/f/\nt292n2fWGwOs1mx6kBxOgER6ce3eR688X72cVzvyRiT5Hvef0SqcNda/QqlZ\nCMaOh2hefTEcl5HM+rVzLxTnOeW9QW/0Ght9dzrYO3Pl5OcUeh/rsPgGG/EH\nPOv9\r\n=9qK1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGx6s/VW31JtMjLD6bJtnfVNWS68yDF+jp9SZiz+VJmPAiA0ZTyrqb4cgT51r2j2M87hGqa7OuiFNNcH2yYp+HCcKA=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.5_1533394506240_0.5138387679825747"},"_hasShrinkwrap":false},"0.1.6":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.6","dist":{"shasum":"ccba45e80a0a265c5daa205a7ccb5edcd0c1e6d5","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.6.tgz","integrity":"sha512-fyqVHugKZSEG1l4ifC8jtLwG4Q9c6qGa+plO2/6uJYRCVfZrXoxsyXXYhw8QmafLsRqci6mr9z5KwB3zEIrDHQ==","fileCount":37,"unpackedSize":162691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZdkFCRA9TVsSAnZWagAANhMP/1ATtgco+Img5Bxa1bkw\n1hYhmRDQ0XKY01oSgl+PgrOHtV6YTlQqQsKnBH8un2LdH8p8nyrZlghKtbPP\n2/kkfwdNPWgObwiuf+aMEKC+ScdW70rs/2j3y218isSmzdqGvVwgEnAPsrZj\nIWOdp+4FnHyQzDp+BABGSGliS0mVlJHtT+edR9+PmY8AkW5RLF374NZqN+0u\n0zvWem/ZB6nwyxu8a3Fya36bLT3GLcvvAiBM+hcHlklXh+B3l46VigOfnCW4\nd5ZlFMMYpD4bngnR4//xcHoc9/sv218NM+RGBm9btasNo1pJstHjaJLg9Kcr\nmcULV2/ULbQUGi0bDbICTgJKmjIAzxdRBVeMPf+XoGS5/oxnYYTU5RB8B6Hc\nlD3h2ODJ6+xH1xvU6cOtOMLjbdeIRPe2j8d7MEk5Jl9U7ZhBl/i30YACY73F\nWG+TExGFQCmigXPkqQQ/6jX/YNbsC1zr3DH5VbFJJzW4kLXaguiSMUN9snJh\nvj+P9MzPDm4EMvnAjCOtR+pISPkgtPH6vPtdYMnrAcjqt8A+oqc7Mvo8T94m\n+ifcEWKjLcUUxTJSRHBnJ7/wzbUgnmeTSydqE5Zyyrwkeydpctt7UGNxT99a\nIW3oZKlnwVbZ+k2jrlMfj9+J/yP/Gn5MbMOvQiK8ttuyjkcgD1y6GdsYnlng\n2Ngp\r\n=c7+Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC6Pka8pml3+NrQczOUE+ahixQ3ilHZ9q5H+WDblfAMzAiAYyQPga045aMvjUnfUZiTZEsYA3bLvszt30acm846OGA=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.6_1533401349062_0.8775802369177117"},"_hasShrinkwrap":false},"0.1.7":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.7","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.7","dist":{"shasum":"a798d0b34d8cad17fb2890020ccb73f605da3390","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.7.tgz","integrity":"sha512-MtQwKZbIQ8WsHLM7icnvpkAYPU6/FC+H85L/AmIVQdIlB3tTVWfOgcMXPP094zmQvZeo0X+Fpt+Bl5NExIkP0w==","fileCount":37,"unpackedSize":162691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZdoSCRA9TVsSAnZWagAAYDkP/ia2VVocgaWQtYbDtdyS\nYmky3ZRs8hfcxA1MoqtzXA9wTHZ7PHL+zZCuyfzo9flONILTLbUSF8KDuTWH\nzxi1fbs/ve2kDh4DskSH6bwfNrFT4xPgwvUpjqE3gASWILXkzjLdfXNVm9bQ\n6MUUzgdDeMbG4yXAj9QWGP6hQnmvdBH1hL+MNEWTN+r90Txy6fg4CU4JQ2qK\nGk0IH/c6mLG636gfq74fBT2bewOZ9sXOX9PLGmaSQMs9cb9VDqwjsdOXhP7s\nY3PKYlQnyohF4f53VwBJvfBj0C4bVq1NzffrZoPilBY6qV+p8dGdWtznH9Tx\nEOFXrMd0PWjiJ+B3lsmV4MuxWwK/mmH1nGaUnAuCbFMrxjklVRf9Eik8CmEI\nDfHJ0XZ7LX9AAj65yh+VFEvJ83neJhh5wZ0oHThsD4tvJ33J6VTojO2eC31z\nSIh6Mo0XZpYTi7itovuMrCzb8An9Jq/aUi2GfZxhUFs4xQSfvCWFRuljbqrd\nXlRH3ubgk7tGJGIZseXJcA/jWacwRzUqHOaf68DtsnHYAGKvpMZ5GS5PDOPd\nQLvmvsnu9dSIgzoGrdeceS8N9gJ3I3LxX92d4AhoSqmazagFWCqez5ICf2MH\nmKvaHOxsNSEK2wBiipALVw2Nw9llL0/N/RReaVAQtirmSatN2y6TCy+1NDsh\nC6yf\r\n=Bd2+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF1EtWdtY4mk03bDduFWmbMTU9tfxEMBi3hALGXRvc9AIgEDkNJf6v4ovRXO7zZxoNERU/74OGU7E+gfZ3Nmdu2mI="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.7_1533401618230_0.8100635082174912"},"_hasShrinkwrap":false},"0.1.8":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.8","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.8","dist":{"shasum":"3dbc636473b3ed0cdccbc7717a9bf860e9e35e65","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.8.tgz","integrity":"sha512-afctfINBTczdO4BMpXGOiwEEi7QuB4tW8c35UAGH2CNdMvfq2okojPc8wpXwPlaOwK3lPKdddsxO3uiiPQkmNw==","fileCount":37,"unpackedSize":162687,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZeH2CRA9TVsSAnZWagAAu6QP/19utD6ZfQ2kiaao3LTB\noaX8nK0wQrhb+w3U1Uk1Htv4bSHrJlTwIZCQoE1dZD4pJSfYWaYVTJANAPUj\ninxvKqBNJJcDfjkPksC6m8csVJk+0p482TpnewfNthQr+dSoMdVYBDH3HuH2\n7s0he1uS55xCFOaIDPehFH84PtF/8unL20OCohetMTA4y5m5+rQCHCj+Eas8\nRWrJLny1JvM2O9ZBRdhfZI0mCqxKiLNyDur7gkIaz5+wN/l7NwO0yI7qsbWu\nnW5SuKlcPczfCmMrGNPDhEQ/DOPMYzoYcwErdiyHCkXlEv5nH9/Wlk2TMwgc\nieR2KSdOAE8t6DcmArQgpxKrJEfp46WGp49/ILsJO/ON4s47GvSPti+No/66\nGByPR9UOP/sFdA1whM6W5BEwG7cc4uqLvFY7Pmf5Uw+TmdOwpGLrlvCSb48n\n0Y4EfPlq5lwr2G29jWlSxXLBF+RfK8+Xg9KIKl3gkIhhBeZOu6BIY3n0Cn3A\nZWDcJFjdOMtvs2KVPBb7fwVq2hwYc4Nn8w6vvbvAwUDwxNTIdxd4U6VIapyU\n371aoMuaO71u1J0G8Vx6zanUR61VVpaR+/yBLno3PQN2US+g2KyjAtb5c1jV\nLezlEiFguhoCX2x6a93PKMimVEvTm+vIB2iPT7rF1jTd65i+EIWu/ZIi5HvZ\nfS5V\r\n=4d4T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0RTBnmVbORVszrBAQ+FspQkAHeLL0lAx2o6GY3qQurQIhAOFcshWuL1/nY4fnxdg5lqAzt4Jlo+DZvbmI73eu8VPM"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.8_1533403637937_0.4016265238123091"},"_hasShrinkwrap":false},"0.1.10":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.10","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:build && yarn test:quick","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.10","dist":{"shasum":"be536657d1e46f359e91b03fed5e9f753c1b2d4d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.10.tgz","integrity":"sha512-Dzsuss/iLU1I3fP7u70F7S8w3qCrKd3YNtteb//EwowVrxhOELWT0K6d8tyejIebVzkWR8qlC2BJq32Q0OaMXw==","fileCount":47,"unpackedSize":205184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbZFxCRA9TVsSAnZWagAAI1UP/0AzmxIAE1nd0UQV2u8A\n49zJKesWIn477H8CRIkZwS8YrrapgvGvfQrH25IDPR359++ZQ3ei9K7eumYq\n2S04aeJrMzkJdqK1Ys30c8cxbxUuNowdwM/iLK47QdbIoFOV9jKhptSgcjoR\nYuGjM1gUapzVCmPysESqpH+CkPeGo4RGZfNmTIl2AOfSh5eHnDiQAM9X5TQK\ny7tpqwdHYa02r5LxbH2vrjzU/f5QWzl4f6hZqvtRIm5o/7gBreWuS49eRFPJ\nWLhXN12daTidY6iD0GkLXHVxLxRLp/iZUqxrZw/73Kc3mMrGnAk/RCCER5xD\nnAWXsCe9+mVpoRZgeQYJuCTZWzeiDrbwsKAmIFJ5CUVM2WB7tYc9ApM3VImh\nbDTcuwIXmVr+S6IdNea/MX37eADXdcmDfnzPC7ZBJTkNCBMBQUujDPpyzYoe\n+tV/UX/tuTLvi2ay+TAHt04Sa0XAhlQkhcK0AeOTju1DnYA+0ZEaSDKo3yKk\nEbE3ur/FJ/t2lzplI+tthaiQ6GZkJR/qpoYWuUum8AS/jV8V0s9ZodWD4SZ8\n/d/U/TYAgORxZevLZYEgQLBvAnmUX529Y7MEx1M/i9WrxAPOK6vVtYdRH18h\n7O9+HSOxIBP90lOHBY1wVTFIrKx833d5VbYUfCmRUaoXILWd0aXvKuEOhUG/\n7BCd\r\n=ua/R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQCew4eMgbamMivRmTb7oZJzLX/yR+Q+xlL4IuW1fv/7RAIfKrvOp3nR2bRUPwESvll/Ii7W8fMDtf3RG4ZEPc0hUQ=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.10_1533907312750_0.43106452184101585"},"_hasShrinkwrap":false},"0.1.11":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.11","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.11","dist":{"shasum":"45e60621ccd8157c275407b9342e56c97dc1694a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.11.tgz","integrity":"sha512-IV+8EkstJ6bVgyn8VsKM3rY7vtd/R/KGpDMcdVU+9SySnb+2qZhzRJLK1vRHsAT9Scj6f8ovMePUVLZQMb2GDQ==","fileCount":53,"unpackedSize":263123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbvzRCRA9TVsSAnZWagAAT2sP/03szv/f9D8O8R7nM7ue\ntTfmEN5uDrcs0riodzBbDQbnNPYncTFrphqTGpayoSyqXTMZZuJANg+rUUv+\nURmy3oj+/WlQrUPpBgquUXdFL44FWryHaEDtGTy7dV5H29U8eVJv42P12LM2\nWCxCr+nJtjhvqxe1qRnXiKn7abvEYPBd+uv1X7CmZhDqJE5IT+rQ/O+C45vW\nGlL54HTLYOOOmJGCtVLDVYqFMTJmig5gvBd5Ygm4CvS7vG1rMFLkfpD+VYmQ\nzSoVbVVGDT5Is0yfCBGpbWr4BA1FJgWyMZXLx4UB5Kq34IlimLmwGgQagSWK\njKiMrTvW+kuOwbWxfA0fK0SRSrEiqfMc/keohXMdqCBQeVKi94R4wMrpuuEy\n6avWw7pEB3E40Pa5aXmEsQkKAAgdMWV3HzBaHPRoCwAqSW8j+LK2nChlUfcl\n2PXk1HTHWsYnEW4uK/xhkw/c/kdMrLtemg3gg/lHkX7etCypYf9NdYq7NPSX\nFPfIVEmn2CZC3TKJMN/WejUKIRTUiX4FGmtlrVtJIzwhHEpTt0y8nuovu3tu\n5AtrZNBeACFolHS3U7oltAxXjHOt9RNdvLKlRzjNvdwcFMHJn20fLLbXzIdL\n3UjFUEtRsfzk58LcSPMgHIHkoebRR4ykMwBt9KKza5mKMj5OVBRS4Q2UNlka\niQgN\r\n=aV+N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBVuvvTrVNyg+zWiJ4beMAQvlYzRcHZt5JGdPkkLMVNtAiEAy7d0oGvYfmJAh3Qpa/o1BW/1T3K/eYcYXMJKgMb0UrI="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.11_1534000336458_0.7780948790646529"},"_hasShrinkwrap":false},"0.1.12":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.12","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0"},"_id":"ethereum-waffle@0.1.12","dist":{"shasum":"24d6fd1abe8dcfb36fd2e0084477e06eea8df592","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.12.tgz","integrity":"sha512-/RqCBRAj863WpEedYDE2CwTTylcFuAPCiNtqsyjYR5W0bpD+2dZGxi+JtyXAZgmTRU3K7V1Q+tVsfu41vEJRyA==","fileCount":58,"unpackedSize":276118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbb+MiCRA9TVsSAnZWagAA4bMP/A9Tu4/cKETni0VDW8DN\nNVZ8g/CWJ7I2vSlmF8BdR6RnTc4EwlxdmqN0h0Lz4J5ntTANCZ1wuT1t3Miv\nCOZy5qrIMcr6cCTBM9oN7iZa+GuDUuQdH0YbEGdN7Dhk86XREO1An9Lg/ZTG\nA5r6pGf1hvbSQf02/foRAn6QqjPxwTOa/8aRC2uZTTtzVtrgHEbgqQYGxOQH\nFXqP/1W3U59oHU18EttRuYzBEaSR1VkXfY3FvVmXEvs/g4IUeyCJzIDM4tlH\n5YBjVnyF2yR+rOFt6Ni/SvJtYBuwFls724jRZIhZxDZQtsJfd7URHp9Xw9NZ\nK2tASt3RiqINAhkhbvK7FaXBEuc4IRQz6qzwfYkX7Dty1jRKwJEtdcBxlQ41\nCCUq151pj8jqpZB7sQyvN/7vxCF9lZ8EUnJwqKMtgVr1o+bgjjjDRni6oFlO\nb+fAXA5aqvCScfJQFIa+4vkcJX1CQRo/KbJVeCk+9Kv4Gp5ZdL/rKXrlR5Yw\n8PBKWKVFAfja++HVGJIhzZ1ryks6p7HunAC6lsK/4yzdUSMzofCuJ5cocd4j\nFztNTgtAoYe9TpIxbpQQTwOpTL1HMK/lgqwH0ZL3gLxfDUrdAtmpt8dQq58q\nnLzvquv98XTrWqqxzuTXl1SMcp1jUuRg+6SYirQo2olqIefmJ0cQ19SXPJKe\nu9Ab\r\n=XEs4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAMDTbDEtzUP5tcuTctMoRpXmUnpvbPrzBdGLp1vRJ90AiEA/ep7VXJACq7iWsoAM4jqcJtIgve+DXq6L4enjBUEsIA="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.12_1534059297616_0.7812273423941494"},"_hasShrinkwrap":false},"0.1.14":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.14","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.14","dist":{"shasum":"455079f0a18d5edf06bdf6777664326c7cc3c94e","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.14.tgz","integrity":"sha512-FpBpkBs51DFMqmCR8SSwNEirwWYLeY0xxQgAKa0wbhxWgCTqJv+bs+EzCW1NYGFOsZtWJZtsvkyz+c1wBNb4ZA==","fileCount":62,"unpackedSize":279615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbb/scCRA9TVsSAnZWagAAt98P/1e9549ucvDVS84aCact\nE9T+DNu+f0gxtSK4RC5ur8iUlfYOkfpDaImNnG9DjI77/OCo1Btp6UXVxH6u\naBSXSb0mrG0g/LFkEdCZYsY8Tmcmx2e1GHltMxXMjrsoBVfwGXwrmZnv1wB0\nXLwb89GkZxnvHnehNIFriijL3JX6WTrDx8A0dTd5VjY+lTEl5lnPTivCuJ3J\n/eqjn5S4tNB9NIijJ0vmBNEY1DjEiu423+l4ELTO7AzQR5H3BLQ2LVAvxln6\nc0mmOvd/vKP7kbFnmhIERtsVdObfIRRQxBG2NP5fqXeoHqsNzp64BIr6KT7A\n+H1TKQblI6nDCMLwcgjNmBYNf+lDagtysBe7viqpHVezMaNFUZpDSScGqqWr\nEHX/O3lT8VFGpXiUUJgBkHwEhUfB6sxgtfEu0hkgp5Ep44DaUMgrmfmNdeff\ngb1BaqzoWBdVLKv6SGgZPYqCmud9VXr4y6OYEp5duho/bjmVNVOTYeDjvNLk\nTbuBOLWhlRxTbXXgVyoJYRKEgdJUDrhTZAjxb/K5I6MsKUnIDbc6blZ6KRYm\nSqkDlvoWLuU95vslRmS0CsEaXmDHLMJWFbiJhpHprVTH163q/d/1ByzIvyXl\niTRdQbs+KXLnvFlK8pONlOjCvfdByUuyKp+nd8TuvPV+a3/ar0UfbP/GsBHt\nETsT\r\n=aPkd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/a+8YNoqtsdWNOWRLWtfAAux2DO4ZdjQ0uSwDVq8jBgIhAILB9Ios9nVIUAI1Hna+RVkq5yE6BqyChZ39PHwdzopk"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.14_1534065436505_0.15646270606811696"},"_hasShrinkwrap":false},"0.1.15":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.15","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.15","dist":{"shasum":"4c10159f933d456be47ba6b8ed174899a91af66c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.15.tgz","integrity":"sha512-oflsYfjoCn0iClBYbko7Ie1JFjxnevVhZX1XacXpUaZPm4n7ve82IUqMiGx8iG6D/oipMn7LTfuB7emX8vqPjg==","fileCount":76,"unpackedSize":430572,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcZL7CRA9TVsSAnZWagAA5xEQAIzyTnLyPD2rNrbaIaUN\n7t1CB/HuNINEhTCGDEe4Qp0mrEjrKv28ECWZ9a9iQVtTndmEm50vIiTdkCG8\n0EkOJqJ4oeWobmZ6Jt56AxvV//wxatvBH2wdgRzSWvyyIo89w0mXbxnb8PU4\nxkoGy0X9oqmkkbcKrvf1KIL9dXTn7nE4WPqpe09nlbTnxfJUsFL6JUWBY5g+\nR5I7c/isaZwVsOB7qvjzKcwn1OQr5xCwsc18Tj4RQ1E7q44dstA1bPbW3c0p\nI0tU4//g4MGUwrYPw/mh19K2lRvyCO/IIh61gZsVs+S/PTF1HixVfAvm6yI6\nGBd9IYgAWsXFpXjEGRT24qtwzkWvAxqEOtb1myPh+LQ6q5DYZHlTW5cda9s+\n3mOqKy2s+uP5FoVT8BTvL19tBrpxKECeDrZvQ5qIQAwbL676Gyz1R2T6w39J\nsfCGLaYhRhloPWc6UI9jBVDG7SuvMOpOr/axOKdK0Qvs85qw1KxmM2A/67VN\nmu+uDehYfMD+a21Gr7RSyGUFUKTe1QMjhWvNT1Nb9PHlL+R+kt1yY5X6dyPi\nVpm53lRx66p02J4D5xgESjx0YtmrVzgoNqeMlFcrhw2fTvu9ENSXXfXW46Iy\nfb74cx4ALfyKXQ4fIFxtH3yzZCTp18vtvGuH5MFYnoK0eW4eDLdLR+RlD5wI\nLOWL\r\n=ddza\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPVJYpcB1tH+NVyle/RgGIUhCNWK8jUAtIsI+qisuXegIhAPjaSr1eYpBAtbw3UIXqQYkHR1kDoVOr9T4DaifShoea"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.15_1534169851108_0.9214664931409116"},"_hasShrinkwrap":false},"0.1.16":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.16","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.16","dist":{"shasum":"94618c26433ac21c2f61b3fcfabede6d6a3500b5","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.16.tgz","integrity":"sha512-8nPXxq/T+VFsWVuxYHc7FXQS0FGcAsjfaUpbOq8NbZZDR5uCMZHL+h7TvjVxLLZjZsA7wfhIy33XDQ225xzH5Q==","fileCount":63,"unpackedSize":287341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdBNSCRA9TVsSAnZWagAAzuYP/RxgXl1beOM+8S2b9JKj\nenevIRt2Yt2VQmIPyfXwtOnuGWOTv7u5CicC5VkBFvWPZkyD/hgf4eSgpyDe\nNDCSZh4oU5eZQSy5rEZ95WBFDqsK9rq3Cu2UXVHnzb8a0Ad9TMGERxbqzXPu\nYjYIor8XtVgvm3JcBGMyJBeiec7I9ukVfqov/O5LVZvy/+LrKO6avkHgDItX\n+7omSXZbTPIavw70rlbcJMgfrNsyfkct2FDTA3AR8eGaW8g0i4rbB1ouSWle\n2Z/EUypeyTfb7Kv6rHbeznSeR3hEwFZ2WhTDzOoO3UoMLZgB7Me3a3YpQnXC\n7NdkD7w0yv0DjFdfwNetH33myizrNXSc55SkCMIs+6WA5P53g6nm2b5WDLYs\n3mvieE7/VIlSpZaJdgSam59XuLuKZZg1ZFFhcpMP14YoOgEJ/Xn5PehkoKai\n8+vpG9LpHgcwu3gPS7ME6sLCDxFDN7wY0WdfpW+PDlV+/x7cFsfy9znON9pd\nagdakLilzxZMbgBy5HEv5C+uueOcVrE1g7QLiLHtYAjjKQ0BR/TnugYLWfue\nJnrOSuece71nOfNmgu8Q1w33M6HF17Z2spg6QWjrWbXN5h4YqDlr7Lrigmpb\nET1pi08pfFdhDlHy3G9thKSO1vnMdCZ3/pzBAEPIRToTxsl7dV5UGMXBBl/z\nkiED\r\n=OcuJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNPs3wvrq+aXmu4K4+vxRBsL4y+bI6Ja+Vx2YVHKy1+AIhANlLMHlatIxz5JlrhdQ+3DFo7omEwM5sTed+J/CrNpCL"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.16_1534333778467_0.10693794990600636"},"_hasShrinkwrap":false},"0.1.17":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.17","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.17","dist":{"shasum":"b923810f457d05393bab7f96e10a69a5d91c2f5e","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.17.tgz","integrity":"sha512-AdbxRNc+kfDJ7JRVhtqyG2Hy+2MYoPft/LZErQfJ7CCnOvzJuZo8qyPY+HyZS66UCOtSHQr0zWePckl2USebsg==","fileCount":68,"unpackedSize":292224,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdEZ+CRA9TVsSAnZWagAAG5kP/R6ooiAY9zG+MfP9bZ5B\nlh8PWr443pDfFeAl+xL+060Z/A/YWcdny5oxsfvty6vPW3NTR1EI3ige2d+P\nlDiS6k/hdW8Ncq+Os5LdMeM3rez+CkUSmUCD0wQHbiTj6yZg0YUec1VRMWGa\nldCy3Qfl2fUrCQ5l5NXOQEG1KrZmpDm9WbOB0nCITB9hoMm8KtW3HWBF3vuk\nnRosABO1HKY3b/zbK2oOPWI9GW7CTIKNOyDCy9mFBOLTDGNQHsxGPPPl/Ane\ngKdX0DENmk/VZm+qi7DP6oSJ/qvqYG6Fl7LKd/I8X1yIsUHa79Xfnj/TEaE6\najRmabS7XO5lA0qv8kQs+4ob36WNPfgEczoPtWHCWnlQPTIPlmH1RfaAsbed\niK5/YK4vFmERghIByWxdjVqra7ydULTn685xEo2QBA1jL9VHHdc4PphQJIeG\n30b+UNrcAITQPSg/KPXI2a1y47C0KpKvwsTA9qJ+2giZdmWV9gCAZLTWr/MF\n0aNxnGlWmQ7rnzNmyTb+YTHe+v87nH4nWyOI8H9cF73XlKprIJu5aNjoHV5R\n04LfqeunZzbqueKQFD9ego5TERNq94AOWsCdAQ45XkEf/uu5hwZdZ+CqaKu3\n/bJk5wIb8GJa4h7HjuhsLTrkEyVmMrw3uxB6iUcPhCr3zpYG7qBi/B7BhJkE\n4OzN\r\n=GRq7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGHbn6E093rtfSdWh+FbbsTzDJdb1zME2u5D0jON7x+QIgPHysXuUzYcaTk2wnQthjR8EbvTH32LwBzJSqMOv4SXQ="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.17_1534346877977_0.20276228269387575"},"_hasShrinkwrap":false},"0.1.18":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.18","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.18","dist":{"shasum":"83be104eca486041fb09728df59105d12d671130","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.18.tgz","integrity":"sha512-ofxQ+gwOR7AIH5vcJ2QKPCsTa467LrWHTp9vbrUiNo4mcfCRZVM6Lo27WOeaDlj8deX6kAkpedQ6aoGg2FuW7w==","fileCount":68,"unpackedSize":292817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdE50CRA9TVsSAnZWagAA88sP+wSuLE047ffoDWZNBPFb\n9tF6B8RytxDHmXBEjzgKqIAIkcB45eAVerCRJknjNQiEk1g5LFZKv7kvQGVa\nFm+OgeJWa/8yn50RIE1hFBaoooaOpy6XpaDbL7x3pBoqr4Ezj4VLkmgS0wCF\nyc2Rnae3Ij/DXrjBrPOPSMhqMbEE4NMxk1Ez3pmdB9uq8oepDqX+SN+WaNZ9\nouZ/lu1Mz+KANVzw/NAI+xeJtxrdkjtq72TxzAufXRMi1pGc/QokRycAbJTb\nAX/aKa+Kl8k9dL7BmQJ1Bg5N5VjAq4UxzLsdxeY7h9wCRPsVYgCntlj/+1Wo\nGzlFuONqC+vEQaR8ypSt68Yy/WweAXoPzoifiTM/Ab8oR4jPyeqTwopkLMvI\nuUtEuRBgFUY9PI/vXqXp65ZLMhb8k72BsvzeF5NhfbTV7g5cAukpb4nB/CeQ\nCzu6L6M6PFbtHA3w6gLUS3NcrjjVeBa5EWf8eY2MA8aRqcMyR/h4ZwZ2WaSr\nJvOsPhYJn9v8yVpp3mFp1kB/evueK6qyAew7Pt7QlzBD1MrM5wMzXZiL30gZ\nXhIT1jJi/ytQRISaKLSuYE2VbOd9z6iu0Xl+0j6K+FHouAkbwg1zTn92KBLq\ntiCdXAwS3GgUySO/LoAf6E5UcjN69XZMp90QGQAePP/oW4xKk3EKmtAu2KW5\nPnNC\r\n=UtNY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4l8Vdu3HPzqjOmu7Ys78gPPOtRyJuJE9u+bJ/HfniKAIhAI7G6HKw2znlUmFRrOQCiyBPrtheUlUdowUbc8gOsP7Q"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.18_1534348916055_0.4278346877732073"},"_hasShrinkwrap":false},"0.1.19":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.19","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.19","dist":{"shasum":"093f46a76750d2a2acb121952ad0c269fa8a2b7d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.19.tgz","integrity":"sha512-1SICxMtRJStycwodeOWQ1uyk1yT0mMp12Vqcdr8KrvzNfk0TTxLhEEc93qSWnxv0+cfms96fBX4U/m4ve4Qm8Q==","fileCount":68,"unpackedSize":292923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbeJdGCRA9TVsSAnZWagAAoZkP/1SS1WvF3cC3cvnFp3DF\nrckXKtmSl2IbotVJewvNTenZezGwWS13y2czz2yK262glEwHYeEJk3lWdwnn\nVgLgOY35MUMX0YB/RztI4u4eMq3YGks/wt4M1EGUzi2NetpZj5kwK+76Mdv3\nY/pq36P/O+fi6z7XA987eDha83riVsbohXgzjXujEGuxyc7bw5fIBB4/8rpB\nPVTBKNRIYHWwMBJCxiN9lATpS4niVhsEPfPF9EnHoIhu7h2vONjhgWD+S261\nZHZ9D6vkts+nh1j1tZjLbd7Zt2s4gOfau/RYJk4gS6vpVMbE3HvKZE7vwtpt\nsiVBa1WTj8ZA4lOXlrmABB2VjtnvEVdpADX+/s8ijw2n8H3AGEsZAShss9+d\nkiCPFXwStDbgulVZ6aozyMsdMqQsWbS4t+Moxwj1cQtwatvk1qmKYA1wI6t3\nz7ztOsK9cQKmdMlS+Wr4v1dIZ4s+vAbftCDdDsagsMHILMjgbudeqv1K5L9i\nR2rb/oDy/VA8ezqHPnmwPGNMYWYurNCAfoeBz617QmZFYj8pLkWfmoTO1Uo3\n3DHSqcg5EjN2xy/pGuuR/JDiHH85PuHDS9o8Gfa4qE1nHcGVlwtPXc9uE0m5\nrPTgC7YTptv0t/ujSFbAY7u+IBpo8I3QC/K2nSlt1tsHRxKwPuzoSUh97V/b\nm7Ei\r\n=VAIE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXGvuxtdrbBdJut5GbqvtfeyCGAjc+iJ+adK87YlldIQIhAOD6qhW6IHXIEHPy+PFF8vRa9m4tu7n9aDtMVVR9KinJ"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.19_1534629702102_0.9052867137318814"},"_hasShrinkwrap":false},"0.1.20":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.20","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.20","dist":{"shasum":"d5518c09e507c7970f63a6efd897b6c448c167d8","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.20.tgz","integrity":"sha512-Im2Px6LYmhMS6EFqM1D63yt7Hiv2LGnavIy6RNmRkl8m6UoXsSIHMq8+UKIkO7zXa1idLlEezScLVhkQepOntg==","fileCount":69,"unpackedSize":299207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbebRtCRA9TVsSAnZWagAAfbUQAJ2KYQ1Hf52z3/DKsmZZ\ngKh7Iy1K2mNlBkcEP6hKi6OulPqtoWag5gaLfNiUz1JBEegWUWa/E3gf28Qi\n13uzTNMs1THJirTrHmJzS8tBlydQjN7/qFb97r0FLO7IBwbkEdekxDNkfk2A\nm0YFLHYfRLyFMqfkrHtsNP0uucrSD0gMCfnRQQOEoUqM/epT46O7uRc8d3Kd\nfgmgG7Gkzj8kYXYnUav0Y6jM8zut9L6jSJ5W/vmVTCmOAvcrBfZO9rGe/pAI\n+SfofmDk2sF7TQxdJIT/2KRBEEk/w63/0r32c2Y/0MIkf8rmLrcQTgY26WcS\nltZxH/qe97h4Z8jG15NvmLMXXfEvbadGoceGtnFpPlj26//VeCSF5+53K/1W\nLXyJ3buOud+73gflCkss1CMCGsWgdt9Hlb84LnqMOrqpgrnPvw/SRRqA+cV3\nLa5gISUahWaklPOSbzSFN9kYEG//hPolb8AcU/ZAauO1gi/wIcG8Nv3zegxu\nXGZGen1M5u2dt47LWp+CA5gkCpWZ6gZBv89tg9Bm5iaDOBOA6pPXSHdZcd7d\n9O7AwWhlkZCrP48ACtz0hhXQd/kJ8i1NVoe57mIyDZHMKZrFVGxMqwj2VWMs\n/5FVp0EVUPni0OT0Hk9HkbxgrOPNdLA+PZKsDPwt/HILy/QOY2Z+NIw6FLGz\nP0mw\r\n=d7GS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCX5DKCCJM6v4xcqFn1OIDRDXLLzE7ApfoR5YuUjlfHIQIhAOJPlVTtuWcVtDQRLnXkRDj497LG3kJGrME6OODZ3Xlg"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.20_1534702700954_0.0340184483427286"},"_hasShrinkwrap":false},"0.1.21":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.21","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1","solium":"^1.1.8"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.21","dist":{"shasum":"c7c6682d5d5197b9b53eda3479c5e46b274eddf3","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.21.tgz","integrity":"sha512-p33tWSSUANpelIsAHlO3/xe6gGJSixFr1LN+1ebRdLZZNaphE2hr1RiECqAMXskx1atFv4rMk1UkEJPxHlqOaw==","fileCount":71,"unpackedSize":299995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfrR+CRA9TVsSAnZWagAANJsP/AwQD77sBO4eLtPzm9q6\n8qYLkjl+cG+0FZtJA2T1AX8nFYhgibNg8rLhv5mke6ViGtHPllY5Fo1PAkpS\nCS1Y66xlH3GD+yyErvA65/Quhu7W1O2r7jv4d85o9WiHlwZv2F2Baxp9HR+p\nunpxMacAZRz5WBojPddOPRVQMbQSwKirxTNVEooEbZ0DyJIzbrysFibhrajq\nIUUlOFrkaPsiXW+jdI4DhoROlk2aJ1zlfgV84LxBbvKqpzNbFv93vZKPHOiY\np2k7UoG5LKlrhybK2nEigTbnO7+MAKzjdt9dXHbeyDTKDAzMN5xfaoBRIx/j\nZQEdbLSw1M9GSwWzVjRjV36YF0uxG3WYgIln3WMIjkrDT/piXXuYU9r8SZSb\nN7F3brLYxEwPzNe2s/jHW98LuJfQollHNQ6Qth86U4aBPXgT60RbnG/0/NAw\n4XHHQI8icbD9U17E+2V7dqvVLMOQC/SwSdkWMdp4V2GtvjFWXPQVpx4GGZP8\n5avoKRVe0L5LpsNFDtYgUkHAh1dgM9Gc5QZYdQPe1hwOUgiWj9lTjnWDvGbf\nEpoBNAlOAWIpIJRTepOlrn2K8dCiTUux6Kj5PCkng4LJR/7JM0z0gp3YTRB3\nObgHLZQalHP48xYrxonD3XUa87ukSDrbk2ZzObJtzAH78T5drLr1VnY1O3Lx\nzKDE\r\n=SXZx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAlHSVQl6zZ692MdtwzjtNYN0g9MsyMD+vco1dO7IaZgAiEAtESg8J3Gid1gXEEnYh2k6H+QY1oynpa27koQVRfTJlE="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.21_1535030397526_0.8493042549069574"},"_hasShrinkwrap":false},"0.1.23":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.23","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:contracts":"babel-node script/buildMockContracts","build:js":"babel lib --out-dir dist","build":"yarn build:contracts && yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.23","dist":{"shasum":"3cfa440d6ea8e39fec4b8e43ad5169586f6e7bf8","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.23.tgz","integrity":"sha512-QdbDMrNA6rBt/3VDDaeIP3vKPul/2xyJ5KLTtPDp4ldz1Hqm+jfIdeXd7s/TUZBQTd1hWCt+EIxZyNXOQlO/Nw==","fileCount":84,"unpackedSize":398332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbglFJCRA9TVsSAnZWagAAlyQQAIIlqHihGSMv9JDMoj/8\n6rkv4u1Vf69WA/ie/b6FTEVsk5cBhBrdWvgkS3Y5s/j0jQR1Ghoa3ZDM8P4K\nqR9BPIxlnZXY2gZaTiZCiVi+5xKQjHszuffhHzIB5KQdErVIjlVYYKKjfNAV\nh/Mxbdy6LSslFUvas8bu5GvET8URwQK7ouYbds8TfwewtG2Kr0Oy6va65C0I\nxZa2/3gTkYSbyv5sf1r4cyvncjgkC8Psi5eG1feqWxhONBaL+Hd3cy5PrZbM\nUecdXRjRn39z5LucBSktI71gMP9XjGDiiBGxZMWR9/sYsUwuNILBKf5HzU4R\nmGLENBQmEvP4kaBoHSXdGG4Yrd9R38NIcjw+fUlXskvRsL7XvE3zZ8zBeT5/\n49VaQUcINMa0TIAz5v7PVWt8Phi36hBaRmEX1mApvnBY46pC8h7Pz9L9hNNP\n9RxYVNqfSnFWOZB+qYQapkgTdNFS8nqm77uJsuOnUjMe1MPgyPXdMLD+hHZe\nv9Ny+xJIO1Vktjm0hGUpgweO1sBrmjMwXvO9kbPaEzw1bwrCHa9Nnj76bzo9\n2BO1wZwCYAyy+Q/cGUbJsYzjfbo/Fvyk2A7i7KgbIHfKzN6m4BjALvKZ+y6H\nzWUbMw7JY+chvhnVO6RN+pno8CN7+qFZv63R0cgI3rEDjBznrne5hVcUrb6V\n/3lI\r\n=fuFj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxXTkXmWhJhzrcEFrMbA11x+c2J1L3UoykjieYSO4ydwIgfZvF1HGHREcaAXRwybzJribJFiHKGXdpCF8edXNGIWM="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.23_1535267144594_0.10159300546552896"},"_hasShrinkwrap":false},"0.1.24":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.1.24","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:contracts":"babel-node script/buildMockContracts","build:js":"babel lib --out-dir dist","build":"yarn build:contracts && yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.26","solc-js":"^0.4.20-browser.1"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.1.24","dist":{"shasum":"03d2b3fdbffc7ce954459cc1df98f0b25fc92c67","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.1.24.tgz","integrity":"sha512-kBZDBshH6eI4fZ4UwgbtPi1c0mYoRW7Lky306NXz7st3WcS3Y98st38P6WQc3O4wp465jQ9J7BfJAxTp8hd7ag==","fileCount":84,"unpackedSize":398396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgqYDCRA9TVsSAnZWagAAStgP/i1mf1ePxyzNIew3Aljw\nzD2g1idWUU/YN02cxMooPCRUxCiTzAZRL7lFgq9E6TGalK0kCmxYadsZHcg1\nRvoKBMxqVJlNSH0HFvOMQST7JKW6DL9u7fVv8+DZq4BWwyG8TqJozmel53e4\nJnOqpVRBxYVE61xOrzRlRd8a7WfBTtkxR9DZ0vrdGZr+duzgP9Sr/IuynkJv\nYLsjxZt1p2HQFmwSNs/s6jkVF1LrQSrFjRrfP+Z265O35AVd+zUJ9EMbArbk\n1R/XymRdJYifmadQ+rndKaPFM77q6akKgFi7QQDRynU7wdDlUzLxWxfj5tNs\naTXqW2yMNGMMFSSwRZJkhre30+FUxBcjlMILi0166mDbnBGigXxOLwjSZs/f\nJMzqp89MNWCP9wZwBV8qk60EhLfUWhJDFX5xBLGxB1/UJO/yMBiQIsNdoXUf\nhhnID8UL7Xoe3tRHsC6lfjCVUZ2Hbm08Yuq0JId7RBSvfHiHMpr2LG7EAVFe\nL62KbnVykPzzvjMqbzPG2UqEFHxs85yDycuVozaduoIzNvv75n1++3V9+HAd\n+FUjRHDdsFkaYWyZEOM3HNxbGtI5nUBVndSGOaqR1ic6UbKNRbQNWVz9mnAg\nk6l20Vv1P/rOv//nEHp3ql4cESFIuwja/HFfqUugrEDsJkiuV09IJGKYwoqe\nSB6t\r\n=Fbez\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBo1Drdq/Lf7YtG8qgDo4DSInUgUkWstUn1xmf6T2NzDAiEAuuF9SMexovkGnpe4O6VZyxuNhUbkH/QqDXCp+QzYAWQ="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.1.24_1535288834642_0.12255117175003738"},"_hasShrinkwrap":false},"0.2.0":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.2.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:contracts":"babel-node script/buildMockContracts","build:js":"babel lib --out-dir dist","build":"yarn build:contracts && yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.27","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"_id":"ethereum-waffle@0.2.0","dist":{"shasum":"321f14a21a46c7ed9d02c68cfa68a2d2afc844a6","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.2.0.tgz","integrity":"sha512-jH6qUbyNUNDaFRtjoOW8jPhSwC/Qf67mv8u8FCLshTy+Zt5EUMwOWWqPon4pXGsbOCZaRr+sNJPHTHuOQkH2AA==","fileCount":84,"unpackedSize":402368,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbinioCRA9TVsSAnZWagAAuOEQAIG/YbuOZsINzQH1egoe\nW6g59zI4WAHZ6ja048Zsr0j14Sebx+UyJg8yb/qrq1fxcdgIg0gCZVhmNNew\n3tqoHdkL4Q3N7SzBb+I44s90ZTdkSNPxn9sylZ1ZFOLZHXiAUBDs1JUvMWDR\nOKzGdO/SjIpZF/fNDBTBwPT3oKk0KsdOCbKN1fJTvSGJwEnQaixFbv4+SvhA\nsItSYo3Fx59OS/m237JcP2DjEmVyG3pFGVk33m5g9SVM+yT5ChieQsT1oVCw\nHiOcL2JsyhZQBNZ+UA5yG2nfgdZXuxEJ3JtYeKsmBWVtErJMz4fKL7iLYZUS\n8jWRpbHgj0crETF+JXhA2kxMUrPEf/d0XftInRw3bQzJIQS6tVK27mQlweSJ\nEHeX+FNeI0YwbpHeeVloUZhm15rjm8TwUaPp8LOzKNXXbuvJk72e8TW1vMgV\nykqnDvyYhb784YzndE/f63/NG9aycJMBPnoLxduDsyFU0Im/dL1B1hqL8Z+7\nMc6U4SsknXBeAtN2YsMvrZNNnUDIdaL40ZMwzjinBhZWuylZ6tlqAG8SPMQu\nNlBPtiX8VCDWfx2ApEmmYaFr+bmLyxciDE5kbaaxC5uG17V274Jdh1dj0wp1\nSFhDovB27EiOIiIZnoLSmRyAGa00QCAtJibGgj04SKtL1zzz+SG1wp9uxPoI\nujPt\r\n=xkFL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDY9ILqXuXZDtOquCP4VBntIQlaEpmOFcjxZ8JGv1r5igIgTNuh6N+MUT5L9iPkgpH6lUvgbHv+EGxkH0MMpXgf2XU="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.2.0_1535801511143_0.266842642598796"},"_hasShrinkwrap":false},"0.2.2":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.2.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.27","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"52a883a6ca8dd8315dc3aef94f8017d2cc4eafaa","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@0.2.2","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-s3NiC/hI/s0Wk5tUV76EtvkKROoXbYkXIrQLpbTZVbIW8Mk6YUkV9qLgUYFrQMkEMouKa24p/SsU/5IWOdEIiQ==","shasum":"116edc23b272b4095e3442b4d0fc0c17aeee1c41","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.2.2.tgz","fileCount":53,"unpackedSize":515804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbo/ykCRA9TVsSAnZWagAA/XcP/3q39STLqh87V895O75P\nK7v0S8KaW585dvmS1ukwqmnP74NpzYZKwPcoknwZkchB5PaIRx77CEUzj7VJ\nJ0gDuZPwRU10km8adbTKIZAKIyHVwDR4PZ6bohMAmCbAONNbsof5RDpeSehD\n0B4YxJi05l5NgSNTp4tSq+dtvxjQhlrT59Qg/+sG7Ba1m2CsHzbO6aQjRZUP\nKn69HVDsHZUQT2adjD8emqNQZN0pMzFSFNDtnzEodkn2/2t17TJxMNRH4/T+\n52NmbNlLaeQpD0DYX5zDG+xoVbjfM1y45LZEB8m83WsFxv7lde1u+n2q3WGj\nKYfr/Q2IVUG26pEbGTo/s9CUElP2r4iH+gyXIOboDsKEI+iRqGFNcD2x3gEG\nGY3f1rjHl87VHtCo40HcBbHoTzy38ltxoGVTUOYCcU+QRL2zBfpleIn6tZ+L\nvUEBmjXfqhm66Kshiqc6n0LaP5M87SjccDw3yB/TMkgcTaKhrTDng1MMD7Gl\nkFj0Of8gmjYdK4H+j2ssnSXlOyxHIAbGfDWSnwiXtIMovmVomPLCg8SxIPO3\n9tIIL/RN/3+bhhQE89BITi2YcbPqkguEMAQs3+Nm7Dv8QRPESuuanMD5jADa\nWnkhyw4LmQ0kaiUK2UtBKirpoWqCvuYQHLfHoL2i4vcMuDIBIuKeky2wonkm\nUwNJ\r\n=3Lsk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAoHvFFnV4PXfzxQN4WgSNIbLCDChpLqNACJmFXBsAtEAiEA3VhlcZ5vZzeKxpBd0rg78v5odJ55IVQ8UOH6YYoT9aw="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.2.2_1537473699438_0.37297470710596037"},"_hasShrinkwrap":false},"0.2.3":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"0.2.3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^3.0.27","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"28051b7a8319d97e8ec71493952c9b45b2ebb5f8","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@0.2.3","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-9tR7V+1MmciSIG/YzkKtGMtp21e1SnEusz8G8wmok6APzUvlchVu/RqY8uOcyF7dw2Gl0clevTb4MKxBK1ILjw==","shasum":"65b1fbfeb73e20963aad74c39d52b54097f784e7","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-0.2.3.tgz","fileCount":47,"unpackedSize":295681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpAU3CRA9TVsSAnZWagAAvOYP/jrVl0GW/Zwnb9ucAUXB\nIFcNg2v7ommJt+SxEHJC9qNQLPkGFgWo7z8cRFF0NR9WdhKWKamWcofdTTTG\nPeIN9URfRRknxP5xaOZEuEY0EAbHVvetW0tfZCCtiJ88wPGf0Q9T/VfcXbrs\nmUJPK3IAthayzgouKyXzFxKmr5kzGIzxG8Z2ao07oH9YHjtmMyjz8AHi/c4p\nS6gGuEqhZm0NA6xdz8s80LSSBxSjaMc80aU2g35rwioPR+9PZmj3B8mCbiVD\nO7dAF61fdWBpBNvcyApO+y4dPukcHfWP7K4STyXEfkHbgLUyYzHJGaKuT7Yj\nmPpZ5mMN+a7itHzP+5V6sLyDfVKOQCsrx6iYaov3BmYgUWOYNztzqCyf6J3D\nsaTuZMLfBLCMWkv0FUzZQBwH/PwBmy/vn7fV5vafe6qYiIzovQAYtrOBb0oa\n2f/e33JKVhHea4hEcXZ7bV/bk2wt0IkBarpKJvp574tdvs7XMLKE5BWhlCbG\nZMX0Z9hWtXQsCMMYCp2pzqSCdaZFeQ2TaySyY1NTsZ/W9Ri3kWBqbRCDkFR6\n2VrQAh89xQ2bgTBmFs+Pso2WfwMqVBI+pSxlGgDve7/+fXjsk9yI570DdqXq\nBkPHMTA9jEQRH9q5VZFcPBZ2hAmdJsrXLhlSx1bosB+Vd+4CENMzDcLR2Eud\ncrvI\r\n=2zNt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGj/NJtn717P5rK3wvQHdlszFDj65DwWLiI2frtElcOQIgFzIF7MuBuEO8CxevnK0wwJIegetxr0sF6Rm6K2UB5KM="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_0.2.3_1537475894750_0.9157528690548145"},"_hasShrinkwrap":false},"1.0.0":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"1.0.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"51c78ad976688fed4f0596737dc3a2098aa9b947","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.0.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-QO7bk5roiyBOVi3Zv5vWn+b/xwfynmg6Locvl3kQrhtuppEdagMvpqkdMDFW/3hdA0YC/lIyhMB7b1Ey3G+ueQ==","shasum":"04e43aed07a8c1273c1d95b4bb390087cd040513","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.0.0.tgz","fileCount":54,"unpackedSize":542250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb1bgICRA9TVsSAnZWagAA89cP/ia7umfxlETnFjNEKQ5K\ndJwLb9+PCOIKiY5ORu+AeK2GpetXcNqfCPQCAPrRHHotWdBeKgybXoUx4qVo\nP03z4HmA/cYqdyDducmXoKSNvPU1+EmRy9YxfcpE/nTK7kZyprBBsnoD463Y\n78ae4mdjiFQPsPucp9EuHv60sQzvhc8V3kbfGAJ/uuEEiRK6N4XyRymTcgkp\nwf2cElxMVk4JhcADZY6N40jet63pZrQZ5BBNk7W5BmSWWTjoIAtLGrBA8Gpv\ndWi9EXzhhLkvv3Fu3mXdj7fwricXgdMF7eq9E00pv7RmJ32x45FiICyCPfVC\nJ/diJgPmRYuJgD7TKmObkHt9j53yCw+CWBR4vsjQoDuCQb5SpW2IK+IeHiM6\nsHdQSJdvUW5jcy2qe8P8mQaEx+lM8plkKP2zwyvSNYueFLoAzQfni5D6q/0V\nt/eOsqQbaLQ2e5upmDcaZ9A+vna5dn+BFU7/b+UZsdqWQP4TXJHOtkDNVjar\nBvwEkSqYUHHlGaTw4iWvLWNcLUFZC1grWHjVfooxpfW9baaMUiAknCrAQ3TI\ncveB62k94GrOaFRh7AtxIWiMbU9i5RUo2ypNBj4+WUSuqBbD/QtCmqNVovIt\nmagS0U/JF0F9wC4/1dkfq4+zNjDZoToXE2IbReWpYY95NR4OlKXxb+1fCgmf\nBoS0\r\n=6rRg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAd4POd5/JaJsWQBGGhgxYCygt6IqkRsOmJMfNSaYcu4AiA4AgiUnfrFsO2zG+Cs80Yjqy3z1/cKbGqdWi+tDHIveA=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.0.0_1540732936163_0.24614491708238773"},"_hasShrinkwrap":false},"1.0.1":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"1.0.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"^2.1.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"e9205986cc3ee01754e9227462ddb6919c8cdbc1","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.0.1","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-kJtRL/okLx7pWesE+wlSrzhSsCKanSNfPBu4w1FT4epbJt0RBIKJ6aPmi8uXHuOlZx0YYRKqO5jx7aCKTkROLg==","shasum":"440bac69fd1f6a729961181c551409b1a6437abc","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.0.1.tgz","fileCount":54,"unpackedSize":541174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8ovDCRA9TVsSAnZWagAAFU0P/iNa6pc79LrnBX3560yA\nnISYOun6aRdY6pHZ79tjZ83zLsKFA7KZFTZiKOHOTuVaZftY0wea4k6y+Yla\ndU6g3JRsSE4ZDauU7HqsWXUdBzoH5B18pWqYZVn57fCRO6lbUKvktITTCZMC\nHPRHQwupLK8g1CGImlw5f04kpx9UG814ur2bqdha0l6yo3XtmQfvOfvt4ihS\nEAz2zeEksJmNNKDonWs+OALnogma2DriZXHnS0llQqOB6yMXzGl/XcLJmwrf\nSizvUMARNWhT5X8CdqNboM6Tkz26vIyiDOM6CfWBvpTVmqN4Lf89xr4RRcUr\nsKGwf5QDLO+2cMiIUGSpH8Kdi1A46cNK1BBTz4f7CLZKZbeMNT3QHziFsFbU\nmD82mbI+V2K9iegmlkkERidBkI0PfI5qKnDZP5zaHew1rZLmk8PAMm+Ihxwo\n491q2bUA4Ekbwe6KGHoCBHcTzWFfYNWiq8vubT3f5YYRPH3lxnp2yPOordp2\nL2Nxbp+8FetAbvgMnughEIdVhcoUEHZaVb9JpFQNAY7G5lk2Lx59VgDduck3\nai0dxVCkfbz9Tp1UMyOykRIfzIUGkz+jwdkIY1SCV91VsrcFKXF6pcSBygwF\n6Yy4JThIRTn6k1ak9qMD/8dxS7LjpTKOwD4fb7CqQI7Zu6V7K1MT6OdkZJ0G\nDFWm\r\n=sP7y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlGT0ffQBLykG5PvKcdOrSVY9aA9RLBK7vxOg5RQrw2gIgLmYOGpm87FN2DEdooqhaQ3Kz5BNrC3zqWl6Eq3jIscI="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.0.1_1542622147073_0.6199253562182958"},"_hasShrinkwrap":false},"1.0.2":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"1.0.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"2.2.1","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"e9205986cc3ee01754e9227462ddb6919c8cdbc1","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.0.2","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-Q5iqbHL6zzue3GnsCtC963aW6MBwsZiqWznPK5ZIFid6+hZdQdURZOHwDCEsV/wjtvvUJckDe5et+0KRChuTiw==","shasum":"eeb51b69edad1f54b6b5934e5603d8deefed0121","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.0.2.tgz","fileCount":54,"unpackedSize":541176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/XfmCRA9TVsSAnZWagAAbEIP/2tOXZA3R9GCR3U0KiCG\nSbPwnvmJ0OldKNgBxqj/YY4FANrsEfp5J8yNTXJHc3IZxdzy0jLW5/3yh0fp\n9PqpazJeOadT7DG/zJke6cTXJnh8uLI5FGlgZ6rHqYLCQRcXc/oEohdEpc0+\nWZDBhWG7KNNsal0UbA9ZFv/FXp6iDQvU7Dm6VnREwAUYTnqedXTtHzN1cNcs\nnuPJ8DjQTn3sq5FnBWd4dv+2kPvvK7hPnLp0FJ53Oy/jPuQbM6YVrzmhbGBY\nRhbL6cjnBeQQCXaCh5ACE/CPaKJ6TQ4UqbkUFbsQHot3ndMjBaUt6VpeYAkz\n0t2WiBgAbs2KKpxBcUshzRzXsz5uDcoTBQBCuqqlfMGo8zpx8QuI2R8TvyJB\namxaTiNgUFCFBqC+GPx1/HbWvvvgmC8kF0s79LH+KuFRWFpdJGutnXueZGMP\nL9Vs8LhOPMMjwBl6JpqqWd6Hwrq/jgVpwuLpu828m9XULk+bF6ECbRLiU040\nWN6zt/XVhAOGiGYsBfQnDBdo0VcyzLE2x5JPlm8HE53TB8X8aZd3J89kxBr4\nVqbM1gkGfuxdRzAvLVNCBMwi77NwopDyQji0D4DnjTpV+iVzwKuzcCFxXXMu\nnqO2AZ9Z4V9CFuBTQQ7Y1acjVwIClRhNmvto2Qpl38zy8hbLPIGj7Aa6R6Sf\nD5y9\r\n=vLcV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf3qSIyT9YY+HAv8bF98UTB5x02Cuzvg8h4n7hy1myXQIgIfuVNx6GrVV6gCS83Op/nDyzFbOrmc/u1kcp6Eo3LIM="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.0.2_1543337957346_0.11964951798850354"},"_hasShrinkwrap":false},"1.0.3":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"1.0.3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","ganache-core":"2.2.1","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"e9205986cc3ee01754e9227462ddb6919c8cdbc1","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.0.3","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-x9T2nSDM7S8EiYVMezE5FNILMXyxesVZqxuKaXECUtXayfmkSQZ3HOD8S6ZrryAsgDXgPO4Ft9uIshCda1/ATw==","shasum":"6234d66084e74aba55448e931aa5017d8bedf1ba","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.0.3.tgz","fileCount":54,"unpackedSize":541176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/XiOCRA9TVsSAnZWagAAchwP/2c/AylGxDM0kMsUUSSz\nAU0+3IgzD2fdgdPlGd2eJ8dP9nK4Yb5vB/TPqyEfiICzrNSfzHM/GvDIuvfO\nY7eQPzXzR3IEdY4eSJ+JdZaz4Jp/cGY+MzFTanAdfzYsUA9jLXV9euJSdriD\nE0FHAhc3oLKUtDQihHGQcQ6osfdeqw1ryiIjEAw4/Vg2bIz9xzdIWXYJ96aQ\nXGn5fUX9ccBZjJATXQBVtIL0jRI0gV8prZz2MtPfqSrJXtqVthccVW9/eRXs\njxvG8Ldr5FAcguu0GZrrzWCGa6HAoTmAhgqep7eUCsvzlRmYvW8CEJqkDOHc\n9edQI4JMSol3+oFDoEsfNJrn07sdhH7uJDnVbsZg5NB0fA2lDo+KLFAktb5i\nlxzrpKdqn2ROhiw3YOP7lN5vdTDZ7Okf02k+9041sUksRIDAvntgQys/rT7j\n7y67tcz003osL+9tOU/ykHNxIaCWvfiFM2MKX0gTtXPtK+ELT9TIFTiMEss5\n/Qy+n4XidnqFycNIsuKFQDGr5JzZlsNoTHRZcLCiKdxSHVlrEfOlm/+Rch0l\noN0GMdm8PBtvqvQBfompe40DFj/bsJyAy40kCmEX4MwgRGhr35yQqC0pM+zY\nCCRafuXc9fMIAsYT3oQKkYNF48CpqwMg/MXk5MzofO2LcVD3dqg8QWL7BtNb\noKjy\r\n=JGZB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOWLC/PdyNuBbf2rzQiSrBP1G+soPC2G0kf483pPRYVgIhAImTLLhdEWbq4ABMs4RRJULrl+ghF2WupTFH55J0V/ko"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.0.3_1543338125595_0.8117959284083411"},"_hasShrinkwrap":false},"1.0.4":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"1.0.4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"e9205986cc3ee01754e9227462ddb6919c8cdbc1","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.0.4","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-9kgTZschFa729ttAPkbHZrLlDVtTNpfk6Zx+TLgzVaTbdtlKLv61tpwdO4Vnng5CpR8QJ72Vnmh42ngR1CMOsw==","shasum":"9c43f958f6a695797b5690539ae2e168763dcfbc","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.0.4.tgz","fileCount":54,"unpackedSize":541176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/XpmCRA9TVsSAnZWagAA6DkQAIsofHN9O7mheXuSsE9N\nM4sl4tLR7sXppUl7yhIHq2hDnUuQ70QwgrYl+muEsWO9/IzJQhw/anCGrVa5\nmcDyt9nJYQMHQatqYEJJlYeiRkDwy2ZYRuQ06mf4iLcNdy6uEWgnqGAlLo7V\n9DjBvrDomommj9d4yy0aq0WW71k8wbIRRRJobxgy3oyYj403SbD3eLq6vzv5\njqQtAbaC68n9FDfPoReqyk5dkdudxo/HmPlTD+VyqFShXKjSv4qpvVngSiUY\nQYIzr0NuDPqnkCRRtdicZRfwSgC2p93J63lX/ZLZ2vGVT+epzfQip26uD89c\nfraJ6E3FAGDXojc9Mr+hgMWbK0vh9+al/T8erAC3i5BbtMFtJz4lmY7giYgf\nQEghaH6xliCfeS2aX8x3WQBfbH8mhRj8UMYhAWo+3ExYUoQRqs+f+pt5q87T\nDnhSJOUZvZglXb5ilCEvYyzpAaCnPjZa0a+xxO6/9B7mlWFbNc0YZ3GUjQiz\n/V+WahUEoZf3YqgwWX8dQRcal0JG5w0baI/tXmrJyqVUk4Fpk94ytouNYKhE\nD5v3qJqHNEEQxUcrSBtTC4jktIynv+MLA4tyueQqYb9RL/AiHB4rj94gOR3E\nMXIrSXhsVBxcvcOoL9XyBKkdw8XzPj6RQPPxfHRyBMSrxvkb06b6/jSF31mi\nXsMX\r\n=E8kQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID0f0JqccNAWnvx/5KFdbAMYzdwGTss4iL6wnYUPs02AAiEAq9P0B+YwB4eh5xKSJPJFeA59Vb9V6cODhyXhCI+BwE4="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.0.4_1543338598265_0.8294414220268105"},"_hasShrinkwrap":false},"1.1.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"1.1.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"21395b57ac814abdd549959fedee18cbb023e5fd","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.1.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-GvGxBeGFa7vfnaoHMC0sA/nhKRfTIpWhDjuUBHcirwT2AZyILnu4y5A/KEfLTHzmW7/ufQ4LDkqwUhRE7o4rpQ==","shasum":"4d83ff4034af2b7ee59849f1ae255474153bc593","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.1.0.tgz","fileCount":67,"unpackedSize":562485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCTENCRA9TVsSAnZWagAAKI0P/RqYHjXcAbrdBp3dW5px\n8e1yNa4OUVpa0i+T9d70mfEHwp3Qd4OSWtRLcwzMwThX7Gv/PAtvkVS3aUx2\nuk5vugtHcAyJxBiA6CKgGYNDQK3raRvl+2Ys6/FCy4es4mziW9lrSSJ65fcT\nNeDrmYrC5y0qBjrsgMDPo8QrwVecy9H3yJtS6PZ9wB5NVGbcX7TpMxHv06cj\n2pdYQepYZVuHW6498dOe6sx/bZbCJHuknhE/nNJdVvoPIuVKwqXQoXuj3MLW\nkngbXeQnnhTOLZ1mypGXPBWAlGGaef1w8qw9eFAmn39J3l7xBkwf6KVIfm4n\nOeH05YB9movcTbro4mLEhUsXtw+QP3/cMs4NhR8miXJVkd1sDpMbb76g89fh\n4rX7KqnEDQYuSKUMf5hMGIOdurGu+A2fpESt3V88R3UR1Q6fKEuQH3yy7UKx\nrpJcMTC99DBDyoFDImLyAaA2kHl1HUGdzbtPcWIvCgZwjg319odHeNXcsmrW\nuZWZp3ke5kH1OrE2dYLvcbIu1WW0ee8UOgFw5Aj3s5cBMZew66cjbV+/z7gv\nTwxTOYZ6TLQZw1nz5w6yqdEXAP6Y0LXXmC3JcUomasarsRGNFtQQB0EWsKvI\na3ilokjrETGAuCEx5b668tdlnY+u6hS4IgGSO1wt362aPUgnn4V895akfYm4\nRFJ8\r\n=+1j+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIjyzvhLHmO2HAT2z0o6lV3IM/y4oWhxthoV46mTid3wIgGEPQfqLiHWyEjVbIyCTT98hhChSn0orOxRznsvKNxqw="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.1.0_1544106252884_0.03488361897259962"},"_hasShrinkwrap":false},"1.1.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"1.1.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"9d6674dfd942532308806d4045fe7d99c3133bd5","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.1.1","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-O47sR2E2wHF+qdxhJUllNiSMomzd9NTysaXqOprtKuwVlOd7ejoMhaW+pmUS0PjISsyd4VNDSfKRR1wiPznNSA==","shasum":"2e79aaaf760b170013abf34aa33c7ab9cc35045b","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.1.1.tgz","fileCount":71,"unpackedSize":574011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCTx9CRA9TVsSAnZWagAAdrQP/3kURLxPY9di6aU7dAF1\nDlY+mZbKbh3Y7hTVx5LR2w8qt0hKcL9VAO99cBm8U1Be7sS90kiCi/S+GSu1\nkEMDzOKc1/M+aPpzqFUn15BU5EGZrzdH6Cx9nYl+dY7x/s8POP/IK2W/mIN5\nAY+2Zt6vRmyQf4k6HDSlJpDyYcFkohshLNA4i4XOAC51O3d7EpHH5spoPE+x\nxPbC7h48HBRziUVYkDDT4oXoFMpWNuegybjrZ4K/KPeKrdO/NjE/rYW0yLr1\nydhjEoGJjPjv9s+VCTpIIpzBkYzXFbDN+eEro2NKWKsGZKceDy1+W1m2CKEz\ns8+shNO0UQqgId7cpdz6VlRSXTnDhYVaqsVCJRgUa5pNFKFY631JCTlItl2+\nW7YSAhqCnnO0JOhpJWkqs9aMoaSSuDIanSdwWemNeo0prE8kCDm9ujdo+6xC\njc1oHPYS+3TKEmvwBTjEg3Z4UDgm/c0Qq1HcK0zf/F/faCvJ6bUwskmPiK5m\n+axt1lfR5Ykg+Y2jcxDP+vSDtHCkcj8Ovx4pLR+8slT50FVNFItskfhUFi7Z\n52ZZ+UF2iQGYD+4cPfbcILmj/l1ZNhKRxZXWpdygeUgKZdvvSzsuo/YTQM+i\nGESRU1/PcK1HNL/atkxQIktzJdrEgv/y7+MSs6dfdKjegHPwZJ+tAO1m1Mps\nXtfq\r\n=K71H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhEIXsD7GfGKMtFrmlS3f2SptunDYIGTVnelBlK4oSCAIhAMX8yq5deX7rA6PxMAcm2hwaLhcmmkqiwvCXWV7soQj2"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.1.1_1544109181142_0.3438870476326559"},"_hasShrinkwrap":false},"1.1.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"1.1.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test  && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"9d6674dfd942532308806d4045fe7d99c3133bd5","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.1.2","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-cgjB8UHk+gjojMCfNdU2hSQpgmYaXoeJxZ0waFQvcTLkV42oFVC+JJBsU2UEHxQj4hb4vBLglYXT/gHuh6cOMg==","shasum":"a105fcaf8036e4bcdf32cac25d71b7a95d70306c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.1.2.tgz","fileCount":73,"unpackedSize":579045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCUO7CRA9TVsSAnZWagAAPd0P/Re5N+wbVftGegKt9GDr\nmDXsiG7UPG6xHArRVKI6Q+vjolc5e/G5OZECM38b4yg/lDo/WmhSpBeB22DL\noptVCMGu/+/LaydQ21xf3/DnIM0mzyoQ8QJK1rlpzUgZHtVzBp7EPXNuh2JB\nSXKP/XwAVSKQy58dpewTrROmDUmO89mfaoRZBlZC8FUTlzw3Gdoc7N8lG5cd\nZE9stC3faCMENle90wXzE06arbcE4TyChUzc1CDQAUmdIBrUIo7dQ9YDi7Vz\njto3ZOSdfjy/TRTlNdc6OvAc+1P1Ni+RCHvaAF8LFutnCM3nb/9zbp0+Lfkl\nvJPpJoIDK9by3kp1isVUvJTXOxcqKC8r8GPnt7+A3WG1DNVYV7ZYm7/Hqh2C\nOe7UwH57eiOZbf6HmSwpHT9/0KvFVPzX71/uo4wfqETf0StiU9QZRbMKWHEB\nMjR3PMxJ5bwmFkrMDxKlJ165zozwG84YHxujJnUr8xkab+see6YwHDK+9sjn\nJlQxovIvw6miMAMA6ld24b+/VZoR7qAvmELsqAify4FaZrv4SHWvEK7bFca0\njBz6SjLdsq5QluoGZ66E5LCP2m1/Jv8Yp3qnXzQb8q7Z4NLeO54zmBPitizq\nUwFFUsDvTzOfh9Z8ymCUTjqqg5HiwMUzp379In4MrSZYZ8Vx8qtWPOhrfveC\nU5cj\r\n=j8ez\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOUL9YFBJZF6rrd4p5Qc7IHb1M+D/ZttGnkXgNxHx3yAIhAOPQpHgExOsBhYFK0Pn3SNPCjGrmedS132Yo37wq7EbH"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.1.2_1544111034907_0.7089873645367504"},"_hasShrinkwrap":false},"1.0.5":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"1.0.5","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"418ac5d16b7187470b0d0f4ca57b63a7a41576a4","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.0.5","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-rm7VE92fmJtA9g03DxNkan7vRU5IIvHwZSRNwTcony84xCkAbONCH/C2YVbbdE9jUSMbtsdQgzeInWqn4wFhpw==","shasum":"929cddf5ad6151afa6278f584bf3a92bf1f17173","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.0.5.tgz","fileCount":63,"unpackedSize":569046,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCkBBCRA9TVsSAnZWagAAtVgP/0ZW7M5q8BWnYDMN04q1\nr2EwaYCfgKnGiAyviV3jMgPtOqNH4Kv21lHwmizmaxCyRhFyu1M6JICq+Zql\nER7LnbJ5xmkqt/s608Hv0+OtbiM5khWlGEcHpOTuTmgIwYFMhrEDEjDexqNK\nZTCAghgsJA4UShv76TjSfnZB+qm5P352LGn9YS3MqEL16HPy954TwSwUwwNp\n0K0XtchQsVooucPJj6EsqzRywdFxhNYuhVul1Evjsm8Wl2fDAoDb+poemwkz\nSy71FGBqCuaMcc4ALbVLXDN3XSgO6Hb//eueAcfK0DAoPXX7aCVDuEbAjW3I\nHeDVqkH/Cltbk4BojMCd2UBGp5wwbchpBhvD09EGz3iyafmi5E04elaYKm2l\nS4bEAtgc4T8H8OAG9iibofCrJz+ZQp2wDqFiZC5LryzmxcKFM0eKmfpXnFEA\nxvoUR9zNk+PfiMosW30j1/OqYrrPRPS6DCdeDaZmF1DsnT6t/KlLl5AYNYyE\nWjOb3bTKBaI7N1ARklZLW7oHMf2HJUZCRSRq74DXDu0FDlixhqz+PAspb91x\nj8mXrrLoZ/6DMaG4ogl9a8GLN0WIlD3T4ci0LMU8VHr7vYCrGIpfQEQEjqRr\nRkC03edS4F5+hCNRUaD9eQWV8QdfPnqGXPgbFMHK8m8ViVx/as6xT1D87E5R\n3/zk\r\n=N14/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB67pSsdx12w1w+MWpD2klPltVlMBCI6ppoIYmPDW2i4AiEAz+Hsca+pcRkELt9fe6LoUnTjoPU9QvTPtqyyHxUk2/c="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.0.5_1544175680436_0.6097517808539847"},"_hasShrinkwrap":false},"1.0.6":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"1.0.6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"0d7ac6dfbf87109587a9b3fbdb26b1e0275a7549","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.0.6","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-euZidN4wJiTzQyLnS2OV8B1nKNZv16kD4if4eQ5eVfLKtjCT+AwYc4incf/wo99XMp/qPMI5tIWtLE5aj6WaKg==","shasum":"49514745e58e0bdc848a05e39e36cd8efeded50e","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.0.6.tgz","fileCount":59,"unpackedSize":594995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcJLUNCRA9TVsSAnZWagAAo7sP/0tS37t5Pxyw5VZSd/lJ\n6aUH2v5pafNYFGHm6j8HeUQ17UYPpT+7iRvqeqwnU3tjL3jcCnWOW/BlEqGw\nuQTISnsRg+H2lbbZZYdL6TaijS5uGWcUwd4dY1LMACU4xDVio5aZ4MqcJNHC\n0v50B+OnTxA2R+012nC27lGF9VYyzZqNQI7KrXdDiTvoCdk7ra8mxcAmd1/C\nZ7UNO4yVafLCpzdqjESekCdLklei25W3kAHVjTnfKJpYnx/KerZBh4ka3ooJ\nl0RwBolafiRgSUze0E5+ZYTGoF4qE2IfoGYXq7H7jQ/MRPDyyy6MLzu845U6\nfwYQT/G9S6xtvXyANcv0WpXzGNRoBdUSdPKor50La4zCfQ4DV/E0mp9Udlva\nIRr2r1Is+/fDU/ApQ3puyuT8/dF/7aswVinH9WeuZwJCY8pRPVxzCy2gwERb\ncLB+ETY8nKifTR7PjrOrAd+FRSpOIlPvD5c2XolnZj10YYpi4Ald46yLSJ4l\nSG3CzSs7XZokTVscCAesjmh3R2JgyHa9ApL5r6tGfXmz9P2/zrmNLY/dNSJm\nnsQ1ESJEcsrTXUfUGota/LRQ5lzbVNnWNQSarpoKoR/7VM+qTKE6WmPCokXe\n/MdkzBmxguTnoXG0nSjEwBoqsCqD5NtG6ZnWy3CakFV5m1AIHaW6lq7X2L2u\nCd/1\r\n=ubpl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA+u7ElnoIDmioMBMoGAFmBG/2S/09MbKJmFJ0gpENaHAiEA7pueI4+unpllA24PzxlmpOds9PJHpfRptt0HFpEtViQ="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.0.6_1545909517249_0.19183512449702045"},"_hasShrinkwrap":false},"1.2.0":{"name":"ethereum-waffle","description":"Sweeter and simpler than truffle.","version":"1.2.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build:js":"babel lib --out-dir dist","build":"yarn build:js","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.4.24"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"862f436dedcbf2ad85d8222fe76437d2494b9f3e","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@1.2.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-eTtXioTXeGj3V3PTVI8OlTMP4l8InnYKHFHS57cDW91PQ+YdXgT24mTDkSStPBuE5/acxxvFDwJqwgi3UaJRaA==","shasum":"832717d55734e8f111f1a3d0f9c4599d3484f9d0","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-1.2.0.tgz","fileCount":66,"unpackedSize":844427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcJOWVCRA9TVsSAnZWagAAPhcP/3Tt4kJMWBwPJhg9gDBO\nfcPWYK2uFsFVAHM+KfTSWJIGyFtwVMrSSJm59m8hj3GJl8WJkxVhi1KZu4ew\nu8S7gSi+rv7e9dCyoKMs0Ywhq3+StAhRtGcg33TIBj61jVAm9XBjF0ETJiwI\nwHDTVama8bXpNVJxqrvzcowAiYPTZLP+w2Y/Os/qHgJw21hKBrKSfY9wysmr\n4mAzdFsCETwoC1cJ5Xu5Jl201lqJykfX+96pFveNY/DryNK8K1PVk1jElFSL\nKEy/9+OVARkEROxi0tjpT4YG8MMwO1sbcN0kg05+9sN+A6IT4Lx9mo1odbeF\ne7A+sKTFt9bak2dalSdrPg43oN1ZRs49TTIo/2BP7Ghi2hcXSgprA3VLJSfa\nnQjTUv4FVOulPdZbfnbsDlfc5SoYP8bwCR/OAKupk/Y2fIKEBdgjLS32VK0D\nIuyHkwBIYLyW6ZvI5pRh7h0CraSmjOiJgD7tFMGpbobqvAY9ki1rTz1dRq0Z\nsDWQFq/MiH6NCPnrJilPB8m6dTCs1zzDkBq7fNDGnmXPeUsFhGxbEZtfN1g4\nkx8LvBf2+XYkhTXheWoJrlEKaLURrud8WgpsxnFzjS5iCR1hFTMWhD5A9lHL\nBO0Bt++c6ymdEecGBmb6sPDY7ddfgu278U2G9ajEuudB2n2PT16yMGOmw6Ts\nx+h+\r\n=ffnX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHQOcTuxDRNY1A0AbTRq4wieRNPh9qSxIhp4F624EkqaAiEA09rBF0h3S6e10+b9udyS5E2fRrC45ucBYMz9IdfEjOI="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_1.2.0_1545921940513_0.395147142921376"},"_hasShrinkwrap":false},"2.0.0-beta.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"readme":"[![Build Status](https://travis-ci.com/EthWorks/Waffle.svg?token=xjj4U84eSFwEsYLTc5Qe&branch=master)](https://travis-ci.com/EthWorks/Waffle)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/images/logo.png)\n\nLibrary for writing and testing smart contracts.\n\nSweeter and simpler than [truffle](https://github.com/trufflesuite/truffle).\n\nWorks with [ethers-js](https://github.com/ethers-io/ethers.js/). Tastes best with ES6.\n\n## Philosophy\n* __Simpler__: minimalistic, a couple of helpers, matchers and tasks rather than a framework, few dependencies.\n* __Sweeter__: Nice syntax, fast, easy to extend.\n\n## Versions and ethers compatibility\n* Use version 0.2.3+ with ethers 3.*\n* Use version 1.0.0+ with ethers 4.*\n\n## Install:\nTo start using with npm, type:\n```sh\nnpm i ethereum-waffle\n```\n\nor with Yarn:\n```sh\nyarn add ethereum-waffle\n```\n\n## Step by step guide\n\n### Example contract\nBelow is example contract written in Solidity. Place it in `contracts` directory of your project:\n\n```solidity\npragma solidity ^0.5.1;\n\nimport \"../BasicToken.sol\";\n\ncontract BasicTokenMock is BasicToken {\n\n  constructor(address initialAccount, uint256 initialBalance) public {\n    balances[initialAccount] = initialBalance;\n    totalSupply_ = initialBalance;\n  }\n\n}\n```\n\n### Example test\nBelows is example test written for the contract above written with Waffle. Place it in `test` directory of your project:\n\n```js\nimport chai from 'chai';\nimport {createMockProvider, deployContract, getWallets, solidity} from 'ethereum-waffle';\nimport BasicTokenMock from './build/BasicTokenMock';\n\nchai.use(solidity);\n\nconst {expect} = chai;\n\ndescribe('Example', () => {\n  let provider;\n  let token;\n  let wallet;\n  let walletTo;\n\n  beforeEach(async () => {\n    provider = createMockProvider();\n    [wallet, walletTo] = await getWallets(provider);\n    token = await deployContract(wallet, BasicTokenMock, [wallet.address, 1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.eq(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(wallet.address)).to.eq(993);\n    expect(await token.balanceOf(walletTo.address)).to.eq(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = contractWithWallet(token, walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.revertedWith('Not enough balance on sender account');\n  });\n});\n```\n\n### Compile\nTo compile contracts simply type:\n```sh\nnpx waffle\n```\n\nTo compile using custom configuration file:\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this:\n```json\n{\n  \"sourcesPath\": \"./custom_contracts\",\n  \"targetPath\": \"./custom_build\",\n  \"npmPath\": \"./custom_node_modules\"\n}\n```\n\n### Run tests\nTo run test type in the console:\n```sh\nmocha\n```\n\n### Adding a task\nFor convince, you can add a task to your `package.json`. In the sections `scripts`, add following line:\n```json\n  \"test\": \"waffle && test\"\n```\n\nNow you can build and test your contracts with one command:\n```sh\nnpm test\n```\n\n## Features walkthrough\n\n### Import contracts from npms\nImport solidity files from solidity files form npm modules that you added to your project, e.g:\n```\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n```\n\n### Create a mock provider\nCreate a mock provider (no need to run any tests!) and test your contracts against it, e.g.:\n```js\nprovider = createMockProvider();\n```\n\n### Get example wallets\nGet wallets you can use to sign transactions:\n```js\n[wallet, walletTo] = await getWallets(provider);\n```\n\n### Deploy contract\nDeploy a contract:\n```js\ntoken = await deployContract(wallet, BasicTokenMock, [wallet.address, 1000]);\n```\n\nLink a library:\n```js\nmyLibrary = await deployContract(wallet, MyLibrary, []);\nlink(LibraryConsumer, 'path/to/file:MyLibrary.sol:MyLibrary', myLibrary.address);\nlibraryConsumer = await deployContract(wallet, LibraryConsumer, []);\n```\n\n### Chai matchers\nA set of sweet chai matchers, makes your test easy to write and read. Below couple of examples.\n\n* Testing big numbers:\n```js\nexpect(await token.balanceOf(wallet.address)).to.eq(993);\n```\nAvailable matchers for BigNumbers are: `equal`, `eq`, `above`, `below`, `least`, `most`.\n\n* Testing what events where emitted with what arguments:\n```js\nawait expect(token.transfer(walletTo.address, 7))\n  .to.emit(token, 'Transfer')\n  .withArgs(wallet.address, walletTo.address, 7);\n```\n\n* Testing if transaction was reverted:\n```js\nawait expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n```\n\n* Testing if transaction was reverted with certain message:\n```js\nawait expect(token.transfer(walletTo.address, 1007)).to.be.revertedWith('Insufficient funds');\n```\n\n\n* Testing if string is a proper address:\n```js\nexpect('0x28FAA621c3348823D6c6548981a19716bcDc740e').to.be.properAddress;\n```\n\n* Testing if string is a proper secret:\n```js\nexpect('0x706618637b8ca922f6290ce1ecd4c31247e9ab75cf0530a0ac95c0332173d7c5').to.be.properPrivateKey;\n```\n\n* Testing if string is a proper hex value of given length:\n```js\nexpect('0x70').to.be.properHex(2);\n```\n\n* Testing whether the transaction changes balance\n```js\nawait expect(() => myContract.transferWei(receiverWallet.address, 2)).to.changeBalance(receiverWallet, 2);\n```\n_Note:_ transaction call should be passed to the _expect_ as a callback (we need to check the balance before the call).\nThe matcher can accept numbers, strings and BigNumbers as a balance change, while the address should be specified as a wallet.\n\n_changeBalance_ calls should not be chained. If you need to chain it, you probably want to use _changeBalances_ matcher.\n\n* Testing whether the transaction changes balance for multiple accounts\n```js\nawait expect(() => myContract.transferWei(receiverWallet.address, 2)).to.changeBalances([senderWallet, receiverWallet], [-2, 2]);\n```\n\n## Fast complication\nBy default, Waffle uses solcjs. Solcjs is solidity complier cross-complied to javascript. It is slow, but easy to install.\nAs an alternative, you can use the original Solidity compiler, which is faster, but requires more complex installation procedure, which is different for each operating system.\n\nYou can find installation instructions [here](https://solidity.readthedocs.io/en/latest/installing-solidity.html#binary-packages).\n\nOnce installed you can use the following command for faster complication:\n```sh\nnpx waffle --fast-compile\n```\n\nThat should speed up complication time by a factor of x10.\n\n## Roadmap\n\n* New matcher: changeBalance (see [#9](https://github.com/EthWorks/Waffle/issues/9))\n* Faster testing with parallelization\n* Faster compilation with incremental compilation\n* Documentation\n* Debugging\n","readmeFilename":"README.md","gitHead":"38af3872d91a3fc48084caf4cc3e062ded24260f","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-6++soEVVPPPIIPD4Qbvyg4sYGjM/cxfji+RkSueXDNsVAwFH0Enh+MCBPvGCuBHPM/RryEceN8yUS0f4HWrw0A==","shasum":"00f88686b6dd0308dfc0f0b7d93f52fe45ccff23","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.0.tgz","fileCount":79,"unpackedSize":875929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcJOaxCRA9TVsSAnZWagAAFN4QAIqQWxTGM4MURfq2shTp\nDEXq1c7s720ZCJwjBRfRqz+ynPq4QxGI1TPBTyQmSECt6pL0HzZuZ17NIxWR\nowRnnINPSkkAYEOn1pF73GKXRjPcOkx+756Nj2f9VOr5isSPdFkc2E4aiM4Y\nEKmSxoJzsxGlGtwfxBukoWBC+mG5j+5AVkEaLUPls+0KjREgWauzDpMD3L5q\nNVLb4UcpoNrKc0SQXrKOEHOxCeAwvVSSVjvs2XDLhIeCvdL1tKXmNLEWI6qO\nOS3SEZdfRHNDWhC4WvZyRhDVxKGYmJUT5+kU2fA+B83BqtRTVEXkccoeqN7L\nJeTwB/S3Ojv/XCIpVXOPOMZEcrz2Q8XicnWm483rLFWwHJMuTFATl8SsdjHz\nIYo0rJMhy4qY7W/Am8w79VUBNuMXFX894PsJ3WiA1OYnYxjnWWjNds7DShzH\n/nb2djGyPBCAwS1a2+IGBzMj//4QVLPRDRhRDKpW+63kvDR3f/+3Cd0kc3Mq\nfLUIB+4kYUjBwfv2TLpjRe5Fo36YorEq6lgNv/ehSiQSiL60YADlKiTl/gKm\nC3YnPwAv/nMxDTUvjy6fXxT8XFgbuJis8rlr/jfgRMpumljbEvm+BiDfSOuk\nJt/CeDvlUmnRyYjydQh3HwiNVVOTN/OjN/YsK6fHhv9fuqhPd/nFVau43o8N\nlDPQ\r\n=NGU7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaE2GO6ZpBHwhkrW+vPf/Q28eMm1RvbqkpkcJqIokIVQIhALZ3cC16rQC5EdeC/pwDe3QOsqQU6uLFAcpyDWt9HrX5"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.0_1545922224998_0.16233979081873695"},"_hasShrinkwrap":false},"2.0.0-beta.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"6ba6637e40ea4649f786c7e56df4b590c850b34c","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.1","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-W48xi/tnyQblHCoGezB+H+b4C/O++Zvf03VvYWrcK8zwJb05h3SUhE3Ju2kRxlpnP7F2DXrJbhruwG/V3E1swQ==","shasum":"dd5432f57f52a41709d0424b243b202863f343c2","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.1.tgz","fileCount":84,"unpackedSize":884015,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL28fCRA9TVsSAnZWagAAP1MP/Rqt8AtMXA0TvBQPQOuV\nshK76Dg6zXA581iZL5M6oRamXmCcUG7esZBEO9d5Dp+CKZ5N0GOREJhiDmTr\n30gBK+omj0mW46J9lqbDmGJZY/8ESYzH4PgYUWORMtjXm29oHWG3tT2vP5WB\nk1jmBssMXJn99hJjvCfbGTyuanhKzO7x4R87CcSFy2ut99VaZKk5TJw71YDq\nTtus0c1tSiqyM/fzQPgzB5Su4e3HE1uOwB3tDBGRiVqWpKJ1WawMkkOZxuvI\nr7DAJ92cBRgFf0hF99TofdN6DpTxPQcvgDbOUw3khCHQYQSw0UzA/3/MH9oi\nyN1z82LMGy7hYqF6m5+uEqgcYFsmMdtKtSoVdc+hg0z87JOZYiR2WxYBszRw\nQBrCPWMDlZn4bgbW/iBiQaFk3cP2iAvdIHnjyfLhS/r3YZnZ4YG99fGZHHj9\ndA1MIVhkXubQQWHrynxTMQXkZOJbhL1w3Y48D4+lrLQy+ccFVpKe+kexeofJ\ngIMe5y3d0FQsM3kDGZrba9GVEY/TeE7f5BsBfn9A+CXgglQftzofRqoiXfCZ\nXCPjfvpJqn2WvvfAvPZPJcX9ZUOUTmZ/f4xfHfq+aj8bkaNmuE21vCA1MZmk\nANXHV91Gaaqq8kavQyzcLkA7JrCDs9XwILbX2B8/tyksZO/HP0aIcCtVonri\nMsn/\r\n=oPCJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/XSwA7zfl+W+zdF14sBuHjq0fpBSN4Rfg9fW69KtGaQIgUybR/u7QWS9GXFPU7m/q25Kg+VOSxApqpqgbm9WbbbU="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.1_1546612511163_0.44447465874684267"},"_hasShrinkwrap":false},"2.0.0-beta.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"d89bbafe6b537e484f0050142103dac2bd77d956","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.2","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-Y5MyWErfJZSrBLVcg5JuBVZdhZSzEwC9jejf9bROJl+ITRs+rn8nynO+qVnXxzlDi/GEYyxOafVJ01curtnDZg==","shasum":"72acb6be36a0fc1433788c38e201cbb51c615972","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.2.tgz","fileCount":84,"unpackedSize":884025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL3e8CRA9TVsSAnZWagAAkV0P/1PcbzttUWb8s5C7eLRp\nfZryVcDO+Bh2Jn2CsufeZMjocICU9hG9fDSCEy5jS4hvhHUdYOwf8Eg+/ioK\n8kx/K71ms1ORoxXSpkNiPRjYFBPeamDFx92gFE+dVX9c4lirEReh8T++VcLC\nOKfxUDVnh8pTxV2jf+ILeeDwlYC9bHwRzPvI5xRCMtrysyBU5HxmzyLEniPi\nLLc8mlDC1E0Erw9x5DPtEybs1DueGXRv/1ou4WOvtMgnC1099nG5hYn5MSPL\ncp8KnAvNiAFHPLSDLKBm6SQKQxI355ZiPXn7WV2QWzUH5/fyKc2Rvc1vaKIE\nf+z/s31iMwwWgJJV0/p3XQzDCxgvpmaOcEY3uMOWS5WaBxJWds5Ye4wSlJG8\nfSmg0E/ntDboS9reWte9lCZEiw1/vqwX1fXERpuY8xE37foS1l/fhYG0xl5m\nMbpHWSJOg4jqu6eOpDeWbzbJMPqhw4OtphYfNIqn0H37bxwFZRSEExK/YhA5\nUAl3ckzmR3iBp7HicOSEyeaD/db6UXNlvtWDiIK3UsmYlxoUyVNc8X/5gsPa\nO97yDhtDQ08vfFScs4iXNU87/HnuT0sliBX+wWR91cvLJSAR85grzcdNER5J\n/H+SBExU2/gUlrkNZRAqXuEortL/IvLPDKcxKN07iJgShLzcvQaEISvTC7XA\n8QSH\r\n=K4rD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDElhdc2oD+8D7zhedX9914wsoHlVl9lEXhU8y0aWk3YQIgFRCfH0lXBTGiA8yek85x6TdIw/VVUPnE8iWC0yHo+eY="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.2_1546614716082_0.5604411832879725"},"_hasShrinkwrap":false},"2.0.0-beta.3":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"1312965472ee567a552186ddc5ce5c5348b8ef8d","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.3","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-UXwzY6MwAw4D9EUOrixPRRzsfKG0V7G1U3lE9AC/Kb2+dx7T8mSBltSOD9TcBDCgvifOAdtgIIqbNMGkcAMLVQ==","shasum":"79c548ad37e821491913718214811fe47be32c61","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.3.tgz","fileCount":84,"unpackedSize":885449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL3/7CRA9TVsSAnZWagAAZT0P/2H8fyAW/ZEbNs71dRXk\nKAg7+JlsYE+t7iSZDDNPkyJtPQk4XBWUMIiF3ow1bbX/WQGS8V2FISCX4dkR\nnpekQG8JVBtwobMERHlDVXDe5Tj5Y/x5ko14pk70Lb4vqvUFF0W/ppbBMv4w\nqLxvd81qXd9HyYQeDLM/kKW69YmQuV+8yvT8bgaTu6DU3o5re9+dXYAtr5KT\nW16/PvuzODJToI5gkxBB+M/RmhTsqq2nCmd+XIYKFHYU70k9xJRYdQ1efMaO\nK4eoM0agXOg0E+4T9r9izrjbe+U3/mjS0oITj7wjTGabvT7afotFBWxke17y\n+uRZoso/5BGnKvERO11rfH6caKgFji75REBUqUS4Moel5aWcE0f9YDK1JZch\ncsTbQ/Z1wZTnZtUzUmq1li/z5ZauPcFHlk9nmPRkFbL9GwCPwf7ELBNrziPX\nc3GR/tbNZ7Q/Yz+ahDLRjOLp1HceAVgVYP/sDrRnsqQDsmyeLNgcy7XnApK7\nqLu1Em66fWaaruUayiIlM+Rd8XBf1qsPOyhyuadfqpHbrVk++LHF2Jm2czka\nBXQ2EDLr/qnf0bE07L3mixUVlKekTcOG1H0JLgwW3kWr+AddoUDO6ezXB238\nKSE7j3QIhrKEAxXtt/13S3h4k8cr6t+qQfTXEVIw8LxD/rJqe9NUIUfWkI6y\nzrUv\r\n=GIHz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEMmbrmzpAYUdeseIblBvj/Z3FOrqf01F9Y1nu85P2NVAiBXleFvLT4K//4nNa9OSmxPhpNmpxCDTn2ZHSAu53IBsQ=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.3_1546616826944_0.41129043356296036"},"_hasShrinkwrap":false},"2.0.0-beta.4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"solium":"^1.1.8","babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0"},"gitHead":"f850ecb7ae07bbaafb52e4e262db67f495653212","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.4","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-OIBKW+hfBl0nyVk/ISqXxsQNh3pkB3nX2zxX2W5hEOiyu8lp/cetaWwbvQ7AkowYUSJLVgfsXcgMieslPFqZ0Q==","shasum":"2c376c53af8f8d66e997d5b439a5826871683152","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.4.tgz","fileCount":84,"unpackedSize":885477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcL5QtCRA9TVsSAnZWagAA0vUQAJ2NGb6XRBCblPn/PZ4u\n5Qjah/THHwoxFoVPBgDXhs3/cg3w9+clhHkTJmya8DGqCjF1IQbZ7m56AdEN\n6PtXeC0DI1iXZXBlPSU2xSxcJr/0GjA1vyZzVZfIsntg9ZaLIl1wd7KG6MUb\ngI333V1WHQVNfj+uBm+vcb6G2s92L+1IjI9LbPCDWR9LzUJwEuWAAh/Drr/+\n8+t0//B/h8YyH39uQAQTh+4D1nnsqL7XvRz40KV4nDNQfoKVaxPJ/cMdav7Q\n0IjNFKIVq6QYCFRrtc3OdRwUbl1AUPVsE+3nDOITlTKRdIYojU59/Yw+VyoU\nMaaI8BpvQcucICzzr/QNR/HHnofLH59DwreM4vNxj1geMeJC8blHKCzRSnAo\nLFKxuOZmrE8ybwvK6Q3+2C2e7LUJTlR09zPimi+1QRDfGhFgHqa58wZ3i7Xn\nwPLfw/msH5Oba9sJzFLWZ+UEhhJMmURiSCgEQdFKMRd5DqIlo46zAsHq0PrJ\ny/lG+vs6bPo9xD5vqFC3OIySgcSaMVR6BkoJRayukqBRH6772OA8c0pqweaf\nuT7VjeCgWFHTs+5nc4h5k8GegLJXwBWaLBKy5sZItgTNiE/D0Ln5oKgGxIq6\nUSgM+u89s9NLG4c1lwdq5FD8/mowU1vqfiw/tlWd/PRgn8OjQeKo3ylYQPw0\nuW/I\r\n=UAT5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEymOMrCQKhzFU7J6RhbvcTh9HKy4OERUXOs2jhVO7Y0AiEA6FKCu+R5+tPEnwQA41lM4otqUfxchVHbhjf/x8Uf0k4="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.4_1546621996431_0.6605162219727201"},"_hasShrinkwrap":false},"2.0.0-beta.5":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.5","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/compiler/contracts","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8"},"gitHead":"c1ceeb50c6de6cd07e113dde1a02b00f80b8b9db","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.5","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-149SndYHdzAaCqD/hE8qraF0vL6Qv/kMY2Wv9wuUvoIb8TIJcuwF0I8yQhoONKpkdEyBYg4n8g6UfWApZl14Hg==","shasum":"b37603a34fcdeec75844a5023f53487091f7ef5b","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.5.tgz","fileCount":102,"unpackedSize":1030438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM37jCRA9TVsSAnZWagAAri8QAJgH3X0hHIv4jcv2g5fw\no4W7OyLmN5ujkZBoFmQcEZp0J1SgzBJJUlVpx+8IF/zLhguLuAi4UiGU3h+R\n4Ocfoa6bjo5Yah/Rnmos+7B2hl4I1PXAAJM2QZL0+AoOjRiB9Nh77TtGWI1r\nvOQ9Ygz8r7TVdZVpnbZQb2IxHM7dhtUFT53maCBuz0ZS53h98Tp8oe5nYNj0\nI/J4uFSbEiiHqKqPPT2m5d9VN9OQHLTKCbEEq1l76VCAfCq2jntLn+z1ahTN\nCyiWDMKGpeS3EuXWt44ZvjKxGpOgVLCzS6+sS1540kHOr7CYNxdg2xcehvUk\nAhfP0/pCOAncYQ0IKxeAwPTW+c3W7F1ZGuo/AY9LNUgXmPw7srHN0IOvSnKb\n6+jq0tp3dmwSPb0gzNbXI81/oVBUnO+P3rf+V5LZKwp2PlWugz7R9p/lFUMA\njwVPJBvuodkc0TtN1Wbj6/xW59u/kYbRejNtzsiwBHUE9JoGdxuGLKmZNkQL\nB7Q5imMkARWR1ZP8b1Co91W+0ekG2cnHnvUX+rSDgGR3EqaPEVEefbEUDIjp\ngbRrbu9XOXUgtPs17lIZ1Fa5O7ykmp0aDFyQzVa3yW3oVHnPRXpDGRxHs+8y\nRz9FjqhIY+rmlrm8q8uWymnUqvo4VaruDCyfxvHy14NZrShibBdnKkE2FXlj\n8vff\r\n=aeEq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDasbXsVyK+ujU1dF8iWjO88Kt9JVsKiL02RTwOrEBzowIgN5rEuPe4BmIQn4N3NrEULQUis5TdDwJj2Z/QRNru5qs="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.5_1546878691157_0.2847031091355916"},"_hasShrinkwrap":false},"2.0.0-beta.6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/projects","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8"},"gitHead":"1a147b406801f45038a79d536f2e88d07ea16304","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.6","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-FXQkgXB/cwIQorWd1GWXjQ0AyKmzSUwYDrIpMDHcb60BCuqoVGAQif8iCELNHJNkJvPzcaBAWwXnqPab9NzaaA==","shasum":"8594d677001582fe8fff28807bb3a7fd83b88312","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.6.tgz","fileCount":128,"unpackedSize":972239,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNl4ZCRA9TVsSAnZWagAApSMP/RLhIEVe1ppgBcWB/GTr\n6aQ8cxx6BdT2aVXSpGwIoOnOAJ/kV/XhiYRmfPR1qeZhHa9MzO71G3GfXOA8\n++T3sHmvFLHwtrE9ewyXJKM+5dDo65oIDK8JaktcIk7x3+uNiIBHtIEjL6ra\n6dC8NU+SNQWWNrUbE9Zs27Dy/f8FDT/xAtaO7kLuJM7SeQOSBYPvLXjIiE/N\n0bZUZXNuIj/26p4r9B5TPVyUt/xM1WrF5JNVhy28QXzgXUGshkSX3xyyXhf1\n6Af/YWuRteMQiy4ywGDOTcI99Rph/pE4BCqLHO3dFOUvZfgoVzL/ojWpi3ox\nUoHJAaM/kMAuljgFpeGT1WbaUwMpP8gf0D1EFC0xuqgvufii9bWd17pyAN7k\nmYMqNRVaT8MSU/mYZwRDfunxZvwQOBPtEBmVPS8faG4rO7Z2Efwa8yPPVuTx\nDXUfhEEBDzP4VR/NNagZQYyKGJTB4J4WPbGvBNC9iPCzlwmiRDhWARNMnG7W\nxgcWFuH3cTf1TOuNu7itJJcRE0JOoYbKcUJ/WMZ3C55SkoyjsrK1+d8Z8QhS\nVYwaP/JnKIffqvq2POvgomGOd1QuPW92QHbaGqyWVlzztXdCJaDqTgmZ4hfp\nuExzJ/ME31rpdryq4GjrP3moQ3ISY95m3YkXFJKIG3hiPrfZZVqefqgVB2L7\nQ4al\r\n=VrMg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKJ2nrStGSpvLFqKuog7qgKFgAKolC51vxmo9PtGeZvwIgLCsP9FNEdmImXyZbgSYW8ujdqkb+kN7fJ7Gwl6dYU24="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.6_1547066904223_0.9216497199207314"},"_hasShrinkwrap":false},"2.0.0-beta.7":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.7","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/projects","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8"},"gitHead":"7efd6f88452372c0d75ad823cf298d43641db45b","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.7","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-eM8qpYwF2uSAlzxKHa1GE3IFpR6eLD2++aTPK7UzYfXA8b6mv+45LnWxsMDCWqWgUm8BDcMth8ZNSSBsjRFqWg==","shasum":"15b8bebe32d32e8e1ffceb1144c0e93f06396762","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.7.tgz","fileCount":128,"unpackedSize":970420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNmSBCRA9TVsSAnZWagAAJ/kQAJYhuWjwwPJWObShYmFp\nOYkYpkH3O7DXT/M/oLADYZi15I4S+oViFCBJi7gf9RqAFBhjjD3wrc8Fbw1S\nOrislcgttpf0CXkXBct5RwhOKxWSnIzI8vH9P59XudG14aiWb9rDQ6SxF1kx\nNwD9oByxXCBbWCtvgbHcsLeDPtCx9h16QQjm6Cp4Cw6+WEJPGSppg3y09SiU\nwhXRLPLpeDa6zbS5ALWvEp4wE8fgsvtWeQZMI2Mu4KA3jqLJySzyM+2SwLk8\n3ZpC+tEtZLCgpPbLSlXakMIriwItEpJQNByMgnasKx+p/gjg3V2nCvT67S6L\niN0jPWPVvX5o/X0gtvvHGjSWUPJTfNYHK88lJr6q0q1NvXioJSTwkaM3DH8w\nPzKS2v7uWJZK+eILjGc7cC1ZDT2NRcQfsgDCp9QA1qV5njrRV4bOY6bRVeBC\n/+wjgv3LJKaFlR7zBJb7uZt40r6UJHJctdeupePEs7KpRTpjfuYcGBjMPd8Y\nR0ZgoAmDX9KNMPPrWcZ12Vli/Tkk//1XcApaG4SnstbtUGG4fQdEkjA+1o71\nMdW/ot+NdYazt3QeIINmC5932QKjDA9uP3cSTPtI2LsTjVRTJlgWuHXOge20\nEDHiWaDm9Ga34yqFTu4lzG9o5Phb8WZRdQcKxKdekoZF5CFpyUe/QgiCBp4j\n0H/Q\r\n=ybwl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICDfRGaHU8qF4i49ieL3FX5xkDhPk+0hxCfRyTJkKpLsAiEAvAldSj7D4xzAPt+bGQcULTh0WVsVY4vFWRk8UTrxKEI="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.7_1547068544244_0.40919852051316496"},"_hasShrinkwrap":false},"2.0.0-beta.8":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.8","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"babel-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha --require babel-register --timeout 10000 --recursive --no-warnings","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint lib test && solium -d test/projects","build":"babel lib --out-dir dist","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=9.3"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-core":"^6.26.3","babel-eslint":"^8.2.3","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-runtime":"^6.23.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","babel-preset-stage-0":"^6.24.1","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","eslint":"^4.19.1","eslint-plugin-header":"^1.2.0","eslint-plugin-import":"^2.13.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8"},"gitHead":"fb0916d333f8acdf57f4124035b136e0c234c0e4","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.8","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-k7fYmXJBpUCvWXh1zXEgEF1iC4TfghUwuk23ybAHjBGEw+1ydaw3xgovVl91Bexsu4f6NOa16rKSRsU9LsIqIg==","shasum":"bf661771670ba489b9530c1df609d6638b671d40","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.8.tgz","fileCount":122,"unpackedSize":1602311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNwTFCRA9TVsSAnZWagAA2bsQAJEStXJikpVihu3Z/zjI\nq34KLA0aYERIWxUeaG8LAGS2iDVOpUNP2pOqa9Y+w4j3Ujjb50SKnDih4i6Y\nkFgwRj+gZQzFJ55JDsJGXIfyLK8hm4dAQBZwOD18UPSpiz0kwgN2ob7+rkFT\nQgKbu860tUf0OL0G7NMRk6Q1BUs/xssU5Z030zcrvXpoJdPe19rEzUa6U1aX\nIrDvkU44D7dzvCXyUGNHfDWgSXdxDpFs8I+UGx5brO4Q63Wu0ygeOIq7d4A7\nbF6RUzgeykN18oWw81dOsONF0Yz2oczxJI4hb31133dv4VCCU7WAQjxCFUvw\nrA1V7SFx89xTUNq3kBUKOZ9kxAHACLQqvyMcJySsq6LqqZlDnTKX5Tv8asJq\nJZNG+0kFi4tK0KD8ZfeEig5u7ZuJB6DPc2YhE7oGLD+r1aB0fFYG6mbldrBV\nh0r0KE0MOZMpdJBbQ9w/9fVWYIbCic2ZYaVj7VCe5LopwCi6Fpg/ackDzVnd\nBiN4kASt3Ql68JE8/YB1zNK6D9SB1/n4lZCy1gIX8+2N/ZmbzmbVOMnZHpjf\n/5xKoArJHY4JnihuOaETUnaEd0BAP34Ix27qPiCHUe4SWqRpPif51+chmzhd\nGIHVEi04SLDx4r7FqhG1VNoZ0huyLwy6WDOQepIwmAbL9jY+JsvoPtJbSfrt\nu+Mw\r\n=PxKB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWKp4fO8+5/lFoRdkm8A0cGsp2ADamlToijRXPkqyVJQIhAIxeBNzouiQyXogxUbznupL9ugwxfgXwCJPz00gs+NIX"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.8_1547109572255_0.7578179725153988"},"_hasShrinkwrap":false},"2.0.0-beta.9":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.9","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"d9aa9fde9f7f11e5e87937e38dc709de4263b25c","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.9","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-wInr/0iZXamiSiBiEkdK2v+BZZp9gZGeW56WdU9F3klMbfwh9n6qkrIad5uMvYRisf+BSrnPOUs3MTtPzg30MQ==","shasum":"ab70399bd0c1a4dd2693c753c9dae73531093456","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.9.tgz","fileCount":4416,"unpackedSize":84193577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOw7QCRA9TVsSAnZWagAA4IMP/A48jKaqv4C3jo4aGqH5\ncWz69/XYlGAKz/FiSXfTK3gYRN9XX6RU3IHtD5JTSswqth1dQ9W8FM7f3K9M\n7rxmBUjXz8WP61Lpjs++xlsCnYCWRMk3BDuM2L2MHumKYohNAQ+bvlEKhX6T\nPzYA1tAgSvGgghvph26bqbflEKahTupoA1S8ly0o2TcBMfyePwwdf2zZwc+M\nwGik20PYAUUx8Igh5kvxy7IxgsJPziubIm4HX2dFK3Tw0mNcdvDSm7qbrVCE\ngG9cwQYgaN1Yssdz/051hQGfoN6Co12eLUs6Rt8Ax4xN4QrT5qgRKkd8S1bo\nCDEV4STwIMdZHX+4Wwpr4vVP5D9G/W2WF7tYqFtJ9bBNrCY3Ly0Xp9PQ84fh\njKfKDvxYVFkUjkDL7mD8o0l1fyAbE6aP8Z57Ia2Y6J7iNEyWzXoONlMOoCuR\nkpfH/6y3dO2NYVSJmZ5JrW5s6WjpSgIsC/Tc7EW6aMsGkXzkt8TdLTVVQ0VE\nOd4MY1hIil+9jlaMJnw8os9JcvhMY2H+u5AyMrIw7Wxwwuh8Yb1Hm59uySaY\nEYW+q23RicpKqhCJEBx1gn62bQET07kKw+spnzhTq38wrBnqHWGrHyyE0gMu\nnEPOxJ+Fwn+evVr8/NEQ7IqtP0Xhlxgs0om5FRMMmSg2APesT6JFFgcfevtt\nelgh\r\n=HPiX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIALWrLD63MxBkvXsRrMqzVNNJIZvS5Bv9czdhS+ObLV4AiAXGg62fT13VHWWxaHQNLsidQ1tvXLW28O5IqInv++avA=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.9_1547374286998_0.5050296058149246"},"_hasShrinkwrap":false},"2.0.0-beta.10":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.10","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^1.11.0","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"74c4442b966077d38408e57c730f2bf8c0fc3dc9","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.10","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-vDY4JBguiJwD/kEzyEbcqAhBFHRGaHwVoTw8RgHvSVypX3LENq30lfyjgjSokNBwV6950C87Bgou6skqrvaHWg==","shasum":"0d4dcda54bb71c888cafa500b1a51b2bc3d0be83","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.10.tgz","fileCount":4416,"unpackedSize":84240120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPMLTCRA9TVsSAnZWagAAlm8P/3rWlL7ya97etPwpSpOl\nqjDOM3zT9jn5A5Gwx1MHY1pAbtXo2moGJh8IJzhXEiTzbBbtjh1LipcorS1z\nWRRXQ07+1+FPfrddICEEMo0l6y/j8xuqNCmOPzT4n+mIsqkS113dmuTx3NDk\nXJbtumRXdWmeSeXtNq1cOyWh0m1wo9vv0hzRtNhEFL3398ntfAjK2hnaprbJ\nhYzL9ijOxs5iNU1VjNJOCKK5RLoaD1Cf2u5gZMQmPcVBZNHtq4+0SS0P89uJ\nD1p2F6w/nTXIzn/V66PenBk2qKYhfnAcnhBlLk0igv4hgXGCpviL4D+VpV1C\nnl9Q68ZvIme55ePEoZStzkwFRb+kghbZdFP6+wURgo6/t8h13X7F+wvtZczC\nIZijy91JGJ4dc0DFLgBWL1+4bgcj4hCameNO/vA0b2mwf7FJ8NT8KzYJ3qsm\nNnzlBSanWm1re1ok+t6wFFyMt5n9WzEOW5X7m2JdCYIkNpBIATW8JruUtb4O\neAm9YKdNgHTN3jg1VdIPtCrF/yli3m+lty2qma3nbOjoArru33NLIUqfDw4u\nftlP42wMK2B/PCDhCWPaYaZIsTtBDTyxJS1UXZsLf40tH5JoiZfRxQ+5dH6g\nYLdQLQzSdl1Eg8wEinQGR7BcLqmvRIAm8hBlL7dRNxBtx0lmuqpGp7YWXv+h\nl9o0\r\n=G/Ow\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnpCzgFCeOCtJhPeX8GYrBXt1M2dBR9II5swZMK2CWNwIgPqyFhUie/IYmJTjK/cglTEhxfTDyBvbIquXAbgX9fvE="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.10_1547485906224_0.32725483198230454"},"_hasShrinkwrap":false},"2.0.0-beta.11":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0-beta.11","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"88577b1fd50671e91423c22cbaeed188612fdf41","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0-beta.11","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-hk33cjQHdGG/Fq+QtyXnxL9tgCmRALTz0xHdPU88lSXnvxlsMzHatVyRQS5U7ODiPlh5r+qVbvlT6deg1dcsaA==","shasum":"0eada1cea5c97fe9828494febc9a84c4a2bc600c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0-beta.11.tgz","fileCount":4416,"unpackedSize":84230421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPfy7CRA9TVsSAnZWagAADxEP/19i9vqqcg84rKF1S6rH\nBjTbzLoVAYlgHh4nn/JjLnKQS/edsxwnl8nCvHiR3Uqy9fa4gbEPuPm1F9lD\nuqo7ga2053/hVFa18DWRQu79k+aUEDN5jxS5+Ro30ORhvTrBAkFtSRcPax94\nyq6ZUkM8ftG9UqLaYgzYYmP1VxodkMQX8cV6U9hbaEWJDeIFGydM9Jyzyqfm\nxr8sxg9H97EX6IDJaB+9bA2pPNdAG3c73peJ9IYkoK6ni4218CEKFuhKbEEi\nl8MFSnDxW+UC+2TG+L9x7qX5wrigEHDx78bZCqhdglokfnGmWBU0WSwJHZY7\nIAvWL7RzvtPjD1vXXLy1+SZ2BTkmyfhNR21mj8VzBT/0rlzlPudt8cEtb2Wi\nDzoRgFgYf3WAXHL9Ts+twRuKlTDn1XQCEJat4j5Id6soPhmalPE050W6mzJh\nkNy1Cg5tpEkvQfaH2eyIt0HCYrX6QV4qQLEIDJmXRKsaGI+sbklYXbQPwIY9\nFzx777D7FFOPTCPUGy2WeoDgA5azkvpIkGHXsKvCLb1JpKwPDm7PndtPlCMD\nWGeeYWQuJBmWW7AUoLDm/Wj82hW8xcdX07DftAslLKFDFsd1sJlJ6ncpPDdB\n6FbbpEzH9axjpU7k+HQ9LShZ7HtPX4tqLlSYXp/2hnMrP8FbnaacgKLX+ZAT\n+yoL\r\n=a2xl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjPR2FiPZtUC7JR+iG8aAzuRZkqwUBWEbLLboPw+siTwIgBQY+D5aZL9ny32pEZu6JLH1aXNbIhR2IJfhw3BjONt8="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0-beta.11_1547566266188_0.538699809785125"},"_hasShrinkwrap":false},"2.0.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rm -fr ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"7e48352cc88d7714aede790b0c60bc1a80470d83","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-sbqMOyID+0eyDJpDXcSiwBjuFo05Li7vL9xYBhJO1NzoaKRMtAJY0tsM3DtPRDTxNethtqqukqcLehA9KLBZNg==","shasum":"4a6cf66569d4b90d6894b04a70f7c577bce986e9","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.0.tgz","fileCount":4417,"unpackedSize":84232077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP0NUCRA9TVsSAnZWagAALTsP/0SBxZWA4vrOCNeROtbA\nw1leqnQcLJH7Gbuv/+Rxarh67x25ufWhzOL0c5sjUEb/Q2XPLCfvq3Ju+lPC\nOpSUrYa546IFRfam9UW3eKltE4hqLIVIKvkD0eyXS+Ji094T5AAzwhoPGWpK\nlFhgra1gWHcEY8uZVTy9H3zh4RfLqI33yt+vcDSGzaftRM+ezA4nRBy9srhX\noDNwCKR9Jb2eWUkub/k06myDaZx6UXuPtCDSc361LZDKtYS5bRyTKL1MoAEp\nP7JqXnHkdUFGB18kv8xI5QaKNZ6ZGjXiaR8q5S0hf2BBUugqH5+BMFB/Mz7Q\ngqXcsFQbWbX7pMcfV++RHSF/WbNLAI2OSnQv3rP1mV1HaMPdtHQ9X1gfR5FC\nVvNvgYs54Sl2OquBUq1CgevaBcPZuYqESTYHImXChcFx+fvYoH6eAJiSbWQR\nIPZHNcM29USDkQEWxSQDAY6EFn6IBMJrBG6sbSAS8ydu6r7jyCXc16kRQO64\np7yFKsNLZFbdor69ws4pek48M6iJKaKqyvuH+DLCMNKvS6TmXxWxSAfSOgf4\nfsN0kWEt2l1hGu7+I8de8iQ/LsFzssktOhzD9Pr0L7lKCOiobQNSHQSi/kQv\nhSIzW+mgY7RuTz0+zF78IerZBj+J1DONgVBw4iTlYxBVFB4fIXq61fL9LnVa\n55Ha\r\n=deG/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfKwflArdHX4SQk5y/Y9r3uDIouEy//L+WKgcvIwl4/AIgebw2Q01JbbD8YYQWV9FPBEz+aCpJfM5YSUvLuLSbQwM="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.0_1547649874548_0.48984981878491696"},"_hasShrinkwrap":false},"2.0.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"2d23e3fba52353f3f9bc5fd7b2ffe46c7758ee8f","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.1","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-r90mH2y0Jb6DgE1gfhkflmedTLiloe8VeNvtXAVlzHH3PYbCJ1TvwMFC5fOiqBp2PaqD9tPo8BNGmREOiTuNqg==","shasum":"4d8228db3c16fc10a9201ad77a8e92087cb06f26","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.1.tgz","fileCount":4422,"unpackedSize":84286428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcR0ThCRA9TVsSAnZWagAALucP/jnQYmv6LUckahhDdYiq\nuEMXf603IbE/c7M+56akjBHc7jPfekiY7d7foGm5MbLzu0J3Hyr3D23yDaVZ\n9f+/5vWrXeIHU8qkUT2W0TPmz1OFfmh1WYJEDc/iXp5M80DqfqAlgECul3OZ\n1bdYvGIJdbzol/OWPXefPUvVAreTVr/YiMrYY/brVdDzrGLMgtYBo0Onf0pj\nBKKbM63/nZWkIUPFuziKi5je0SP57JtbVZcE43WMDIXa1fgTV1YSxJS05Uo/\nlQIFAz98pHHvMwzAfdyOVDE8Ek2zZoDxlWy9TVtHJTrV5xKV3k9BTVYOmBpv\nr+MjSXw9rSHl654oH2BiRdn8Yk9T/vCWaxCOLKG7E+5JQWJX4GmZ311UoHPn\nTK9NVkgfi5y+oQ67rIzWKDteLeneij/56sgv38ek12mbEK/pec0a5bs/6s+f\nI38OgTgisQdIgY2VVhWQorsYZpJ6j2EYVWZvXxcEuiTj6LWdYhqVwgJV21pn\n9wKE6x8oKqq+d5nERWax44wqTV35qpvWBIkO8DmgjyKMFIHCy1Yqsw1Etvk0\nTDq4jS4bNK5q+EnAxcxAYHCLvAAXA8GVvRs915BUCStOKezjrrxAdorMgnFp\nrZXl13HD4w4VB5IBGZc+47cqrDpa0wqHr6/7cKMgFmMOMBuwNZCUGp0VJdn8\nzcto\r\n=WUy6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPM0O7I/T/a+ZTCPMq/bikW4YhdzT3AI+ajfq8TJYovAiEA8lTTbIPxcCf79rsjf7S1iYXye3ddZgT9+A1Dfr6zSTM="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.1_1548174559413_0.1429566880035691"},"_hasShrinkwrap":false},"2.0.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.0","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"dbbbaebb00a00d6ad7188e51f1623283d2ad4625","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.2","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-SrjZeS94QvsPREsMRZcNCqXwBUAF81NTKcMo874BDSCkvLrFMDm3CcBIbJJ3p3gb6dR5wulXjZbD/XCsBf0Npg==","shasum":"d358dc5be7281d0d82c5e685b4a730163a6791a2","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.2.tgz","fileCount":4437,"unpackedSize":84294500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSGk6CRA9TVsSAnZWagAAhA8QAJnhZHoFKDlt5EXrdcVw\nd2hTuMR677Qjx+P0qX4j7iyHsBxb3k054yptbVzsLz0AN7SDizfqIyahWKqc\nNtEn1SohWas8dtEcAxwW4O35ucrZjds2tKhKK2c3ImJqK1u828RYpCInI/a5\niRiE5dFjXQyMWQlQG3xWeXzfJpWyA8fhMy38rku0qqQrQJgzCwJUBl2AWEMq\n5eBx+A5cdtUQOaRsTtWtNFJ5qTPlYDkqJm80DW8i1Zoom8o08V/Ob+er3W/U\nR2dRiaHxbuIX32tBr8h6ggeuAMpHciaQdJlaqP2ifi6N2mPQ0Hp4L6CGi6ZN\n/iB1+ixbn1eeUMiOFaelCUEn778ZkRTDnSLF6qXcQ/ZkcHHP8MIGdc8CrLow\nLQrVJjvS/hkkfRzakNRhKizRPrIgNc5p6pNeB+vNiuD4Lim6NAsvYPLbFKQV\nEDw5nPkbCyWD6b8qBrSBOC/TqgBVBhEIoQT1Sn8ACgvOJOBq+4zTMTkxCVEt\n+4Ymq0yfaAS3h8ftIj/O65JdY7RtCfyPXRc49mHuXXXrO/IcCOgQcDXHe/bv\no5zRVSDQlcA5MhA94Wqxdcrv1HTrXeCbmilP0N4/XpQwRO9BkfYpXxGN8IvO\noWNNB1TGFlNzYxc4gsICQ4siC1lCXpwF9yqdS6IMHBIk92NK3QEdnv9JDtV3\nwTn4\r\n=yaqm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAuoUJ4SyQccSDyU+R+Alvlco0BfZkAFSI94vvd8XyV4AiBeGdh6+j0jTqXbEgD0zZMxqRd+m9JaL3YpDLnOtjAADA=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.2_1548249400749_0.03603474768190562"},"_hasShrinkwrap":false},"2.0.3":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"04eebb6d44901b04ae98531e6180701345fcd6b6","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.3","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-8IpRUr6gHa9TRrAdYKmMue3dGpGaoqyqfC1+vsFVKax73hJPHQ0Owb0WzmUA3gVFweAhW3Huf6L6nTVP4sDf+w==","shasum":"957d95eed9210e143bca4826e1eb16d5917ed6c9","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.3.tgz","fileCount":4456,"unpackedSize":84293888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTuo2CRA9TVsSAnZWagAApq0P/AuvoMqlTgAnDyDZ1Clo\n1uX7JAYYpc0gNFQum1HeIPyDvdej3cUt3xFvWa2evU21toCrTwe+2zMkV/ma\nnm9t8vWegjE3Ug7iS0wtmTC4dgBjZGfXqsERJ+tDySqpQauSLtt9K/HXTW2e\nx5yLQGSuWk4nQeJY71Voi6xs5er9lrpxu4PICKU/e9tUO/x1MlM84PL5+5X8\n0tNypKNDizzE3A0dv3dQlgMtW2Ua7tx/ySt8PnJoObAqaLdQec380tgYsPLU\nCljj53RYTWhWfnAWFA+RQWsptbNGNm3+cCDYdH6LEVgQqLhkFWI9o8/kWmPD\nzjZROMUJCHl+UTBhVfqvp2ns++2RnCfJ8eySVxaXJf1ZzMVlXNnmYaW22o8G\nQHTvb11Tlhmw9Iyj2NVfMHguFtNeI1nZyRvVJayGIIAi9MSQhDMUb+v3Y0FG\naMyGyrebIjy3AV7yPYdk+mXFza5YRHkBdya6T0Q5bmPBsXHAaUaKmT0K8pVc\n4NQEPU/TvfJ2LRgjQd0Z1EnOh99YBJAgMYoXXOIeGT59jRpLYH7gG+f9odCJ\n8no+uP5ArK1pgDYA+PscuXtX7Spt+6x52Lf0xZvmxMAZdwN7y95bLQAG2IV8\nG3aoNhOA1kzXO9/0/lQS3BMdd8+Zi0RCQon3wPMF1feAXXwKagkGim1PGBSZ\nTApi\r\n=9fib\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDc/ITMRFgIbtCepfx5xs9j9p5PlSQgWT3tjLV5Nv2FqAIgFZ8TQ/e9wuY+rOM23GmhNV0RatOdItIwZyeYDu6zoNI="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.3_1548675637453_0.5278229882624832"},"_hasShrinkwrap":false},"2.0.4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"resolutions":{"web3":"1.0.0-beta.37"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"65a786fa0750f05061942483973a4ba237ac20c3","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.4","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-BITM/eAwlkM5gjpHiExBuduBgWvGUyrmr9vfGSKCAJviQ1m0U+AvsGGsU42zsTm+Cce7sPG2Mj+kU1UhagAYhQ==","shasum":"ed51726c1970047bc212bf209f432bf5d3e295d3","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.4.tgz","fileCount":4457,"unpackedSize":84306606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWw8bCRA9TVsSAnZWagAACRwP/3LPINw6v9wZqGKetE5T\ncYvkGfhGmyWRfElrVIxOS4BD9Jz/JqNm2931Ae8C/vDWbt8EKXzmTsrYhdZr\nQnXLt9zDJ3H1GmhO+mlnJoIkgI6ih5JxE+8r0zudNGC/akMtPA4puYLfkP1c\ncP/CyVdhA2ORKoYzK4inR2Q0QsE0dkBMqc846crYczVHDnvcu5LIRyB/eT2e\nWQSeChZfdbKhdBW0PxETmDrvnDSUcXzIMSMwyM1fe8MFvvkypWklPxdsBrn7\nFCGQziXLA+l7gqCjIUHAVLAatxZtPjW4w1EwyAkkdR4tyjNOGpiBlhbG8jSW\ny3HzqF6OYR5imX3NU412RP9FaZ/j7F0/AGFzkW61uPOC67NfSqf6by9S2AQk\nnCTItoyuq1F0LMVJdBtrsQfaXy5Rb8ceew17lCIH4Fbdo2pIs6eSMyiciJN1\nouFgD9CFgfWSZxVaPu89ZUCdECNxFx7/5PCOFii0FpufQ4jAsU95KFb0F+L4\nYnz6mSXEIEMzV8WKc6bDIKA2p7dbpC1SOn5SnLzNtir3JX7BjL+49oJlnPYf\nxPpDBY1In2YJ+r0SSzH/Oj1N5HGz1unH95/r4D45/2k3yHmaGVKzzr+OB5Lv\npEcnQZzQKvq8KZG5oTjWNqhpVgfZ7GPh2/ZHL4ujv3urvzmzcaRbz3Xyw9Cx\nQRfL\r\n=RF6O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBFzKMgSseyjczf/977GjZ+ieJKHLCvZMrskBhVQWC3BAiEA0D2OOFqPDUGbwc/hmJAVAic2zqiISW40WfyBeJbvJr8="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.4_1549471513655_0.7340244914093463"},"_hasShrinkwrap":false},"2.0.5":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.5","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports-fs":"^0.3.2","@resolver-engine/imports":"^0.3.2","ethers":"^4.0.0","ganache-core":"2.2.1","solc":"^0.5.1"},"resolutions":{"web3":"1.0.0-beta.37"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"87549c869667f5b11ebfd9478ccbeb85ba7d7248","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.5","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-6g1YOkwtrRxGYnnfMHsQOFuTCftsLmdpjo7Ur/U08Dvj4QKJfZzg94PPJ8KHdrBxBCDKpY+R8XXtZJ0JqU28cQ==","shasum":"55c0142672193f3aa20f226d2b5b61782cde9d12","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.5.tgz","fileCount":4454,"unpackedSize":84298374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZZgdCRA9TVsSAnZWagAAfY8P/ihIbPGvUmx7QpMthbbH\npsafEUcv2thSf3T90r9/iL6nbRSm75hftvwFqAdCpa6vRCjUORgf6eLzp3wU\nX79TPWkXBEGcs5sJWSScmVJO3UVt7dL5EbtGSm1Qe8i+/iuVzqyUWzGK+23q\nV/yAg98iMFnSvm0thg3nYmILx04X1dUEtTWkS5rjaVj0PDxtqVRUpegh9UGI\nLVBuLg+5xZy2RGVA+BPlXeeEEh96EiqlYTYLoaWoJShKqu4d02Ee2Le1ITQa\n3gNoE/pVYaDL3QUM9uWc9b5HDJ68W3UJOz1fFbw2uKWEjJie5pQxWR2lXMb1\nXjXJtaANASaBV/K+8QM/x1Umkrjo/V5qCi0/T7xTb1JgQXu0Hue8c1mhX+o8\nWjfIF/aSP+le33QtmuGHzLqyKzeW9WYEAckBBwzS1fVtanycGXpIPmXLnOQK\n7bvPqjMAmfGiVnnWX6OSUpOa7cB81iL+K2RwmInxrBfOiA+KZoZ7mHlmXSCB\nhl0T1twozfBJyo07cI4v4QW+kv+OPBHDjSAzlMSsknIzEk4L7TfSBsu2b8bd\nKwbNIsscOUj2K+2bwkwvJ4UmMWc08Vn9CoefkS6oKmGPbjABgz37+jR1gmo1\n5UMQ7OPgr0GNMentGBZnGw8XbSm+x+aw6gXC0ry4/eZKdv7Rvd/j5KJ58RUS\n/Cgx\r\n=GnsU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAfwVHOM/HxR4zXertt/uWMCxcIcF5kaFxTfvCmSEGu4AiBpVvCdbbERjyQ2YRPomiGeVvGLzs5U7TYlQJlaZMW03Q=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.5_1550161948193_0.6957304246747094"},"_hasShrinkwrap":false},"2.0.6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports-fs":"^0.3.2","@resolver-engine/imports":"^0.3.2","ethers":"^4.0.0","ganache-core":"2.4.0","solc":"^0.5.1"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"d3b6b24eb841acce4b5f91828ce63833dfa50883","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.6","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-D/g1vyLBvwEM2oZEfehPn5eEDBYQ4QgqmxT6rNdRE0A+0iONAcY3xc4wmku7gShk/P5xMpSeiIr3997XndcAKw==","shasum":"a7c46b5a7b1dda1f84a75f50241a1325a0367abe","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.6.tgz","fileCount":4448,"unpackedSize":84266118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbTF2CRA9TVsSAnZWagAAO6oP/1KkB064ZPbr8Mrsp7Qn\n+QxJhhku1U2UqriDnt0aLFIrOCRnwWMsTK7jyexaSzTow+XnYLCxcuE6/gpI\nd+Q71Im0zk4HYR4MLi/lhayxcf7LwCVQXs7kk30gVb6Nx4XLzw5Y5MX7g1KJ\nBH7m6cIdlkjD+USgaAmpHxda8y1lrHVipVrpPw5V2qB9Xi1gd3MDTKVsNXzY\nTeTT73PdjPs8UXswdmsRuwOt4cFE06LAY774PKGM/cBBCeRU74fnM2ifHGgk\njHH6HYl8jVbWttm2kGoIm+1xU/GNqrwCWGLjfqyiFQVSpegCCDfG9B5N1zHo\nvlwYKJdbwvwimmTh4T8VoW3FpQkjLzWBROVzFe4qZNoNDnhwjvI/zF8Hokpy\nwz8LhkCBn6fWR9wb0S+aPtBPtOtvN5MFIAEjWj57O0+928+LWFGqvm1187oA\nz+f/U33v0TgoV989fDojanOm2p4sHS98FDqxt1jPUFiucXmbKCDa0otv76yR\nzCqE6bHWrXMf1e8HcqH6XgYBc40W1tg41JhEu5LiF4TtmIqp4Qb42Ixf8L3h\n2NP+R/12PSMd4DCV/66/9QkaEKysw2LKCGLLBSdyXVwrkTu+u+JKJdBZ7oav\nzeeEguB+1gIYX1Qjmi4jj+MIVhRpag0Ss6gVNrOZj1i9RA3NdSkp2vHh82j+\nwvft\r\n=JG7d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHtSHupBY1UYOU6CIbywjV66iH+AbTXpU4QHeOjSOfnYAiBkp4+VTbYnmVyMaKezt+j3BIHDDjVe9PvOi5Sd+troYg=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.6_1550659957157_0.6212253104746503"},"_hasShrinkwrap":false},"2.0.7":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.7","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports-fs":"^0.3.2","@resolver-engine/imports":"^0.3.2","ethers":"^4.0.0","ganache-core":"2.4.0","solc":"^0.5.1"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"ccf341394bd521e80879d03dd66d221765443dd3","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.7","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-/wuagm5jAdL1S34P0brYMed/wmzPgIXeyfM7EGWeW6Yoo/Z/+af48z8DUi2250tyLE7TUESf7XfsRgrIBagVug==","shasum":"1b8dbe3bb101c343d3577da600011ebda8ff5791","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.7.tgz","fileCount":4462,"unpackedSize":84309637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcdBCWCRA9TVsSAnZWagAA6ncP/0SlEUT9ZiENLXigmceE\ngdxQmm7dZTWWSYDNsQkSrwoY8kdnirQK5xAWJERWXF6SxATQCDJmuk2ogRgL\nEXEs0IfExVQ4+f/ZQLWKfbvlq128GvZweehYV0L1zE4gUkOAHX2ZCWUi9c1v\nFTBtSYXrIfr92cpZIfCCo/xvHN9U2rf1/+5GLtqLPS09V7VmHIF/ku6YEJx8\nlBGV7nQfO7YaUVBEUjNF+gsdr118EJLwyXQSAJq72vWAZ8hazxqKyxonK762\n4Wj7zBgxNjeLg6yvWwE7buPLLn7+qnbRF34mxyIiNyMF+5gpCbYIZUW57WYF\n1eijF5oc1Ga+TEXO1HV2meQNREpAOVNjupa/QGHWK7T6EzBKqubUe5KrApc+\n3x0H5G2kx90oWKg4ROMs5bFrUwjVs7JxBGuJiCZ1ikxXHwgxxfZTR4/0zvKt\nyRzfMBOY9WVL93uPIjaCKd4U3ADDgkvgd/3ASR9CB6WVq+m5Wgs1vpTYZmMQ\nc0bF74SuCPnCn68wcVpURblk9WlqeOQRJso5DIdgBNM3uu5m1oXQyww1b1AY\nZfeaWuVx+7z2eCYTNW7XxniLHWiiwqlrJjEhY7mZcc+jf8oeSMtWXlSlt3cx\naY0JOvkSWQoH8z9rZfmbda499z9kPwtHFbo5mldDIbeY/2NpugipaFZN2mPL\nmYt3\r\n=7M8P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNSJ9okJK0Z8bOrKWeAtaiTnCJfN6Kd9gVIElyRPCTwgIhAKx9ON5pniG4ez07/RR1h0VJ92shi5+xcGjoDikYs58Q"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.7_1551110293065_0.21730406055696783"},"_hasShrinkwrap":false},"2.0.8":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.8","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports-fs":"^0.3.2","@resolver-engine/imports":"^0.3.2","ethers":"^4.0.0","ganache-core":"2.4.0","solc":"^0.5.1"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"282805389587a919937f2deec4c003d7a85e987a","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.8","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-ar8Cs2/DTdIO8LgGYb+YFdirSZ3Md9pp2NFpXT1/40NtBsNu80yRFQFSqM12sLmWR3LjzVXeyAJhmBkYAvf5xQ==","shasum":"266e0ae8b14ca71e8d4840e61274efac69f81480","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.8.tgz","fileCount":155,"unpackedSize":458930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpbSoCRA9TVsSAnZWagAA/00P/iaK3oaYOiYQL13PHCjq\nRHe20O5cGTNrf2vHY6GYuGy7OhK9yC3HvGMjcbv8LXroYy1WdMZVLcSqwopj\ncgXOeNc3NfSWkA8Ya1Wu1L/x8Ufqoj12COPHHcXEnoZq3bYELx3NfGlGOFIF\nbXmpX1k8VjFGlTtRxNgGGybx4wEbgD0BI5sNYPPEexZKJaKGhaw4Bb78wJ05\n751xS4DsUiwUaZwcvoICm09Uh8Qc2yviW5rIhsPL3l5BQLrc0LmjH1RUwceT\nRBjSpZ334Ycr1DjLlW/Dd1XlAvOxX/02aPJ2GIJtfdnirURjE2bSmhtCVWBQ\nfe2KtdGq8FrnbgGGpqvYCUpW43GQ0TjjrGOy5ChGxZYzRi97WFT5qEDuUqMW\n5pv4Rw0oM3KSW7OtX67cPgQpiCCW9DtTDAZnb+MrCV20egjnFEPL3O7rPWgs\nYX6M/ECbDuySAS3rlugHsEbhoypgDtF2heuIhIVMEqL9M4aDnj9s396q6OCa\nsTywl+fb761T4UGCUxkbi9gXFqBh1VQBNDx23qWkhpOKU+9vPfO/Kmh6pu6I\nhIP5a4AQHv1ve//+VSLX1J3H8v/zzlV3ndkszSacAF14IhpLnYH93CFHYo2s\n48Vs8C8tAy28uOH/XHAh0Kj2sALWJiIuYdoNoDI2/JgYFPAbKwJoAoU6QGaS\nPq6/\r\n=nVQS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEpshMcztFtKhUDKQxNjYZt3DMdwiFbW6Fyst6ODwroDAiBBsCbDQXaFNyIReBwaMTpBs0Y3gUoPSIb45Urv+3mSjA=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.8_1554363559915_0.8090199354245562"},"_hasShrinkwrap":false},"2.0.9":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.9","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports-fs":"^0.3.2","@resolver-engine/imports":"^0.3.2","ethers":"^4.0.0","ganache-core":"2.4.0","solc":"^0.5.1"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"7bb1148e6b8fca21daff6760de321f2b06653e8c","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.9","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-oHAb/3IQ539JA/BiGv+BYF2nCJ2dH9QFuBdELOp7JaqplnNtmSeqgnfbWpQ4jDIqiIFKJwI5/VeNbQCVX8ndHQ==","shasum":"cda1bd6ceea3eb868cb0e0f00b0a2a51747ad6d7","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.9.tgz","fileCount":157,"unpackedSize":464303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpg7WCRA9TVsSAnZWagAAgMIQAIc1SK6BnINa4hEf/Vam\nImcAdbeS7/O3ZDqvR18/C87W0ZYsmfJcwCgRcXJqGsUbUTJofiE0qLMQEMlM\nf+PBi2/ZpAjnumVPhEPFN8P1XP2/942XpEC5u3QxY4pI5MOctVvUgXMSO2+1\nQBQVX/wPa6N05b//6M49p2/Nv8MJOT+jCt37u8CxjZufS5/Hdth9dHdlGWom\napdAqlj0hOu1kPXkocbjx0Vs7PiiHGZ9DQE2aiMxUItd+C6Z0lnttFkxDtgv\n4PDjgJIHeZ6Fl+T6SpkyMRguEXMgKZAsv0udnxJt3preuryuuMPYji3kSiuN\nJlYKFr/UWFhEaYAv+ykLQczeAs279ucS+kcCn9ullfgzEfH8rwvkB+3rl/q9\n9E/1v0U3QHF0e/758JclkKm1xscpn1AIQzCMq83S/SOB4MpnEZwxFg/uMOVx\nUTHW3vmvyqz+SdPoEdlDuztWmBwA/boSurtu61HItprRR2oSGtd1efOLGEaP\n2UCtMBgmhJBcLGpHKp+EEAfliNG5vTEDFYM46YMzsZvZCm/bUdJ6cgoanCUJ\ny6aXdllYOmQcidK4SERrizAwjo6vBC7f5x2iJSbg1yLVpmyNRaNIV6mlpyQC\n9Vef9ejeHiL0hVibYcXlE/HFDpK854dfQnp0gZvekpzpGpvm+82LLEG9fc4u\nrRli\r\n=HQ3n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDa/qvVHjNyuwwhdxd/Z2Qli3Ef7m4w49TyRnxYtA6ucAiEAh73TXU+TzF5Yg/o0VQfv/CuKy6uT6D/VpcNYgpuRwhw="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.9_1554386644900_0.2527084435244302"},"_hasShrinkwrap":false},"2.0.10":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.10","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports-fs":"^0.3.2","@resolver-engine/imports":"^0.3.2","ethers":"^4.0.0","ganache-core":"2.4.0","solc":"^0.5.1"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"ff5c1431dadfe444c7f636b8501a27acf2ed703e","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.10","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-EbO+aoeoNL0Hm81t549bLP7xFtmm/Pqk1xYfgcs/R3w+bbR0QaaANNY8ntwjaueLR0jS1Tiz3WYpQn7jkquo7A==","shasum":"52ef78d88c4cc09fd67dfe7681dcb7f4819e98fc","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.10.tgz","fileCount":159,"unpackedSize":472034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcvxGPCRA9TVsSAnZWagAACMcP/1T+HnnkCX4vwroZVrz2\nPbOHmqZRtdGYoHrUjyUrLsyJPchsfg7wmKoPVkL9f2B/1nVTySXHd9KW0pT7\n3bgLiZxEOpIfRebwW3lApXqNdkK5ttIFhFyNRRfPfPjQQvshfP/AY2qbEzSs\ntkcHJrOJfD0Y2dS/bZDT4NdYtHEcixaCP+3JUCOLbYCwgg0SK5fxarx7g8CZ\nP+HsRGFiAQrmIt74Yh0GPSHInokCYZvaH0YwiLjaIz0Onbh18L3h4i/No6+6\nqVg6stbA2G3O7LfihpE8jK0RTJxcF51evopvPKTIM+Hl8nneveXDe1HHEkPL\nmDZho1sEofDQexYONySb39rjGPgyLDgA1LihdxPjTMIrM0WwbPKNrIYhzLKG\ntpikVS2JYBOiM8CAsz98zARPvH9Xwf2sjsIkCk2Akb5l581jfwTvjuqP68wa\nTy3gUEbbYlrNhvdz1RAZyVsXw9FwURS7P/DeYeq8lSC1c3HQsRFy85302SNn\nGWtcF/ostnEutNzJYvB4uXOe00uQnzwQ6CjcVNMjq0oyxEmEFSnLAqfUQrEV\n1x9Idbr5KobQTODBylbv8BJ14Px0z6fJmwqU1HccvJMjkQ9gR3IMRtENRMcH\nneOTKQZNoFdlZMCaWvM7jBYMOGlTqqBFqNe9o2GlgizvsaaiJWMnBA3NRXq3\nbL/o\r\n=QKz3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHTvqIfn8fXkhBwdEPcU8M6JxQhiwifK+NZbqv5LBro2AiEAn40aN2cdQbpivTTRGz+vYjZ4l0ieZTCdUJXKBoDXay0="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.10_1556025742820_0.3869392561477476"},"_hasShrinkwrap":false},"2.0.11":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.11","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports-fs":"^0.3.2","@resolver-engine/imports":"^0.3.2","ethers":"^4.0.0","ganache-core":"2.5.5","solc":"^0.5.1"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"3f55beb46c4c7362580813685a55b740f2236728","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.11","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-jh5VnY2HB8niRQoD4GaoW3BLdBcnT3u3EELY+vWEh92NEJpLb+5GNcq3q7ArEndzOQCoVBhiIFuGrf42wUsDhg==","shasum":"74c11644c8f97de8496b706374773d849f2dff12","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.11.tgz","fileCount":161,"unpackedSize":473136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwLXbCRA9TVsSAnZWagAA6J8P/3gxImz4o9hkG5I41g44\ngfRng6rgnj0nC6WKcpUhmmcFNUhLPP9y5MdaUwEgJcizlfClEeexTKmVHLIT\nyXnZYoxRyY5o1haA7jBG6nceISrtDHsIN/U4aRpkX8IT186IBpHoCGGDIQRs\nMXM8E3XxcBABZIcaBCZTr1KB+tnfAyg/3lxah+z7LpGmpElNzeSpHeXmkdeO\nyAA6r3kPSsiwQgr+9Cl5evq3QsENv+4Dd8/MYF088Tw6eQerZ24+JsWRvVds\nQ+EjNu9YalA5Mnpqma7Jm6sabFPvg+swmfB8VchBV4jZuxBoTtbncV/H9gJd\ngzGkK70ICGRi6fcuis0595JGGsCFF3pmpmg6ZwUUW/CfN6emPtDzMyydhOAG\nxl3JFpNIu2JYVtWG16Z4nm8WRYY8fei0+CfmGVyDUm5io5bdx0FjpWIXPGhH\n89XSuVlKHCDM2x9xQ8s87HadIbof4AjtA1t3eFD9o1O4JR35skRzq3SoLRhK\nXP0cbRejwLePGpnZEE4QYurd01GFamK19A52pnBwpXJjw4rA4T0wLGymEjhc\ncwfOCSWH0Fqh2lM8Yi1bf7fOw8viWHvfgwRsZSK4IlQ5KEZLJX5x+ZL1FxmJ\nzuIXVuxwHbBaKLEDWXG7L8AtcTMqLXDM5ljQvcwWxxuKc1G73kBPDIcrmVxR\nBmy4\r\n=jrLU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfofFee/pLaOIYOXGSiQf5aFlUqpSsm5tXbDn3T5RWgAIgFwfTGx2WynSN6uA6ugcQcsPT+fNVXeLwlwHCHUu7wWQ="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.11_1556133338666_0.11192947357309957"},"_hasShrinkwrap":false},"2.0.12":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.12","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.2","@resolver-engine/imports-fs":"^0.3.2","ethers":"^4.0.0","ganache-core":"2.5.6-beta.0","solc":"^0.5.1"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.5","@types/sinon":"^7.0.3","@types/sinon-chai":"^3.2.2","chai":"^4.1.2","chai-as-promised":"^7.1.1","chai-string":"~1.4.0","fs-extra":"^7.0.1","mocha":"^5.1.1","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^6.1.5","sinon-chai":"^3.2.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"8a3560c36d2a051e905e53ffa5bbad0bc63a166d","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.12","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-dtSyLoPBMe52l3LzTjOwOkLwMFFWm4+AEGyC2XSPUUF+OdAhBiLF4QlzaTlzizkhbmorEtDhkhlD7a4XpLeIYQ==","shasum":"181a09e16dfbf60aa2417a8cfd5deb3ae16b9049","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.12.tgz","fileCount":162,"unpackedSize":475841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1S+5CRA9TVsSAnZWagAA++oQAIRJN/TJu8zPnDBeiqpa\nscA+/CzZJYfskHBvmiMi1kcoNqovxX7BnEgsfCjxe8cf8FmH+92gEPf6yBJT\nI2DHqqOtuwSidZysq1hnpPBdFghYSTOACru/baCpcG0b+UjMIsSVtQ6WFmPM\ntWpNYzoyiCxj/icJlermcjkVGHyShfN6n8wiJ+TxbKpMpBT616gNTqzJGE1c\nXYDrLMkHYzmzM7CT8r77gX0fOcAI/uY5j5vuDo6DvYKjSo9j+R08QHeNpl4d\nC8lQiC8u4HVIAdEk2+ibTESkpFK01VQYf85O3FqGFbcH+WmLsS9GR3Mm5eek\n8Fd8ftWS+ynAVZcsr+gliyfJSnwIIxsCYuxmpogZ6hAOqCdX1oGW31MN+517\n7X53xvS7V9StCmj+2k8A4WEbNB5VhekmOIQNRLu9DdTpIORarP5MbR92F6f9\n8C3FYrQns646wep2uh/UaptN7ZzbR7pjjBNP/ZBIVnzz9kKS2RWlS8WzwZST\nN7hRW/rPz1Xm3UFeXllQON6u5Rv9djBv8FFj2Zyov4g+U1kFgDI/7dRyOhlg\njNRQg1fmbtHjtKW0y82lBdJXXQ3embyKexwdfO7tlfIbGueQ8js9YBh0jqTk\nhf2kwv72PgEHiG3Zmkm67qYkmXO2+bXU4nnBwGjAmd7E+zJbBfSL9CYbtgk6\nygM7\r\n=bFXA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbssLh165AnHugDna8tEz4DNov6/pyi7J4jB+tmAkBSwIgJxpujfinWr2ZrxyDfJLLwpSGL+fJ12DXrJxN/LqjV5A="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.12_1557475256599_0.7371176109978097"},"_hasShrinkwrap":false},"2.0.13":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.13","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.3","@resolver-engine/imports-fs":"^0.3.3","ethers":"^4.0.0","ganache-core":"^2.5.7","solc":"0.5.1"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.7","@types/sinon":"^7.0.13","@types/sinon-chai":"^3.2.2","chai":"^4.2.0","chai-as-promised":"^7.1.1","chai-string":"^1.5.0","fs-extra":"^7.0.1","mocha":"^6.1.4","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","sinon-chai":"^3.3.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"5adbb3a458b0714c0c2a290313d1870a0728f9aa","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.13","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-hca9K+OnyjgPjeQyP0eWyHawgTCFvVZqxzmwvbLvg1GKizAXSo4TaSFfZWl/UZPGdpI6C655uVwFl4i/pbNXPw==","shasum":"7c76b215e94e2a088924d0b692a4e092182e5cd7","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.13.tgz","fileCount":163,"unpackedSize":494141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLFPOCRA9TVsSAnZWagAAtyUP/jsLU++lTc4MLc/fUdFD\nOE2fqkI2Q5ZfJy78AEqIBTInFMdVQIpowx+zi0PxdmQweElTZYdk7IagD9FO\n+HfBDvfGWo3FMp0MK58rEWXOa5mPHUtD3wIDToQIQf7dd5VK/w6K/MIp/Wlj\nIuxUy0aIyGrHPI3MbJ1Yj+VNDf9Uu4PTTJcyU6tc+jPbr/BSn1f/Sda+nCuV\n+XwcOG9mu9vJ1Euhw0/zx8m3SC4A7dw/pqH2s1tloDEOOer5z5xutKq61Yev\nzTzXOOpnwuZ2VNkYbEGgY8JdwBCHlOa3/TgKRCvjKKhDPAoN73P59j558wfJ\nLWsyWV6zby2pQfutcYnD0KYKmEP18Jter8IrI5a6ixkdRFNmouoNJXG1UF3K\nc/3Q0BnwP0W9nJQhGdJ1vufTdrqP7WEmEoD0QUW0vHpv50oIP0IzGX0XcZ18\nBPVDR3XRl3bBwCNh3+ISDhLyQdoNqF3XbdezThgrLEyX5P49uH0G6i5RycJ9\n6dMmUc5WuqxwePLimrMFlz8+y2lUxXCXpoq9i8v/ehqcJn+O0LXc4jlBphoZ\ndFdXx8+f7gyOIOiMucPrnJag1QlvRrohuVUrDUJjCBBtzNf6ibS0FOCcFdDF\nuyqQnJJA02BrA9r4/Lk+6xIRhEUA+l9PBdGDPxRGHzax14vXzp97ovm7lp3X\nob/6\r\n=NBaM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC9dJPQakNUsAa+KlnYA6P5tmeMbQEhQWU2jQsPus3AoAiAn5Oo29DXhFBsfYIeCqdWDT54pMz7/prf4Exhm5bEsYg=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.13_1563186126291_0.6739281962090675"},"_hasShrinkwrap":false},"2.0.14":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.14","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.3","@resolver-engine/imports-fs":"^0.3.3","ethers":"^4.0.0","ganache-core":"^2.5.7","solc":"0.5.1"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.7","@types/sinon":"^7.0.13","@types/sinon-chai":"^3.2.2","chai":"^4.2.0","chai-as-promised":"^7.1.1","chai-string":"^1.5.0","fs-extra":"^7.0.1","mocha":"^6.1.4","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","sinon-chai":"^3.3.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"0f2ee5eec3201910f643366bb32601d12866cde4","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.14","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-9BvtX5kYpau7e5O0GHSSow4wG69ids1/ewYwtLgLs8O3HUn13P3/GllKRLrIlOXoZCqAIXBqavplhZuTq8QVww==","shasum":"16874f9f289053ed651396940c40b69e786031ab","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.14.tgz","fileCount":172,"unpackedSize":526878,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLXjBCRA9TVsSAnZWagAAa2EQAJxkxsmptp1D9uvBa9Gd\nYUu9oOoYPFpYAyuytyk8axWchyLLUh2lDQfbSg455g5i+rTSoLSer1CVj6FW\noBTzVuQ+ea4ZlsxLQuawm65nE9+4IS9g/bNIBAaOJZx3Lq2Z+uFlGNH43pjQ\nzzJVBaqc5GKMUGTtJLv1AO1/2Fi9VLBglRiNTutwJblc9GTtMZybdX+G05ij\ngEpXjYjUZyrHaB8mW24Zb11+ehcIK4+J0ZBdm5lsgbIDS98VJltH1KN18wUu\nfaURLvBSfTysX6PFwdjmg4E/ZgCxMlTu+/uB4dJ4NwaOswp/tKnsNS/NB8GY\nfx/DTBz0kDuwgNLAvgW9M9DCgGlKFiyN9kHokg61Ql+D16C0YUjM61DBlquw\n4XwnbqFIVEp6gBjGbm/6GsgmZfbgWzlBXs1+T12miEa2lYtqEJUR4Z2e/PZ/\nhH6mEKyjTyoxZ8ZZk8S4kdB8oEkjfuh+v2xoY708w+apJAdhbnqA80Z5EunB\nLRG79TVWHJzc8VFnG6nRcoo/53CoIYWV1pRp5GpTS3VjHSAMh7xk6OG/4AbE\n+7rB+gzST9HD0+z+UyEYhazsKiWLPRwVcTBedogCEjn2C6HtnCjDuB1slc7R\n0owYBLu7dDLTcD8cEHdr2DJ++bii+FVVXubkBNIJ1HRzE12aYn54tKghirKB\nmmlA\r\n=GnQD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCC7DzWHAfIFXC+vi1Yugp7kU7m6p0Xy6203rHcQsWMIwIhAN5CDKJvjviXnTeAcpV7OtKsDGucflDBOQDgXd3aX71p"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.14_1563261120791_0.7358161852324734"},"_hasShrinkwrap":false},"2.0.15":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.15","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.3","@resolver-engine/imports-fs":"^0.3.3","ethers":"^4.0.0","ganache-core":"^2.5.7","solc":"^0.5.10"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.7","@types/sinon":"^7.0.13","@types/sinon-chai":"^3.2.2","chai":"^4.2.0","chai-as-promised":"^7.1.1","chai-string":"^1.5.0","fs-extra":"^7.0.1","mocha":"^6.1.4","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","sinon-chai":"^3.3.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"a3e28c647928e50a526441700a83e066a9316621","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.0.15","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-vlPvihUlLonXwMyK062O6NOKtjNgB6TGqyfVBxb/+MIMKtot+fff4CyoG7jBQhThQHssuLsxMUKYDvdchDScIA==","shasum":"035d64011912c204393ca0b32883a6658dcc4344","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.15.tgz","fileCount":198,"unpackedSize":676568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOa5CCRA9TVsSAnZWagAAvbAP/Ay1Iw2buCVR8tpgqhEL\nGDBwlivZ+9n9VMDGrf/L9BLSScOGSDhqhK80eyTILsLLGlSbh+yIDLyFyKaM\nF/hCZ+x/wx5oVkD/M+fXgM7FhK0QazmIb/JSck5ys3KRwN98RBcvcmZpvnpL\nHeKf8DeEfY0gIvoZlaVE8PmDKey+uSGlegw70VR2+58TE3AmUX0jk5f/IRxx\n7lUkgcq0WpriASZM5EEnFgB9LlKivq4VaCIhoetmF74Y43R9fAkEqE+9Zgh/\nhZFwOFn5t7pO5g1gixYy1kR6f+1plx9MuDCSRrn8FctKWNwk5Ce70evZLRXy\nCndcG17X/Z8vyYFisgGeenJjEKJkDXiX/R6Hyqeg/bVSAS+oj02r7cLEpHP3\njE1xQvs8DEOUEpCNZ34B2+xxYnSU/DWy53oxuXFBTZR+jxRQLWjHBdg/eQw2\nNhobSC8mn1mQyHdef8rGvBTA7iOAFdkwulDNN3enHBMlMXsPvXO0jlaZ0SzS\nOKHmdECRYHmzv/gEjfBbnSSHrfMIBKC/44tFaUgAqaNDdDBPZ0gG8KvdWOxn\nPs29V4Tr8lqwe19CKu9SWXM7D+vZU8AxGY9N/eJVdOKWtfZCGqU+Qz/GPIg7\nI95c96yFOfUZF3yNgKhlI/L4ukx1x/PXpPWeA5bv+QOnHbu8uCkkiwYZkR0I\nYoDw\r\n=4cXr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGq0ltTy2RtM186hpU1MMiSHX5D5kpJvlz8eu+eRhb5nAiA7+97/TgbqiGoqRnAMjBuF7VVeDvREQdEx6I0ubr/VEQ=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.15_1564061249213_0.6611152901907311"},"_hasShrinkwrap":false},"2.0.16":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.0.16","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.3","@resolver-engine/imports-fs":"^0.3.3","ethers":"^4.0.0","ganache-core":"^2.5.7","solc":"^0.5.10"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/ganache-core":"^2.1.2","@types/mocha":"^5.2.7","@types/sinon":"^7.0.13","@types/sinon-chai":"^3.2.2","chai":"^4.2.0","chai-as-promised":"^7.1.1","chai-string":"^1.5.0","fs-extra":"^7.0.1","mocha":"^6.1.4","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","sinon-chai":"^3.3.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"licenseText":"Copyright 2019 Marek Kirejczyk\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@2.0.16","dist":{"shasum":"143507632e6c8145e109ab7439f1da68d8b41450","integrity":"sha512-nOPjI3yfllAZzj7h+PM3mZWO2FNf+AVlT6CCettR2nBv6vWh1qvbgIUsO4+Wy/peazet/ps+bb67PjP/z9jr1A==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.0.16.tgz","fileCount":255,"unpackedSize":451164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXtBZCRA9TVsSAnZWagAA74EQAIAvDU2Bi4DxEbatOYIj\nCsVgtDiblCj6trlvIaCLFF/Vo7lfxOCNp7tLSMdsrvJME7/RBsrKHr/p8F+/\npi9Z3GY5+qIKtG+bv4+rvWaYGSn+bbcFZVLCcW1eiYAyabmdYHR2yvuojW0K\nLBp+DvcEI6EKu5dILWnFitaqPPuNhBr51WGyry0+n+dBLZdFVkSOyjd4H8P3\nukhkHeuflUX85qFJALvOpKFfv+4GlvMWCAtqKT6H+2wK8ojylUDg6nczu6io\n6aTFtcdgWC1qJgfKrKBWmuPJf+xwgrbDAV/cD4lRZJtVfL9y9dzU8afgMiXr\n6JyK6iEihRN9meMvStE34+VTqhiPI/d2lkcgyYVznb4AQWVICsLyYPz27chG\ni44UADrCH4KYsMlwrtZ3pzuOrP2R1N2O5NLQPcyq2+XfRFqi6ct8KxVM0Awb\nxL0NOaOLKc5ahq6w2qk52nAl/Ck0efOm643DfRpwDQpP8y0Bs045yRokFyph\nnUX6X5qao7FVgAZwJCGxGPvhJH6Rxh7Q2nXPLcDoPmkYpnDBXHPzItSgVUps\nnfZi5obOMuYUBoQEdkE7FKMnrKIHYVUTBhlVwL64S/YTGXmueNSyioyEzhOI\nZCKMnBRLE9xf+2OBMGGcZAkipPadop4uQ5FRRKuWTERbxCW1WSPKp3EjRY+K\n/XRs\r\n=PqL5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFspHFwJsm7v+Lrvw7kACXx8knFFwx9wK5N7mvCb6moNAiA+YDTGnLByVOXvwQy7fxs2KGkE4sjiucfO/noCXQcMww=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.0.16_1566494808609_0.2634169637397301"},"_hasShrinkwrap":false},"2.1.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.1.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/waffle.js","types":"dist/waffle.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha -r ts-node/register --timeout 50000 --no-warnings \"test/**/*.{js,ts}\"","test":"yarn test:buildonly && yarn test:nobuild","lint":"tslint \"lib/**/*.ts\" \"test/**/*.ts\"","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.3","@resolver-engine/imports-fs":"^0.3.3","ethers":"^4.0.0","ganache-core":"2.6.1","@types/ganache-core":"^2.1.2","solc":"^0.5.10"},"resolutions":{"web3":"1.0.0-beta.35"},"devDependencies":{"@types/chai":"^4.1.7","@types/chai-as-promised":"^7.1.0","@types/chai-string":"^1.4.1","@types/fs-extra":"^5.0.4","@types/mocha":"^5.2.7","@types/sinon":"^7.0.13","@types/sinon-chai":"^3.2.2","chai":"^4.2.0","chai-as-promised":"^7.1.1","chai-string":"^1.5.0","fs-extra":"^7.0.1","mocha":"^6.1.4","openzeppelin-solidity":"^2.1.1","rimraf":"^2.6.3","sinon":"^7.3.2","sinon-chai":"^3.3.0","solium":"^1.1.8","ts-node":"^7.0.1","tslint":"^5.12.1","typescript":"^3.2.2"},"gitHead":"89c4c6cb5257f71e76f8963a20e3aede5ed62606","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.1.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"dist":{"integrity":"sha512-toDUD0Nhjfse3Ti7I6gW7gvxitIpDCHHUZFPxErzSry8pss428Xz0eTYPtIk2bOjumTCpjH7UqsLki3b8wNCuA==","shasum":"c1ccef575b7e26e43f91cc077189d5840ea47aa6","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.1.0.tgz","fileCount":202,"unpackedSize":771310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdYB07CRA9TVsSAnZWagAAdK8P/R1hzdtxmF/iKnXrRvt6\nt8JD/Q0Vsj3ZtSDYB+ng/Cub1I7gMCuwdQhFwvSFc8yy9vPkCaj9CoJoV2U9\nT9zX8FBCkTlcvY0BqGy1LhZyB8PaMK6z76Wtdp/sydxCN40zC/+ygqZ5vM90\nDkSCmeb7hO02SpEYFyZ33GIp+AyYsvYVT9nVuGQN+iMXKVxSrIxhPkJ56kZC\n96e659IhbE+k01gil3TuRKN1KV+E0qHYtKMEx2022N5pUgx+802A/1ig14un\nzHUOylNMwLV8x4GavZWBzB4Wv2R9tvEQJ6q7jSCiZVgsjsVwHTfXBCuuK07+\nBQVQPodh8/BdJvcrinzxt8Nz/vrZ+8rZKXsxYjK4TLUmqK6F6kejgCMkMkuU\nNOIp19Mmy1vxwsSQXw4SHFDELIYp1ABi1yN89r38BsGqjtH5lU/l62R+MIeG\nleve3rmpNsaSKvMlzbC95QOBXA2w3mUExH7fXFM++1UAz6p18bD9mDKxT9Xe\n3iqqrlHkZyl9e/ElylwAHZGPAe6jV6rd3kQMkNAikpuI4Ipg2qGdz5MN64hS\n1u4ZNDxq6VcDXdSeC7vFWPWuMtFPbeDnJAhDDMGsnbQ4m6WRRehTgQyNQE1y\nSt/jY4Nzb7K3YmnnoRUCIA3GVt+2q7D2WKAcvTV28SoPBi7ECq1RhHQcZ7pL\nIByD\r\n=B5yY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTgTgrcY1tWqSMDpPwRaDuudQGFqWe7Q95/zVj+T9sYgIhALWaua3eDUlVyQuX0E+b0MT87VTQ40yvZMm8DyS25rhK"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.1.0_1566580027020_0.8786784127975793"},"_hasShrinkwrap":false},"2.1.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.1.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{lib,test}/**/*.ts'","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.3","@resolver-engine/imports-fs":"^0.3.3","@types/ganache-core":"^2.7.0","ethers":"^4.0.0","ganache-core":"^2.8.0","mkdirp":"^0.5.1","solc":"^0.5.10"},"resolutions":{"web3":"1.2.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/chai-string":"^1.4.2","@types/fs-extra":"^8.0.1","@types/mkdirp":"^0.5.2","@types/mocha":"^5.2.7","@types/sinon":"^7.5.0","@types/sinon-chai":"^3.2.3","@typescript-eslint/eslint-plugin":"^2.6.1","@typescript-eslint/parser":"^2.6.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","chai-string":"^1.5.0","eslint":"^6.5.1","fs-extra":"^8.1.0","mocha":"^6.2.1","openzeppelin-solidity":"^2.1.1","rimraf":"^3.0.0","sinon":"^7.5.0","sinon-chai":"^3.3.0","solium":"^1.1.8","ts-node":"^8.4.1","typescript":"^3.7.2"},"licenseText":"Copyright 2019 Marek Kirejczyk\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@2.1.1","dist":{"shasum":"ddbd43d1a393a1e04e2fc20aa160444fc18412df","integrity":"sha512-79Yb/KgiKoIRkKVVLqPUdpaHAphW/Y6uF1EuhoxP109VY3zRf0Y7pV5ya9kYq0puLd9PmNUHIBnJLqyfQxp7Ig==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.1.1.tgz","fileCount":269,"unpackedSize":428370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd63wUCRA9TVsSAnZWagAAEm4P/jyDlr88ZRJMo4Lhj+Is\nWykAnI1i6kyi9cgkHD8zYa0Yvs12FK+CqdQUsI8MT4dSxN3FTfF7qoYu13tQ\nqMP8zZgBlVcoJjt0TZHr3Q/RDDDTqpPumPJVuAKp2GS2w/+e9r1DeDK5XPSK\n3+wI/OSO2XV62It/jOCHSPTnozCRHLpgvvps2/VpgVRkbuFiakE3AVFhO8Kb\nxRh/u9L4OvmSAygVhjeg6eRG0Dp2Jeo7f9GKPJ9MlLlJ2Xk/k8O/0Q7VCYdI\nL05Jst3vdCKGJwGUKy7hdJr3PB/RpS7EU6ErJEbn5rKtA4AC3bXoIQNP6mzf\nSDO89ItnlQUYH7Rh5y+ipxX/qne+HR+tcjTxBhVwBIpNFd/WhXRtZlbW5xKb\ngClTC0zqv4+DRtGHZvxqHwu/XuOuBE/xc7k5pIJVadvcnKJ8V5/fTJ8yIdTV\nv6y4gN8IdVodCzioe+S58xxUsIaO3Fb4Mj2FRJiakwb/tCAg/CEduO8L+cNF\nMdJYq49I9GdE/1EeIkuzlZK4S4a5mYJ63OMYx6gmLy/ExxqxQQvE+eOvMegS\nKwwhwRRq6jI50wJOtZOn5GjR7X21jB6osSaHR5rMKJDccxB05FktXMRgCOV2\nyVOWN62asDCyE/PhZpcw4DQ+nFVp1oRgeta8O71ePThcjCNWostkqTzH3eLS\nGb3x\r\n=bGbz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFwT1EQlPbtRsobhP/TKGl/erT6kwxm9B9vksNvTGpnZAiALXwRuEole0wHxqqkdVsxXhPOdEs06Ed1T4gqv0Kfh2Q=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.1.1_1575713811567_0.390726973016009"},"_hasShrinkwrap":false},"2.1.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.1.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn clean && yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{lib,test}/**/*.ts'","lint:fix":"eslint --fix '{lib,test}/**/*.ts'","build":"tsc -p tsconfig.build.json","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.3","@resolver-engine/imports-fs":"^0.3.3","@types/ganache-core":"^2.7.0","ethers":"^4.0.0","ganache-core":"^2.8.0","mkdirp":"^0.5.1","solc":"^0.5.10"},"resolutions":{"web3":"1.2.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/chai-string":"^1.4.2","@types/fs-extra":"^8.0.1","@types/mkdirp":"^0.5.2","@types/mocha":"^5.2.7","@types/sinon":"^7.5.0","@types/sinon-chai":"^3.2.3","@typescript-eslint/eslint-plugin":"^2.6.1","@typescript-eslint/parser":"^2.6.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","chai-string":"^1.5.0","eslint":"^6.5.1","fs-extra":"^8.1.0","mocha":"^6.2.1","openzeppelin-solidity":"^2.1.1","rimraf":"^3.0.0","sinon":"^7.5.0","sinon-chai":"^3.3.0","solium":"^1.1.8","ts-node":"^8.4.1","typescript":"^3.7.2"},"licenseText":"Copyright 2019 Marek Kirejczyk\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@2.1.2","dist":{"shasum":"1ce4ef2a439056e37aed0d07d8ba4c9f699b1103","integrity":"sha512-REdOUNOydNrQU05PFHkNMW0H/m/eQ+3VMatQgE/sTGyWNJ44cMFfpQxjJOdgZVIa1jVE3NTjuTDHVJ8TBDFeQQ==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.1.2.tgz","fileCount":259,"unpackedSize":399844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd84GoCRA9TVsSAnZWagAAYEcP/2G6ohX+fk690OzlSUlD\nNv6hvutS6cNlwlTEZBte68jU39kp6iiKBh0fUXXNyvs261kBwY92UvddMEAd\nb+/4jc3OiN2LKWbJNKAbW5YZCNxNJ1OjrRoI5gdoWJZJIIOWEI3WBq340CtG\nJrQ/FIZGIZB01topQEODWxnIll0bwvT9Hf9yzoXx6bqUzExVMgEWKaa9514R\nmF4xFep4Vu9t2xYE1K1FuKAe9n+4HQ9BbXzdZ5VltxhIqta8ySBl0WGAVx0q\nmJg10DEZkVmiz0oGuaB0IcLNroK9FH6B6mTASYyF2FFU8nbY0q0FlLpHWFTJ\nMkgIh3OVrG7jJUnW6fi8Ib+g/9BzXp5Ee8cVubsR6fGWuRt7aC2y6U6U2xnV\nYECHIVDefi3LjioZwLG/wzybZrYvk8vXJktlMQEAHJ6AS1lfEKV9vyC6h8r7\nviYloKpcz2lHcr7/vfchLJbucAwkBKRtYTgR2Ar7nyb/NjbGkG8gnpOUKc7g\nH8ilDCDNTFliyjbzw8eX9kMneOtOn7E83IJA8007HlRxr2iWQgpj7wvvqgZt\n1GOutIAQt9IUZupFxPm7ZsDgp6jCQAR199uQZHeAOfYg596zegy3QJ20k5g/\nLDTFVv/UXD//wUOZ/Pv9Tg/TsBsneA5HWlfMcdKrFd4QRZ+vqCpL5dpPi0+c\njRBJ\r\n=2v86\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICBnZaUQmM1jD0ozql1w+Ho6pBg4kiwA9CJQzBsJUWVnAiEAmdx33k5DJv4uwWZLdDl9R+7VeT1z4d7xuYBpTpuFidM="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.1.2_1576239527646_0.3393122019301984"},"_hasShrinkwrap":false},"2.2.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.2.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{lib,test}/**/*.ts'","lint:fix":"eslint --fix '{lib,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.3","@resolver-engine/imports-fs":"^0.3.3","@types/ganache-core":"^2.7.0","ethers":"^4.0.0","ganache-core":"^2.8.0","mkdirp":"^0.5.1","solc":"^0.5.10"},"resolutions":{"web3":"1.2.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/chai-string":"^1.4.2","@types/fs-extra":"^8.0.1","@types/mkdirp":"^0.5.2","@types/mocha":"^5.2.7","@types/sinon":"^7.5.0","@types/sinon-chai":"^3.2.3","@typescript-eslint/eslint-plugin":"^2.6.1","@typescript-eslint/parser":"^2.6.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","chai-string":"^1.5.0","eslint":"^6.5.1","fs-extra":"^8.1.0","mocha":"^6.2.1","openzeppelin-solidity":"^2.1.1","rimraf":"^3.0.0","sinon":"^7.5.0","sinon-chai":"^3.3.0","solium":"^1.1.8","ts-node":"^8.4.1","typescript":"^3.7.2"},"gitHead":"36d7469be6fca6bef7740b4f9b1a636c580f7c1c","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.2.0","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-HNWGcIab5hD3gNwieZa5Ggq08Ufa+biFBtNeklRdXmHy3MPtyCfu92vwH7sq0Ij+0GzcqjYEPRn5E30RXp4u8A==","shasum":"14faef4c2304b1e8c979eed6a8f1c69027c31e17","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.2.0.tgz","fileCount":79,"unpackedSize":82357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/NPMCRA9TVsSAnZWagAAkD4P/3LrFzja6tYo5ZyCKAgH\ny8ohC91msH8AgvbQhUjIMlA1GZm8mjPmwFwPbaw7jM2GDHbXgCvMMqDm3d92\nD08nODTAvGHZXUTljziDWUo63wlMZRoCXGTHwTe4BaazSoL/RHtogFR0aLqP\nLmSIuiHZjY996M/Ac0Y26uOSH1rxqa1ncjsmEW5KGpkktZTrG5kPJ1aBTRbc\nocq4gLms6jKHjfDLvQ+uAlSwg3FF5H/dccRFPt8LTZQdAZ1pkStyV8warzZa\nQvdweNoUYpPVG8ZjSoovO1Vf501v7MarcPFeeEbtko1mNdVnHgNII4OHbhQk\nTZfsCTNdr3AB8R7opXzhgCUEKtFvyDqQGEERNSZwh3rAFTglnhW26Bg6IZI3\nUOv0hly1qNbMt9k3+8qHrBc5UubEdt4UhgmjdlcYwWQ5Jzi7VnzDXhOu0M29\neXGmO/ufthoNqSbKfgfHihqONER/4sPArjLo3qNWWZt65PhhAbuTzZZAPA9s\n3okWoS452rZ35PLn1hvrqJ8zx9eVnUKd5KuRin4AYJwPxtJvyamrPEcX0BQM\nz5Q28Ptm81Hg8AhH3jtrdBPUjhmJU8gydJnUQIW09Kted1LbBcYKtNA/bOH9\n9qT1laRzf4Ue14nbI1+FMgDu1n8WCbcWwH6pF+HOl+zB8hFfVhGWccMq4Mcm\nUp/N\r\n=1f40\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD46OeqrHm9qWrBA3pSjKm/R9B7+Z6fwuleTKdoEzoVFAIhAKcyWxjL4+znUvNok8vTQOneW2wjW4gt7E5i8zzCeeH0"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.2.0_1576850379558_0.3394124347652552"},"_hasShrinkwrap":false},"2.3.0-istanbul.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.3.0-istanbul.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node script/buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{lib,test}/**/*.ts'","lint:fix":"eslint --fix '{lib,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/compiler/build ./test/example/build ./test/matchers/build"},"engines":{"node":">=10.0"},"dependencies":{"@resolver-engine/imports":"^0.3.3","@resolver-engine/imports-fs":"^0.3.3","@types/ganache-core":"^2.7.0","ethers":"^4.0.0","ganache-core":"^2.9.0-istanbul.0","mkdirp":"^0.5.1","solc":"^0.5.10"},"resolutions":{"web3":"1.2.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/chai-string":"^1.4.2","@types/fs-extra":"^8.0.1","@types/mkdirp":"^0.5.2","@types/mocha":"^5.2.7","@types/sinon":"^7.5.0","@types/sinon-chai":"^3.2.3","@typescript-eslint/eslint-plugin":"^2.6.1","@typescript-eslint/parser":"^2.6.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","chai-string":"^1.5.0","eslint":"^6.5.1","fs-extra":"^8.1.0","mocha":"^6.2.1","openzeppelin-solidity":"^2.1.1","rimraf":"^3.0.0","sinon":"^7.5.0","sinon-chai":"^3.3.0","solium":"^1.1.8","ts-node":"^8.4.1","typescript":"^3.7.2"},"gitHead":"5f8785f4a6072f871ade5a02d4b25e4bcbf38230","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"homepage":"https://github.com/EthWorks/Waffle#readme","_id":"ethereum-waffle@2.3.0-istanbul.0","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-QSESEzG4UvPmV7rAjZS7p1xWgdxnlcPSreT3jJ884XHY5YiYya8jPPN81mTkovfXVBHE09FlmYCa5c1q3uJ3sQ==","shasum":"67782422d76144e372d9bb8621f8af5c499a4a90","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.3.0-istanbul.0.tgz","fileCount":79,"unpackedSize":82379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/QxECRA9TVsSAnZWagAA7boQAKOWi3xKViwmzaf+USYh\nwUBkJpmijXR81siyQSh4DWEMyXDRmGOOvYsDiSa6IMU5hIs1SxAYxP0voP+O\nF7IertHnEdpx4tgqt/ltyaqSN7uo7IfAXEMLdd6nE6R/N3G4xX3dZhZsRQw8\nODGbthlRiY8R18fgoTTi7ObvhtvGndeNjHHxVavpXmPhbzMIcdwRtkWC8r/+\n5bFBvb/7pM/VlMdfPpgImAUHBmppCyccyh/z6U3WO6oyKGX+qPnal7sWZN6F\nRLcEjT8K/ALkYaViXzZM7ErYbvCgw374IgrJx/sas0EYRRE9BFbmXzTX+TMZ\ncKvsMKkdsOPf3gDXqTQ786ZQqaLTwSMxJRIWHZd55ByWhqianvrGDmkO3/d5\nylQRiQNhQDM3kA9PrrdN/hlnXZQxnVGE50Pf0pR6oAObL+gqGFe978RouprB\nQxU/mBcD6zQU9m+LAwxgI2RwN3w+DbUixXSX3+05vgDWYnCsEs7b/7MaGJv0\nbEG2KurW36KbRUcg1eAt2W+RMwjZPn5lSO1xKyDEOZl3T2TKW7zai2VEwMWM\nJvz4nMNZh1mGXwJ7AHXp3h1P6IqikopZgY/GKolUVeMmZEnnDq1QBSVnCNH/\n796BrBXjRWzJmn3fHbuXFQFyTCZm8X4Dma5VENsxyaBZeq9TIz1/7lLIF/12\nnRRB\r\n=+SNV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICHidtj3k5OU11KhLePp03PJhX2BYOzgRQBKb7U0kSPPAiEAmqKA9zdOGIWeISRRqZRk1pfFrRWEK2TLg6tiDa8tolo="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.3.0-istanbul.0_1576864836414_0.9770136694905973"},"_hasShrinkwrap":false},"2.3.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.3.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/provider":"^2.3.0","@ethereum-waffle/chai":"^2.3.0","@ethereum-waffle/compiler":"^2.3.0","ethers":"^4.0.0"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.6.1","@typescript-eslint/parser":"^2.6.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.5.1","mocha":"^6.2.1","rimraf":"^3.0.0","ts-node":"^8.4.1","typescript":"^3.7.2"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@2.3.0","dist":{"shasum":"20f39160261af7007d785521a74b5bd4e33c17aa","integrity":"sha512-erJKbip+74Efh/C5AL3xOcPhMBDqScFdkuXuv46RLskNf/Wkcf1AhcYcXQxuTMiBGQnSgqnYy7wnXmrbTaQYNA==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.3.0.tgz","fileCount":20,"unpackedSize":9196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeIC16CRA9TVsSAnZWagAAt8gP/3FWnhYDjct1OJtggOe+\ntUTDdZ/7U1d1xWWLitVzg5lpdVNxsThDNr2WwSE30qifRbuNrd5QrZ2avPRU\nlNLeOOZwVnviTzE0T+8s7nEoTk4BY/RgsQmMkG+cpUaaytrtSybJ0wMjbEqj\nhJr6JyvFhuy9FBuFBFErqiyrKLd5IrjTe+LHIzPXy/QMGFq6lop7uFPuqSou\nVHfQty5focX0qrxhitjtZEiJ+VmzeCBuP8PAIEpv5Jgm5XArGPTvdJJI9tiN\n7X41pQ2HYramFznX5sYncJd0x+2LmSshiiHZ5gyeAax7DIpdCbOoA3BUYkUG\n6RaWq1pIxGnKHzcgOASl6M7f2jAfNqVSFl/HoT2H1/IlxFlri5KBQ7Xie4hI\nYRsrjTIf0aafzcUCYBgNccd6yGpmShSgqVw3Fy0l1BPGDOen3TJT6ZtEXYqW\nshr/nf4VZaF6Z+nw/KOlZ73wDBNDUVo6unF68ESDJWF/3aIxzhHjmeg3gbq2\nOO5kney+Whj9IFV9w4O0B0kmSmKtN35N+fDibtRH+iNWNjsbsvio66p8S9fI\nwvQxgIK1fceRYjzWPsBwftZTMxfNM0XYqVZU7W12vgG+bIuLhjzRDaJ8HXKO\ng9UzUCmUN82ZBP+O+CvK8/XwO7966ywKLw1ezNLWK6dHa6kS9M+qdjnYSv5I\nZBbQ\r\n=XOjq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2CiXC1iYPP5pyMthtFktDBJ0JARI7LrFsceRCIg/P8QIhAOZmS6r0cRZseyfGX4pvX3hnQJxXn91B4aDvngcBnXTf"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.3.0_1579167098456_0.3269863814480438"},"_hasShrinkwrap":false},"2.3.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.3.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"./bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/provider":"^2.3.1","@ethereum-waffle/chai":"^2.3.0","@ethereum-waffle/compiler":"^2.3.0","ethers":"^4.0.0"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.6.1","@typescript-eslint/parser":"^2.6.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.5.1","mocha":"^6.2.1","rimraf":"^3.0.0","ts-node":"^8.4.1","typescript":"^3.7.2"},"_id":"ethereum-waffle@2.3.1","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-U33Wz5k9zdps91MjuLmmg2Iy7zEeTbaP0UGhvPAVAK6hoeVeOEAbvcAaTHAd+rIyz0YddOF6pAn9PEw0ZjKmcQ==","shasum":"6739d61e3c0405d82485034e2d31a64e70e1b37a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.3.1.tgz","fileCount":16,"unpackedSize":15371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKBfZCRA9TVsSAnZWagAAXaAP/0QR9G/LZowFYm06Z0sU\n70db4/hZt0rOXUYAgxlEtaTmn27UdFIUwl68+I3S8sqBN4owZszb9zvu42Lu\nAGiZ3r5TACgE2fY7NecTdHfoqJ/jv/yw4Fni5BRHnDV+ty5spT+ebJP0RrPH\nhqtqHQPJE5usylkhhmySMWUmDOqVtKlzA9p7MDkBl/lLTgbS5AWv0BkNWShV\nKDb4b7ZddbV8Gq3vFfP1z+xit36RjhEJo0+Nk1Z9uAziyQdEzXclAR2nOn8C\n1IvKokqvogbptDYzpiWJRom5TPM91GTK1nLzL21DGJthOQ+lMt/mNROnZQf0\nBpViyNKQcAMFPEvTRVonxg/1WfqsUKRYFRgQSIK66Nnin43ZCi+BHI7JSu1P\nS4MXBLX6VNQ3rgsG0gWiPvmAbeKUD+wMPXFhRAMOGrG2NNI0mx/z2+brlSRt\n59d32neb6wf4y6glegC1A96HTiLGETWu2wL6/u+axWjgZNGBwPoGPowuWHqp\nVAt3ybhZbnFiEqwdfxm8hfVDpL169faOwkYYiRPhO1Y0WU14GhVz8b4dngEP\nFdiXVIt7TwkwnAot4GWc/sYgIqqx2LGGq9aHe8O6BoLHooc6YBlM1ZrVxwlf\nS2V671Quim27HcT7RSg1RahjghU4vPrhTJA2zrbmrY866EhQRR0z/Mr35ubw\nmZvU\r\n=bcT6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICmRznE6G2TkPJ8jOhsr++n4fFvKA/PyF0jcqIUEs+2XAiAuC1vj/5mvNiP/ZE5AIHsj0PDvjJ1Lol0UUjJnmlksiw=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.3.1_1579685849209_0.32711976565427126"},"_hasShrinkwrap":false},"2.3.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.3.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/provider":"^2.3.2","@ethereum-waffle/chai":"^2.3.0","@ethereum-waffle/compiler":"^2.3.0","ethers":"^4.0.0"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.6.1","@typescript-eslint/parser":"^2.6.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.5.1","mocha":"^6.2.1","rimraf":"^3.0.0","ts-node":"^8.4.1","typescript":"^3.7.2"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@2.3.2","dist":{"shasum":"494be818c5290252c093bd3c0bad05f3fad37253","integrity":"sha512-rlMahZd/ZfHk+biIQmFJfOdS8MkSChCtO+HIxqrE8qfA1dbyDZn5ivFY5uw9MpkAvGt1QFRR/dns/j0SSV/XxA==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.3.2.tgz","fileCount":21,"unpackedSize":15371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePTUtCRA9TVsSAnZWagAA05kP/2wplVbQt1pbBwmNwPgx\n/LW7GUKR1z584T6YtK8JR+FzrzrCvG+6Z65fLRHZZJHZ7jG6WSS7Xgs0UUKZ\nyr+IGKJH4UZJfPVXcgXfaaK7fOOYsFYMekzOV3AD/TMB7YrKOOXYYvIQIujL\n9avkrPZlxR4wtEhRy3XIA+ohHLQSgI6fT0RDk65AUcDQgGwCfqkl4EHggfL+\nCStJv9yqFfDqY0YIfqweqLAxnY8Ku/dJ9s/eSYrYnOQaA0G5uafZe46zlNxv\n+GxaCI6MKLUBL7ifFb+NmLbFEOxbM7Ii92EJxGWGYu1ISwvpgDeKOaapYXnG\nlc4RGHRJafHqzM94OeliKr5iE0DSXVncLP1X7nxkvhfmP2tHygKSn7XUEspk\nONolWy3BITxArJsnHB5FcWej4OuoybQZTVM0Qvq5zHW8BeDl7twZGA5Ut/jB\nx3+kpRnCvSHZBS66RVASPi8rmkA4pJhjbaM2kNk9n0jWmwxk5N7oSiZkipF3\n48hm2Iea3ucCBwnL7wXc7VZBGVWP6z3KPSWk3SQnQ3v/m+TSDP/WTfCAl2mL\nJprAiFlajFBynZk9yPUYe1muIkiDKLgNteCOK3CAFL0B4HUpfc6aiCUFNcv3\nqd+DdHC74ajuLKBe2QAgc7IDq4Z/z1R5CfmJPH+rvYYaYeqpeh5oZJCQVV1s\noqh7\r\n=Wspk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2YgybZkI0b96RffkE1uwCpFqy2w4J9bNfLqTBBVvv/AIhALXgqz9MBEmmhvgSNhEDvsKhJtkYKUVGfGJy3EtKhqbo"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.3.2_1581069612944_0.4764890385898852"},"_hasShrinkwrap":false},"2.4.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.4.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^2.4.0","@ethereum-waffle/compiler":"^2.4.0","@ethereum-waffle/provider":"^2.4.0","ethers":"^4.0.45"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.6.1","@typescript-eslint/parser":"^2.6.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.5.1","mocha":"^6.2.1","rimraf":"^3.0.0","ts-node":"^8.4.1","typescript":"^3.7.2"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@2.4.0","dist":{"shasum":"e9950076dbee5c16801d670afa8d3098ab4948f2","integrity":"sha512-ub3hG4T6Y0D8CRHuz4JKv31FV3vo71gGnIqjRHM8nc2IEjq1WvR2jmiqCOWt3RyX6iXU+jWBQ8VAWUuKh3HTkQ==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.4.0.tgz","fileCount":21,"unpackedSize":15394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeb3jtCRA9TVsSAnZWagAAN2QP/jFDc04W/dWQBfzCMYL2\n9thFmdEytaTbAp8QWh/PmpQHBDfCp1Z6PKsINKj2U8rDmYgs9OGLrxQO2j4B\nX5qYRXx7Uk4XVGYY8fI8/0CudkfJFdv2yttM1zZNzJhSk0KSJcODyvi6CGR4\nMtl+sdsHcVLvXIm3z4zI1jdGlRQYnoQOe87lgmy4vE5d04XFJvuRYB6JwRJB\nbhNFIRfFeS4mEdubegjsMzBOPAEmgLyEswcp7imCWY0zZRTV2oPQY3fkfo4J\nwufVLfwSgqwYYxcIvIN5UBPd1y1ISf1z16UITNtCf9DkoeqX/lXaHwNuatV3\nkG8ixEXQG5ZHwGO+KcDz04mtT3wsAMxBsBKMWYv0AYOMpCgekGF0u+01/ZvN\naaV2aSlHkhfOROx83sRBQsCmqFrO7yeBRieqY47i5pFN0r7pnCC9HOsrX2ES\nAh/H0ix0nNwaRfdfn1r6LgqM5okMPQAicf+MN1CA8vV4FdeSyQFgltuun507\ndL8xC9Lbh3pxpBtBdF0Ykbglbo0aduqXV7O/wR/j5DK9aP8/95XK45/CHmtv\nZtNEtIex2JRkZOddC2XzTMYl2R2y3lxMdJYKxnTchMIThuFfjaxQvkTtE8bA\nrjGNYd4GpwferRHM2yKwT0CgfnoqFjk4+IOPpHaSL0ixia391KhMQ/yO/XRs\n+Xgo\r\n=geuq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/x3++02v7i51hrJzDRtPWE3KqO/cfZGS2no7X58siRgIhAMKCtzTE2gGyfGHRpsG1YVR0dbFWZjJxbAGRJac0eutN"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.4.0_1584363757029_0.40931932084045775"},"_hasShrinkwrap":false},"2.4.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.4.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^2.4.1","@ethereum-waffle/compiler":"^2.4.1","@ethereum-waffle/provider":"^2.4.1","ethers":"^4.0.45"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.6.1","@typescript-eslint/parser":"^2.6.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.5.1","mocha":"^6.2.1","rimraf":"^3.0.0","ts-node":"^8.4.1","typescript":"^3.7.2"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@2.4.1","dist":{"shasum":"db13376d5d366a0b3e8813cb64956a4682cbe144","integrity":"sha512-52HOubO/V80LDGN+N3FVb6yBq8L5vV2+kP7wjR5AgDoEeQHIrwqumcjJ22tE+FvzR8+eHTh3ItXjQPqJrMp+Mw==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.4.1.tgz","fileCount":21,"unpackedSize":15394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekFjNCRA9TVsSAnZWagAA0hQP/RldA2CFpeGOjsiUjTB8\n9DOvr6b6LoPSzvbiYIueSLSWMD3K/CQQofn6xzTtyefm04rcwzEaD5zsi19L\nn/LuElzhLIOo0nAvVYdQa7xRioRagSkGhAW3jUKpTQrihHAVFGgQFt1eSpqV\nJIJgRqal+pTngyNCPR59k47SpNgNPburY8n5dLAx9AbsKEKY/5CE3zgUGTjW\nBrqFgWqBQ+mjxQUzeH9VXCRs3FK0RVncP0pTG8AOL0xyI2d7w3XRPVX9Dfym\nh5O4grigv6BbzJqD+Oko+F7HtJHnV2rSkA5Es5L3CWyw0D/ypqUh2oJT0ZPA\na76EUlAuIUVh26Elba7JV4o3qY2zVJDuP2DY/N8GTYLALxeG9Vz8IV8Wz+8V\nbEVolyyLrMk/v79CbZLVtlIdIAKVYc/cI0vhBRETawsqy73cc3AgG4tvpcFJ\nNs6Kspwbk/E3kuqmhxFCMF4itO4ZfC/3O9yljpEb+Gif5EHHjo1NEYFySrK7\nnpLGio4CM3h5guSRI0g7ZgBMiLAuSlEDikEyyDJj2Z2963eyyGfAF8qDaufh\noMQqx2Q+C4/DPCrCAnDhAfIqYRapezKl69AVLaEDpdI7ihfZX7Sg1Mz3qKQ4\nols3KtlsBcV+h36suL/QvV+lakocMmODUMFZoExV7lIsposedch83dtursgd\nO2mC\r\n=MaXD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgcdShUHnMUIh8JFVHANjXBSZb2Mtw475ihENo7dyZZwIhALEXXSZsJzeIsAaDW5h3ycOfusUws4lo9lOxb1mgnsCy"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.4.1_1586518221349_0.28211773561916664"},"_hasShrinkwrap":false},"2.5.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.5.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^2.5.0","@ethereum-waffle/compiler":"^2.5.0","@ethereum-waffle/mock-contract":"^2.5.0","@ethereum-waffle/provider":"^2.5.0","ethers":"^4.0.45"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@2.5.0","dist":{"shasum":"41f88a523abacb6c82c7e51798047c7cdf4b94e5","integrity":"sha512-i+CMYD5f9O+e8jL46ZRy29M7eZklWq1GdjPJvZZo6qqSP5oVBG8UxuXESihQOhYGh533wQPXiW+8GdjR3yXzAg==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.5.0.tgz","fileCount":21,"unpackedSize":17438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesXZlCRA9TVsSAnZWagAAeCoP/3whWshDNTCiFi3ItNCX\nKxapDtc2Wdak9h8cQmdPFbKtvlI0VLTYSc1UHwh/gKx6HJsjDvurnR+fn86N\nMJL5u/OuQ7BkvajUYqzTK1ziHfGNqWPOmwgqVBoc1NazVT7ND8vZTX0lTR93\n5UGcs0qrQsOLX50b+Rs4ZI9QV6qhH3A4nJvpuShKr1IPA/7Go4iyP5MiUpq+\ngp0ZhFTbyjOH6W3i3zdkdlIzkajsFAHPRuvCpiQuUpPi6QfhK3DGiHm50u2s\nJAN7BXkayOgooWn9PnN3zFEhJI1RL5vL+CtcFw2YBirKR9ciy/L6V59dyxKc\nFaqZh/5X+kUl6CizGhLYRwpejODjrbsFR6ZMFfoXR8uRHa+pLYF/IvZXO+l1\nDK3Ijl5HIEyf6XRP4t0sQUkw4Z7czM9nImLyyn259KFzZ01s71pl5ycmdcSX\n1A+vaTreDx+mJcSTgZoMM+9YoqVu3pSbkkJ9dX6BbTHcWkJ20cQlKnRLAb8/\nSKmxTEaZUfYpG9kYGYhHssATGtDsq+t79vy9tSdSOsbwAzG5ALebZ0fiz91w\nOrHjdi+XCHxiL9Mtai70/jDDC2LJ4/Ww/242/idhrUmO+aGiKOhywkOIGvTt\nyjd8qhxp8HsiE1OVgycOwr3kuv9cS2ZqvaKFIBG2ltTf7/l9baBNwjX8swbW\nxhvW\r\n=ttE6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIARmbZeh2Vq1pCo9u2tXWX/AM3HnYY2aBNEpp3jPhNbBAiACiCfzFIUrECRXYEJRk4xjzj0luRFEzJAwB/OALPlPHw=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.5.0_1588688485366_0.9791998333463834"},"_hasShrinkwrap":false},"3.0.0-beta.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.0.0-beta.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.0.0-beta.1","@ethereum-waffle/compiler":"^3.0.0-beta.1","@ethereum-waffle/mock-contract":"^3.0.0-beta.1","@ethereum-waffle/provider":"^3.0.0-beta.1","ethers":"^5.0.0-beta.184"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"readmeFilename":"README.md","readme":"[![CircleCI](https://circleci.com/gh/EthWorks/Waffle.svg?style=svg)](https://circleci.com/gh/EthWorks/Waffle)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nLibrary for writing and testing smart contracts.\n\nSweeter, simpler and faster than Truffle.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName).withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm i openzeppelin-solidity -D\n```\n\nor with yarn:\n\n```sh\nyarn add openzeppelin-solidity -D\n```\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\n// contracts/BasicToken.sol\npragma solidity ^0.5.1;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n  constructor(address initialAccount, uint256 initialBalance) public {\n    super._mint(initialAccount, initialBalance);\n  }\n}\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.js` file of your project:\n\n```js\n// test/BasicToken.js\nconst {use, expect} = require('chai');\nconst {MockProvider, deployContract, solidity} = require('ethereum-waffle');\nconst BasicToken = require('../build/BasicToken');\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [wallet.address, 1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\nBuilding documentation (requires Sphinx):\n```sh\ncd docs\nmake html\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.0.0-beta.1","dist":{"shasum":"f2261646d3cc9f1137b5394e189ae13e6950253b","integrity":"sha512-Xo08d6u+UxeIc33wfJ+G5vTNtGp9sDaHBLI86mCraKzFPQMw7rFeQUWwY+TkwVrYZG3MubdSZZoHetXQhnTtsw==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.0.0-beta.1.tgz","fileCount":21,"unpackedSize":17481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesbHkCRA9TVsSAnZWagAAbY0P/0pORJPwvQcOZJwH026j\nkoF6hCcsLqhvgmbfI688VwioMnXs04YQNyFg2X2V4wijm/VRgOropVPDbFUB\nDUzCgXFS7vABbz43It00XPBQvCCAhLyZsyvTgNi2a3NpFc5s+g4C8VRSEk9R\n4QYeZ8PWVQ3jCCMyHn1W1BZqMmKYcawkd7OlHk+A4CtkYeuni2Q/1HFs9IA6\nZu1BhfmipaXdMnU1OihTlVPsmvX522I67BzJ86FYLyJXfxxuZLXZ2f9Wrets\nBzvE07IPZMzOdsxqjOalOarWVEavL3D6KPXH7R/rMYhUHJ4jfxvZNpo57gTK\nAgicylPJjAHEYYkP2Vbs5RvzyUVhrb0XEHqUIQgs9D0zjacExCCo/LOAan6A\nMqw920ufixCS6sPi3zhLaseXlQdBbVZrNaBwYBKtpGFiGh+QXF684ntC1jq6\nszjd1oSOVTr8GBi8fpC8yAk8H2T5+ot3AA5NdY7U0onwBJ+79T2ocOTdL22X\nDNYy4+mGMIJid9ll65IeaI5dTZJ/ZeR/xpHrad3QcKXg6AqoLNL/LlV+osuO\n8UIViB7BhDJ921edf+MrshQh0edj9R6+/snu1xcpcgxr2kmjxm+UI0S2aH3d\nCvWONSqJ0lckZWDhDl04ar1ml3IGVzazxRmYVoR1210yi6QYQvZuk9Mz50Kv\nRtpk\r\n=YMTw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB2y/SMbkUlIdVybhX2Ff5yL/Wyr9wObvygYiWh3eAW8AiEAypyJRJMbGMtp5MsutIMTUPIrii+t4tzNbRCWyHOvwiA="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.0.0-beta.1_1588703715867_0.3966757269440764"},"_hasShrinkwrap":false},"2.5.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"2.5.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^2.5.1","@ethereum-waffle/compiler":"^2.5.1","@ethereum-waffle/mock-contract":"^2.5.1","@ethereum-waffle/provider":"^2.5.1","ethers":"^4.0.45"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@2.5.1","dist":{"shasum":"537325bb5112fae35ee00a0e783343f8a6f6b917","integrity":"sha512-GPumiHpJHN9ONO7owo4mEZJDZzyDRawV3ukBdd+mPCxJkJbe69LTvza1nxcgwMjruXOd9GHaOnE/C2Sb+uGuMA==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.5.1.tgz","fileCount":21,"unpackedSize":17438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexVFLCRA9TVsSAnZWagAA89MP/j7n3sU70a7PAdewZLom\nOY01O2Kc6rUSgo8mY2F6yHkGdDHF4/2yX5bZZkdRecDG/x/IN5oPV+kwgGpL\nwz8hRiBQLxrKGc3LKa6hvsTQqGj7lRbeoFUmb5RDtaqk/Acjn1rTIY2UlQ2G\nTAhG+FeVfnK6k6conLJs2g2Q3MgGOtu+5EaHuOhoV6XLRgT6BSBavxhvxoKc\nwg2UZyN9lklksIxqDRrEU51AKhqkjJAAIlv2kXpN+5IU9+BNo1bDYjK63Ais\no+wR2g2xmCIlduVJdBRusP/WPIpLvSkiHq1kJAsxGyjLwL5nZqj7z/Uyesu+\n6CNdb4l6+x/KA4T8ZFb9DESzzsS1xnsnP7f3aktax58GobBma/vGsuEWr70t\n3HGZBAw35NyBtofxjeju92K9/S49VatLELSF4JlNPpiWLL0lxqPIRAfOA2Mp\nnV855lrIdCFo72tHy5bmkbs1jgaAozXKxHBxesWp92kLiV/tBu9y/MrVTdpT\n4jhnWdPmHm4Y2wg7v8TM46egBz2hByaptUnM/AAm+Cz9yTiy6PziXS0Htywa\niaX2n1GIPn4nh1YjGvGy/bySXM8pUT+taEewaGGjnfgNuQ38f8we6/xbWM+b\nqLp6g6+Dvb57JiG+x2wSKngUAkFTQe3dzO0y9HNguiCOdlUUbrDLv3KSH5ij\niYJC\r\n=DobK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDY10J6faU5uAKjKtbDH6Cp+rOK44iyYY6g30w6vDCukgIhAOqKhySDg2hgYbznjhhwvaXX5W1NjUhyud33PXwbptHb"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_2.5.1_1589989707274_0.7957645038992387"},"_hasShrinkwrap":false},"3.0.0-beta.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.0.0-beta.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.0.0-beta.2","@ethereum-waffle/compiler":"^3.0.0-beta.2","@ethereum-waffle/mock-contract":"^3.0.0-beta.2","@ethereum-waffle/provider":"^3.0.0-beta.2","ethers":"^5.0.0-beta.184"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"readmeFilename":"README.md","readme":"[![CircleCI](https://circleci.com/gh/EthWorks/Waffle.svg?style=svg)](https://circleci.com/gh/EthWorks/Waffle)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nLibrary for writing and testing smart contracts.\n\nSweeter, simpler and faster than Truffle.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName).withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm i openzeppelin-solidity -D\n```\n\nor with yarn:\n\n```sh\nyarn add openzeppelin-solidity -D\n```\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\n// contracts/BasicToken.sol\npragma solidity ^0.5.1;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n  constructor(address initialAccount, uint256 initialBalance) public {\n    super._mint(initialAccount, initialBalance);\n  }\n}\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.js` file of your project:\n\n```js\n// test/BasicToken.js\nconst {use, expect} = require('chai');\nconst {MockProvider, deployContract, solidity} = require('ethereum-waffle');\nconst BasicToken = require('../build/BasicToken');\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [wallet.address, 1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\nBuilding documentation (requires Sphinx):\n```sh\ncd docs\nmake html\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.0.0-beta.2","dist":{"shasum":"9da90fc7bd8ee6b207a64a44028b2a2f38e05469","integrity":"sha512-r1suvitDQtl4faGpkHYqPlyxA511tu00dN2J1Py7ieiYGbDOG6FjvfgPTKbzYVAENxANBdtYHNfObxsllkcqKA==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.0.0-beta.2.tgz","fileCount":21,"unpackedSize":17481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezA0KCRA9TVsSAnZWagAA4/4P/2B2zADDJOC+B96G1onc\ngYDp1saw8hP5g+V/lnGbzBVQOiM8O+2k4Y/7VK68N1xC/vk8JwtTElWl7T1R\nrD8NLSkP7lOxHgdt0PjksRzi/WFsn4o0KYg+W3QAXIE4XIrGrfMDDtysM42z\nkN8V47QA9m8BJLUE+9L1QRf4aBCaOP7tj/XktB/NbfmbymPwynLWdOkbMaqA\nliCxNBCEcuRvPM3zw4dpl92SW+nZLbn5c+BhWN9GfxGYg2UiVKYHiTGJZqxP\nBPKzRGPaJONNiALCscU8Ljf/BltQIxJ23ZJzMwvIRrjkA2wqMUzzw2dvYyo7\nRQsmifM067K0nSrxDHX6GYQS1UgmeybDZLYFEeZxSuS8pYkrSf/fdGtcGN74\nYZPVxvMAAerdcLLLeyzEH4D6Z1QUs5YyLeuBGjj/+ztWD904zwttHHhG7JP7\npCH+ywGlGxsHG6CXm1yexzsT+1aKJGxrhAJQ8lKwonRlgoI91j36EheHYUFD\nKDil+LY2lll24B0jp7a60i+9yXzV7WfEYa1fGWzX/5ahHBpTqU0bMHvPsqC9\nE+6w4aOX5Gos2Nn/YGMScvrn3Ut08E4/ScWBCHAgNRkUgrr81M/kwmu6am2O\nbmkpssQFZ4wu4RT5na3IR7TWBTu0mikJNVzGVTH+CQUnZa+/oYwDaepcbZsQ\nePIv\r\n=f39U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGUmJqFuAI6eLnW78yD2F8BhxYPlTTunpvW/4HTyHkPEAiEAnloK4ngnme6vabKEPIYMV0QQ/dwiRbaQwPX5+mHpuoI="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.0.0-beta.2_1590430985726_0.8189426497760086"},"_hasShrinkwrap":false},"3.0.0-beta.3":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.0.0-beta.3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.0.0-beta.3","@ethereum-waffle/compiler":"^3.0.0-beta.3","@ethereum-waffle/mock-contract":"^3.0.0-beta.3","@ethereum-waffle/provider":"^3.0.0-beta.3","ethers":"^5.0.0-beta.184"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"readmeFilename":"README.md","readme":"[![CircleCI](https://circleci.com/gh/EthWorks/Waffle.svg?style=svg)](https://circleci.com/gh/EthWorks/Waffle)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nLibrary for writing and testing smart contracts.\n\nSweeter, simpler and faster than Truffle.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName).withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n\n###Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.0.0-beta.3","dist":{"shasum":"e55f8906fb2f2ee51c597bf90272eb0102a6be2c","integrity":"sha512-2gJrARaVV2dEXPMMnp9a+CBtwP5Xkqk6ML6ONEja3jtHGeqiHOhNOY8dqRh87OPWoqw6shmPzKEl4jD35u15IA==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.0.0-beta.3.tgz","fileCount":21,"unpackedSize":17613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe428BCRA9TVsSAnZWagAAXcsP/0x3SDWVX/D52boJ55gF\nKt3vtgJqo/TwyjEJLVN5fneW0tpb3qrUsX1P8JAlmd0lCheSvf8cMqmk9EaQ\nRMoWhDD4zd1JJG23Bcy+V2ly0KGK9hkeMLKIQ9IoufWUU2r1mXEHc46r306A\nsuSAgNvYbp6rD3fn8HzJ4D7DSel9vD2/zyxpYCB3FLyKwXB4unKccHvjjQah\nsV+mXwiJ3bUJoAJKL/1Ci/3o8KLRijDP0OKDKj2Bs6khWnYwq/cvWD3Czcsm\n55zktNTwUfBOpmksDTECzKieeermQM2pmAxqhe799idzQVThdRhWqIy9u37U\nxlj8kNXwDXk632VcEvGrxGn7cmwtOf6uLUxB/ObOyxWJt/hWNbiJXSPvf6l0\nNycJcPH8FwUyrsTBg8nhwPaJMeXv0Vam0a1mtIIifIqX5dhyhx3+zpgQwy02\nd0gbGYaBqolGvaxCX6m6ZG0w/kusy0oBTVbE4FLo2SK9+7wUpIdmuc8nXdoN\nwPqyS+IGraSZkNzHg5AfhDAvpfmdAR0L7Jv/Ye0Ty4EUqqQ2EsMnT2LRB7vf\nA/T7l1nbINdZ+HIr6DARogp6cwcfiZ1LxmIModrwZeBdFW7avvj7oHSqt0HR\nlBdn9/8AGGbcE3drZ0PSy9TSDNun0EsoeQAamkbtXMHOVNn0t0w7f/HYUEHW\n3YJv\r\n=CA5E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEpCNSldoKFF+gpzRAbf9TBlVKZXrxX8pGUPZvarW3cVAiEAzvqoSsn1LszEFcaFGGihiqNwOwZ7PtdSZIDzfT8FDaE="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.0.0-beta.3_1591963393094_0.8708666561700806"},"_hasShrinkwrap":false},"3.0.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.0.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.0.0","@ethereum-waffle/compiler":"^3.0.0","@ethereum-waffle/mock-contract":"^3.0.0","@ethereum-waffle/provider":"^3.0.0","ethers":"^5.0.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.0.0","dist":{"shasum":"59e46b8e303eb5decbb5ceebca1ddf378db312d6","integrity":"sha512-r7hQHGs6uuUIcZxcwsxXbntk6XQkdC4HST4lFN493H9Ac9JLnYbaQ3Yp2qeGK7P7BqrDUqGZwylSIT+1odtAmA==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.0.0.tgz","fileCount":21,"unpackedSize":17569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe5G2mCRA9TVsSAnZWagAA7PIP/jmK48j03+cpo/9EmqOZ\ndduPYWHGTSWkwdJ+IfdUng4SFq5eRPfG0AQP4Chgr4EqC4jzy325ZtileFbC\nnwBAQnPo3nb7yyyDr/qTRdg+lJDtjgdP/bzBZgGZGQa/Mpwc9SNpGetWjN7N\nUZzi/resUW8NJ1fw3zdry+LUbbyH0BUQZNjFHAi9Ek9sTGLhkBxQrZMJ/UbT\nfHCFKgDzsmt4JJx6ufjTi4DWhUwJuBI15DIA0YH++45D90z2rD6563pltK7u\nEe0/t2i99lB7j8eqA8rkS6aM3VNDKhPxvhjMMxARj+Wex7GBOkCf6uMlhp5Q\n7aZWjd9c1Snn0dHuZfGFWsWtln+jqZBg6xHdbVPUYkJKc7F3XjYGURwIkWgb\npJNfY0yOURZ9+SFTKd5r3a3Bpg03Og50AQFdxlaD+gRj7aQaAy0jz0szZI7S\nxDKSAYSGp5nAxZISnC+jiWq3YBS5yUr2aMc+A0dGN5waIs4IgIJ+KViIFN0f\np4gnwyA40IxhI3vBBJEBzaiQukftMdHdlF1E4qekA0CTPClgzxZ3Xru8lgJE\nwXAiBLaKvNWUfzNEzzuvFdavsXVQDYMXP7KEj0ar2GTYi5TZLFobXOEPhvPs\nv7RDMjxIEHU1N6dG1aGSizsx/5zKrZvRPk0B4u4lJAt4ltQVIgEZO9mSqc6q\n7Cey\r\n=52Qm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBa/deziuG9EA+MJlXmko+CyMY0o7ln9AcUt7eNxqjkAAiEA3MlkxgWn3XUV6J4CI3+fAwpYskH/JQmqfNSIz2xwDUU="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.0.0_1592028582211_0.10154937031722477"},"_hasShrinkwrap":false},"3.0.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.0.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.0.1","@ethereum-waffle/compiler":"^3.0.1","@ethereum-waffle/mock-contract":"^3.0.1","@ethereum-waffle/provider":"^3.0.1","ethers":"^5.0.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.0.1","dist":{"shasum":"fbc701cc12de8824bc6a42c82cef6ca8d4f214db","integrity":"sha512-FAAiN0VqNF9+yCPLPW9Rtq77dHcx9XwTGDe8s0nko34MeWKRX3EH258zwvmA29IhDmNMsRz7em6a7Zaw4g8hPw==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.0.1.tgz","fileCount":21,"unpackedSize":17564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAapoCRA9TVsSAnZWagAA7PsP/Ry7Fcv64x/FNF2/IIpO\nya1PVdlFBRotjF19FB/Yh9b+48Gi8Jz72q6Lh8E1DBWUkWRFz18ikapaGoBn\nJcnSqZnUjlwX2VVQpMLsA4WY4esVYeJX7O36rTDqDmc8NybDHKuV1QEjppgF\npfT30PBMg/pMv0e03/HNAAFXJxNoXEonDxev5nK8Cxk/ueTlIOxRw5j25OHV\n3dXDxF0NwTFnKZwPI46qiRLMbTfCrwphWdP5XhGrdmZXwD4BKst/zeyT1M1o\n6ocrE+XXF1193c4tteHVtnGPd4xq41yzSMaWdmhxp9PpuRsTUPgOWP8h0pvJ\nDhD+cyJPe6FBA+mbY6gDet99N58yGn38tHED8eASv9n3lHqv2VvsMtOXIXpx\nteq9rANyRNPMxHPZnalVUsbYmupcK4K9Dv9slABpO+jwJy9ny5CrorKNw2wb\nZeMhZSebsUGpUP9fsv2YMuSdcjCnJF4nyiFIHPZwZMIbNnsg0Ixmnpj04Fso\nL7JNnda2KjR7sVMU2TZsnfDoidN79mDUk+cjkm/26NrDYB7/f5U3OxvIjKMf\nGfwdbd4EPvyjwxlrpqxscz6TVTHlQBsdhs+dwtz5Llrm2IFHn6d9Hwmmn2In\nH1lRqRhWh7O/265nlJZtJMmiEJJspd9vWrs+rXI4ISO4DmAEtWXZssJm8Yvd\nxm2J\r\n=Nerr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSlk5r2O5AGSXsWq8XNGHicd38JQWpzxwn7Tn2+l3HMAiBiq4iyS8MxV9ZgnDKnDddqnewy2YrRMYf5GT/A0fnWFg=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.0.1_1593944680466_0.003548581296381803"},"_hasShrinkwrap":false},"3.0.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.0.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.0.2","@ethereum-waffle/compiler":"^3.0.2","@ethereum-waffle/mock-contract":"^3.0.2","@ethereum-waffle/provider":"^3.0.2","ethers":"^5.0.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.0.2","dist":{"shasum":"3d68f04e61dd01d67633e3c93ed15810b7743b88","integrity":"sha512-VJQTL9oBbHIQRxQFuh1NBXoFXSlTIY6DrkPpO7CvevXRI9ixxq01nSc6hPYUIVy7s+U03sp4ply497O6mD3gsQ==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.0.2.tgz","fileCount":21,"unpackedSize":17564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCYICCRA9TVsSAnZWagAA8pkP/16ZYFYWLiabm2JT+gEr\ntTp5tmsthpxs0jYt1ANdid/d8tpviIMBtufctIxIGHovnfR21Cs+HHCsLPp+\n++7ymGewKEX7uNc7MJM3dwdSn6rfb02VA8o0EA2IvB8NW+zfXbeeDJHl2ZYf\n9kcLpWMpta14bqGUy/psk43AOF74OZvZBdEZUDNlsf1Uy+BhuRf7AXRHoSss\nysfTDxj+Tqcsut8MLNsBLn7puNb3Rdf46sVjktiz+EvbtG8YstwJm3FZQdzu\nQ29L75YYZYNwjfSUfVJRw1lCiawsAH5zHOIj5K9EDVT3/xyiHTmQ/m0PNuab\n6Pp5rulnadBLTbXxuTeYYJQNOgfcF8EIfSupCl+A+nYsJlsIjCuC4PdgVswq\n7EDfVO0TajZf2qsnXBQHrrwnn7cWJ0yN9pWXTTg3X9gOFF5QWF1TR05p2lsG\nif22/4R+VI1N2UH2eVZIf84+idqYPc2RHYOOrndPO0NJRJdXFPhK9TMkglU+\n9UiXZ2UlAK8lDHexpfhr+Nv3EGkmpE/mfW9diGV7ACFwnBg9epYhj5otLi+v\nkcU5zkR5kdKjJaU3PVQoc1KA6/4Ns6VOcIUTYZREYrCW7KFYs8BSSs25LQoX\nI41WFUfjenWuTcJsVzu26ueIgQ+jooLAk2Up/yVQyGlOIw7o6HPtPqYoxzud\n3ECL\r\n=ZJqW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHrNCeJMYQzAs6XGFU7L8tTBEz674WEeHi/oiIgf5C4PAiEAmXzIEOyjVtBgHsIh5My5wO0EPHD8u6uVnvR8kEjCbwc="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.0.2_1594458626173_0.5120809509485063"},"_hasShrinkwrap":false},"3.0.3":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.0.3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.0.3","@ethereum-waffle/compiler":"^3.0.3","@ethereum-waffle/mock-contract":"^3.0.3","@ethereum-waffle/provider":"^3.0.3","ethers":"^5.0.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.0.3","dist":{"shasum":"370a24d48ad1daa32761db475bb1822bc2ddd782","integrity":"sha512-NKS3razIjle/eTK4gu9sb1ADcbjFglV+jk1HYoXrgfUr/P11TVYmrSWXScASkoukCqgjYdlfqHzn9JYUAKL9nw==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.0.3.tgz","fileCount":21,"unpackedSize":17564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTRw+CRA9TVsSAnZWagAAhz8P/RxXgQo4zJTM8ou6ELtT\nv0ne7WLtdTLIOxq5CJmJgPUISlZQckfQ4yJtq2kH8idXemtQpKISirfQRnCG\nitpHgplVeBIcEcdqHC8IoJ48jLaUM/U8eEcgYG4RxfdYSP5lcg353mgnfDNj\nHlX5HNSNzsCrSztWEw9K2zJ10RNow4lZz/oXQdzIQlQ0UjuzPJmLU19OC98x\n5gx0FRlH88WdQz+Ks8AKz1c0cASnhTajxzNazJ/PZYVVz5Szl8WWUVSD3Xd7\neTvdIEl0zQEv4shTlU+JKWX5Bu6aef3fnfgfj8D6tjcQtC+Y4cnGViPnM84a\nOX3d5NwWSk1y1DHpI/UP2yqeX7FpH18MgKL+a8UKH5UmycHEc8ecQO8FFkuL\ncLfhjLr6zhw+z+1H6CEwQvgAIzda7bjyY4ywGocqUJl4m+7NQpJMbs7sFRL4\n3hFfdK8DArbAzope7lTAdSurj3CXPV4E/nTWeaSFeAdetS1GvB56KfQasz1r\nN2bO2iLojHbeE6kYFFCZcOtwn9iPrFWqMHPJLZIBX5jUX0qJLMgAv1vczsF6\nmnQXHF09LxR+BhC8eFgwU1JRfs8JJiW0Ys9iwsaZrrEjwOPYSQNDQwrHuh+D\ng6shCRNEVH9cCtzfs4gkhQXJYhs5oLsFIn8Gr0plNnhuVvpCtJx0mJVsbKBS\nXTfa\r\n=+Kjc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHrXeS2KbK7CVeuHSrFRelqeWuyJAVEUKRgxUyOiRI8lAiEAynruDEOvks/NZnpxUT4JY3TWxI+jM2hcmmLUkf/8Fps="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.0.3_1598889022144_0.9612231920266101"},"_hasShrinkwrap":false},"3.1.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.1.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.1.0","@ethereum-waffle/compiler":"^3.1.0","@ethereum-waffle/mock-contract":"^3.1.0","@ethereum-waffle/provider":"^3.1.0","ethers":"^5.0.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.1.0","dist":{"shasum":"ae6a006fd859c97694e9c7248aa8c7623113b932","integrity":"sha512-QSEzYhxBAjJAgVXZcR1lMB4Px1lAtf8M3QQPIflasNwHpw/VZWaYqN4o2fl615iPtOc3FFtMu1JSEbiuYojk/w==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.1.0.tgz","fileCount":21,"unpackedSize":17564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT1rGCRA9TVsSAnZWagAAPOAQAJqMiYoIlnBk6W/fvNZT\npL9Z77tGwhhmiF/q8COUQY6tShuyr5TG8ANoq3pihSk3px2USajW6r3IiK5m\no7NLVy9CHEEZafHZzE12HpxgUHOFb2aIyeNlzn7bRdGoMdEdCnWppR5N3TQU\nwf5sXpizuvnWGoLZIkYVy5rJOdOzBHcVM/0kl/pJeMrZ5up2xYCEnQLNbrhT\nOv/jk/P7p6geolmikO/F0BGX8Tl4pO/sS0aBbZh/1l1shGvl9Q35VUZV8lON\nLvF4XY72F9yaINgYJQnzozkQzPh1CSlQXbi0k5NfWHuUxVVkGOTk3XnQEXYd\nYnNLYZPApkvFVMQOIZBrXmuFdpGm480yDPEfRgDsyy14HrOPPQ87VGrXPOFK\nH1669l7P6RJPEPRm5nrDhrdkWMIRy+BOtjv2B13Q9IH280tHEuBrBFKChrFI\nI5jXZBhCQVQXuKujqQ5EBnfg9W44Wg4m8+fbA/C1d0/m3my2kf8nvQG8Fm1Q\nz3d5sMv1wZHbhlE/hPfVSNTg8xPZei7C5CracStD6LHVsnMUpYuInr2PdIYB\nbDCwnQbziCLXUnMXHdXVF2E7XtvA2BomKRnWr8RymNA7EDNiyFfH+8Mwqtql\nWRZHixsKV4/17JKPJsteEGnaiZi73uwd1oiBBguLKR3IWn4I8UUhV7slG8kL\nmXGb\r\n=t6wT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnNXHLl0CEYaduTUPu1ml8YR0GS5Q82cy+A2cCHOcfeAiEA7yYtqG2F5vn0fD4n43XsJMAQH2f3VXstVwD/X5t9F3g="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.1.0_1599036101599_0.29029582511619845"},"_hasShrinkwrap":false},"3.1.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.1.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.1.1","@ethereum-waffle/compiler":"^3.1.1","@ethereum-waffle/mock-contract":"^3.1.1","@ethereum-waffle/provider":"^3.1.1","ethers":"^5.0.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.1.1","dist":{"shasum":"2a63475104281dca1fd2ffed12ab8f6605219d51","integrity":"sha512-kiJo7PPGKsRfNiQOB8Z/ogLTHrU7Cj7VOZrdU3nyx9xXobkTFN9F9FcwdYZRg3gw3C1XnuOd18Jk2hPfuQbORA==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.1.1.tgz","fileCount":21,"unpackedSize":17564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbzMxCRA9TVsSAnZWagAAPhQP/j++gQS7X82f2ZmBGC6i\nNeMOOYgNgbszM6iK1v1Xgrw/2Ud5VNhX7rlhmOp4Y+jeC1n87sAKjxHSUPLd\nGXYBBx2yXAZTcK3lct9BDRzWaaR8Ld91R6vsnVXezKUznuokUzrm+BRLY38i\nD8O6nhrpWbGnbc0PkqHiyNRTGlqKXykiH+uEX8Qa6GZWsH+pFTEiJqRFrI9p\noKccBYR05uXiNXKxSKwsM8Ggl9aCsfR8liNZusyXhmWtou8B/GPdVEFgNbHg\nU/QvgT0dTuwm+9vQYNxBx4MgcaG1lA4pF6Xp5sGF2HQYrE3dyG6Mh9OJTFI6\nl46lmwRAJsfnpHibhfBTJvA2oChG4GLt4QDz/sD/979emozFMfap80vdU+xL\nkbPknmPQFTQGUBiFrPLYU0WYBFT3FfRjbx35dOadVouefJDnAiHHg5+5UXa+\nOLvsqcBdz0ONTXbg3S/CqqwpOzH2SM8ee70xgZ/qJWy+GkFRG08BW2fR3z8N\nzjDiVn5n7g2CSbz/BKd3raGD/cnWQap6D1LSFnoRrff7I/X/Y6Qeq+S+eCBP\nHzyN2s0b7b1MTC/NzsaO/4jWt5z5WD1hqdCGqBbsPsnRgvMJt+aOl6lOOPZI\nm5EFAyUjowpPI38hKcu33U6J4prafJObBnJgI9q1NQBUPYZss9q5UfibAGRA\nwnK6\r\n=iRgn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKhCDurVzvhoOYnPzZLI4imZcY2vCGH6WhCoxFik/lFQIhAJpwOAKZCHDNegGaRpSRP5Zzjj7D3GpPSNqcA5qpI4h7"}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.1.1_1601123121124_0.35292489049296116"},"_hasShrinkwrap":false},"3.1.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.1.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.1.2","@ethereum-waffle/compiler":"^3.1.2","@ethereum-waffle/mock-contract":"^3.1.2","@ethereum-waffle/provider":"^3.1.2","ethers":"^5.0.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.1.2","dist":{"shasum":"54ab4049d256185bb50de4e86328e521ea2ad816","integrity":"sha512-q9fI4N2RN+OEIXoWpyj8LWhjaBNtIxKID9RHHIvWe32Jp5nRN8F3Ja+EAaJ5Qh3/eZMPdpauW4N5zBrY2qXQpQ==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.1.2.tgz","fileCount":21,"unpackedSize":17711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfktObCRA9TVsSAnZWagAAL1AP/RW4ApeuKgiLFGF4Bzj8\ncIHzHBeStzHyiQZBkQVWTPvebmiskumVyllijK8I4GvE8Bg8wpQlHGBEh9X6\nv3v3r5b1FgqFB0NBmt0vJNIYY86mLvfztJpMF1IITfgI+118rr657OypQTup\n78Ig4pm0wg+L0ubR8VhsZRPa/Zeq519Yp97vsIvimbi53NlGNKkvwuBz3UMP\noTq5qWxHTm0AF0DQQe0ZQrpGWGuGraRwclCcHby3vb4gOCrBc4cgNsYvbaKM\ncLUDIZ0nTX2mO1DkKNQIfWm5vW+IkQGwhh9j075uLv+gexwo0Y+37s3b7RPV\naUyP5wXmeQYVYkgo0My1MXsH9kwSnTn5cTkVOEclq76Usndx5PAglNg7pxRm\n37H/G2fPSCjEJeKULpDlWti+xq2Yv9tQiAxJ2ROqLttgOQcIgN1yrf6hKzUy\nM/lopAfa7vj10FVJEis0gHVIDJSEPvQdf6LkhYLA3Y669FUv8csFsSTalBXo\nQWbfAhVsWmobyjK8PWFEPK0YgoaHgPO6l7xyAdGOmo5turouu5AULL2PDokv\n0b+zBqNQ2+7WXjce4+QBPW72+uzEn0KGFLCqbjtKik2Rhjcxj54Qp6n8CjbE\nOnKEw+F1NwDiwSkNQrxik5Vg22VFabuloMpikZkja8HpX5ldbgW/q4pcUKWp\nhDSP\r\n=JTdZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDF6CvdVVhwUt4W/wrktqc4lmAco/pKNAtyloIH14QnvAiEAxTki9CQJOKwywJtwmds/RNbp2WC8UpmtEQ22FlecqNU="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.1.2_1603457946666_0.8860445879498979"},"_hasShrinkwrap":false},"3.2.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.2.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.2.0","@ethereum-waffle/compiler":"^3.2.0","@ethereum-waffle/mock-contract":"^3.2.0","@ethereum-waffle/provider":"^3.2.0","ethers":"^5.0.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.2.0","dist":{"shasum":"1cea66fece731ea281e9d68046056caed2f2af84","integrity":"sha512-XmLvbGE47u+6haOT/vBwx/2ifemlKv4Uop1ebnccnBXD0xmTK2Qnk/FonwHtkHX+cUxj+Ax+3c/1fYDogEvcZw==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.2.0.tgz","fileCount":24,"unpackedSize":13417521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnRA3CRA9TVsSAnZWagAARbIP/jifZOh946NGq4bO6fdi\nFBGwPdeZ7Ry+v2/txFRQKHpBKgNIVQ5KSJ0loG984xsbI2BQ0s9UwQGj8eBR\nmuy3ri8TU12WjHNtxS7X8VgBsUfJ71GXCuCV/iol+KAQpm/AN05h03vaZjdn\n6mz/Un/LcYcAz3u7XQzAYzK/Yp1xVN9tXWQs8XteFeQjUaajtSz6Sk1/+3BU\nbnxLE0RrHCCI/zjPCxO9IkS2xmzw0GdBCQvVu45xzDLB4voxGXQaiy0go92c\nDJ5/d2DuyfZSAyqdKe5M37h4gvRoQvNrz2KOAz+OoafQH0SuRbudrst9NR6r\ndfVo8T+Ag7zoVRegulOhW4IkMYx9gyG8EencLsrG4Eg/0F9u057UkaTnuoVF\nRoqGq0k0iqId5zBOVw0SY9JZFKWi6p/yUFdTraqh37pKvGBafNu3asDnXwxw\nucyN+YEz3KZDlgBVaIfDb1aCzxtncV53BiVRcQK46iljxHKoWMQwseRwZ5Tg\ns7IWQurfoKJGoJXnqnvYypJbelrnAr4Lq9MBH0o6dXD1jLWMc0fIxIkQ++dT\nxvaxZ5TnuUMWoQ9yHLwZNiJDuMoClbuvgsZOMdNLFuwSL/LLLQ5eZHKMngoq\nseSf5kmRHljwf79JyDLTyrrHn+XDphf6AIALpfVMBoAbcLCXj0vfmd4Hfakk\nLodq\r\n=azlb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH3qzI/Fzw0aC40bNoOfXDISe8QoeOowxkvcje4rXxfBAiBn/Qhqdn8oSXFDNRIiQSVG821lBZW6MZ7J6BJNi18jBQ=="}]},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.2.0_1604128822431_0.22159940447724846"},"_hasShrinkwrap":false},"3.2.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.2.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"export NODE_ENV=test && mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.2.1","@ethereum-waffle/compiler":"^3.2.1","@ethereum-waffle/mock-contract":"^3.2.1","@ethereum-waffle/provider":"^3.2.1","ethers":"^5.0.1"},"devDependencies":{"@types/chai":"^4.2.3","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@typescript-eslint/eslint-plugin":"^2.30.0","@typescript-eslint/parser":"^2.30.0","chai":"^4.2.0","chai-as-promised":"^7.1.1","eslint":"^6.8.0","eslint-plugin-import":"^2.20.2","mocha":"^7.1.2","rimraf":"^3.0.0","ts-node":"^8.9.1","typescript":"^3.8.3"},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.2.1","dist":{"shasum":"9d6d6b93484c5e1b77dfdeb646c050ed877e836e","integrity":"sha512-Fhg7BaBuV+Xo5XT+NEC3UTKGunvpq+iQPglZbIAJF6ZcwQwkiKfJUDuB0ZSkg5ntbRS4gpahfoXj1nTzdtx8UA==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.2.1.tgz","fileCount":24,"unpackedSize":13417521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvSysCRA9TVsSAnZWagAARd0P/iiEyVMcOaABv4pljHAV\nznhPmzIBUHJko6Ge8iCYqskn9jlVZ97zUx91eMQfqiKgOQZaOVB/celpybsM\nMPD01QBDYuNZBW8AAB9aIJr/FnkU/QfVDY3ehx+9nWYI2XT+QfrF49smcqj0\nCTENAGwMyg5VfV1R6E9dnuotRWNo8+12lpX+EyQv4+KtyVW4BEleh4th8sxm\nQKi+cYhmA9x/rpz1tk22YCL1AGO8tYcK24YpA9Jikh6k9iPoCtVugWR6GBiS\n+EtW+5lbcJZ2/kF2AFATEr3H5nhqjBLHs26u84lqA/EWTRu13FgzYP5kNK1Q\nvPF08Jo2+W6cE1XZh9mbFVj3v9uaXMk2wuDG+XdKyI52W/+xkysMYND8/oWX\nAxbeQPPXJAKexUjTigMyrxjI6Yw8kpVp3ntVEC9leZEnhbKMVU0JAa5e0cB8\nHH/+9kXcgxVhOn5774ousAI7ReSZLZtFkftLkIi4X/dFN8nEXE5JjpEiMjhF\njjgNkPr4dl5btKo/QRxkVnYpVw9TtwCKgw/XMpWl6KFRsBkUjgj18IPUUH9l\nXnWilqhyRNxSQj1vW9QnG4aXHT6vrQuhUWlH7g7gcE33RyDioL7LV43w12tq\nKaS5qMC0UdOZMjfVluAPG9HOAf47lFNKfMnsYJ0sIyKgwmnMVnWCNZLDpK7p\nBn2G\r\n=6eX7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLj+O93lJ0nLVpYdOZFVD/O9hFd/CHBIMJoSkBmkxLvQIhAOt9n10buDGBZI2xNLzpP6zx7SnSUIGh16Xadx6jgxUg"}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.2.1_1606233259948_0.8500042767021159"},"_hasShrinkwrap":false},"3.2.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.2.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.2.2","@ethereum-waffle/compiler":"^3.2.2","@ethereum-waffle/mock-contract":"^3.2.2","@ethereum-waffle/provider":"^3.2.2","ethers":"^5.0.1"},"devDependencies":{},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.2.2","dist":{"shasum":"dbcdb96ebfa35d4deb6b749906ff7e12f593284f","integrity":"sha512-Q8XrcFmQGDKKH0Lr867WA9Rl0oWQGMZcFrFPMV2KBIOkdeQnRlGEJq8RGFxj4MMWWxkoXIoxWgxg7U3qdgddEw==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.2.2.tgz","fileCount":25,"unpackedSize":13418013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDFuGCRA9TVsSAnZWagAAT14P/jJRWM6QVdD8jIFJ78my\nNPJU/zGznyjUjUDwo2ItqDrH7yMeEgjFHPAYt7GzXRHH1XNDe/vsMV2ZcL1j\nKDUBMP5bg6PorheWxKGVEOpdQSCds5RLu3U6Wh2gIip6eVs+02Js2O7pahAU\nxqvAxaJ9yisSGhSRgbDotb/ze0Dg/D72Y/DllC1wtGDajRdfDtcbtZVY6HEF\nA05MsIeTfkiARc/plgIwe9whhoiwAV+gaQhxWeOtL+KiC/Wj2bjMQCPfZ51O\ny9ij59QxKxUH1qJlgZK9U3Qq9QntKI9xQ8T+uBTIU63SHK6X6yMoPYuqkLpI\n+ycS14ydfvWQGYiTRw8AFNgOw4I305HarAgWfqIACAPjJ+2ce3+DX1FPcnkh\nCMLk6xG5XVG3Ofsavf5TmJsnNohW72b4IcPPdEKSvjl9+KJy/cPRVIo0LuWC\nveFHkQlZ3x2gBU6/ZHmspPaYQnT4wZ7NsZ1oUUe+475cr9C9gAERwX6rqjld\nLPoxFFgLJCSfR5t5gZiobyNsVP4fnsYeMAEc7ZLrryxfCAXN/Lf766z9qWRS\n+zJJMqH/Ryjysg8DqmOjnU9b9a7/3xFkb6Z5pPJ7ykcG9xbrkVwDBJr4yUwx\nnoefFjWkdseQwLwaCuF4eB2THAoEiQzOGt6R4T5qRaMI74rVZlM5Gvpiav5+\nDGdJ\r\n=rkB+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPbNukxyuEhdyqHTa4FCHfUIWbWKxwysiBJ2jMCFX4UgIhALnA8BhZnlT54bpzQrbQEKg2MJlJE9RKCwrD0elBChvl"}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.2.2_1611422597985_0.2683259924846395"},"_hasShrinkwrap":false},"3.3.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.3.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git@github.com:EthWorks/Waffle.git"},"private":false,"license":"MIT","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.3.0","@ethereum-waffle/compiler":"^3.3.0","@ethereum-waffle/mock-contract":"^3.2.2","@ethereum-waffle/provider":"^3.3.0","ethers":"^5.0.1"},"devDependencies":{},"licenseText":"Copyright 2020 Ethworks sp z o.o.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","_id":"ethereum-waffle@3.3.0","dist":{"shasum":"166a0cc1d3b2925f117b20ef0951b3fe72e38e79","integrity":"sha512-4xm3RWAPCu5LlaVxYEg0tG3L7g5ovBw1GY/UebrzZ+OTx22vcPjI+bvelFlGBpkdnO5yOIFXjH2eK59tNAe9IA==","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.3.0.tgz","fileCount":26,"unpackedSize":13420016,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOpIsCRA9TVsSAnZWagAAmFYP/0SZ++8qETenTsrCjcho\nUhuJWPJEKKQ8+jTo1e0sxt+FfTR04qELKfiIM7mWrC6vFZ9wDPCgF436/dhE\n7ER9z/2iNqZr4MtkjfvNiWH47KEkLWorPzJaNibpwImMqbH9YwohfqFgbipl\nZ2P3LbZUHI2dhuu2VcOo0TEEDUsiyb/K/vWg4itXpZ8sCMd51aDm44JWKfLi\n3KXztl//hnVKHcFNVy2S5xs4kI5i6CNJJtbDH3+Wd6AbPFCyQmXpUH3P5xoP\nGSM7JqBVn9/C4gDmdPzsOPs+ujRl7kaJUgY1ypM3oQqMw5qxMNoTIyVG6Dp1\nrSIYIPHRIPcWY2/wqT9IcrZ/SGNj3CbO8r8yy562bt3MhS65/JSgxSa1npaj\nLbOAErm8FpjHxFOl/k0tBmAmGaHaa0KX2ySSZ7QESH74aSvQAQFTe/N/8Sof\nHJfPgHByT9NLiVBNkMqjOrKwRLY7O5rszQ+l3jE4EnoveGkjyqllpPPrWamT\n5Lqehh7AQ4vRMHh8Od4O1ocQNz4TkQidgsGo7Z73WPQ/FHqPhuElf3ajEmFM\nZXDb/jiWeCqRiMfrlXCbtwnzl0LZtK99mvFsufHWLY2no2eZJWHqkwjeUJ4Z\nSfMXun6KkS6lS9hnLfLwxmhT7+67v5OfxlqRSxacLkq/SEIcmb68eS1s37wa\nTtJ0\r\n=qQH8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/5ResN4O37Q9ZCcjOm+lhbkGgsV4u49MRYuMXclXSQAiEAyMVpu+5VmRtKfo9v7iVrQr5kZeoAzwCBG7lnp+L9HU8="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.3.0_1614451243690_0.6798065792368706"},"_hasShrinkwrap":false},"3.4.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.4.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.4.0","@ethereum-waffle/compiler":"^3.4.0","@ethereum-waffle/mock-contract":"^3.3.0","@ethereum-waffle/provider":"^3.4.0","ethers":"^5.0.1"},"devDependencies":{},"_id":"ethereum-waffle@3.4.0","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-ADBqZCkoSA5Isk486ntKJVjFEawIiC+3HxNqpJqONvh3YXBTNiRfXvJtGuAFLXPG91QaqkGqILEHANAo7j/olQ==","shasum":"990b3c6c26db9c2dd943bf26750a496f60c04720","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz","fileCount":18,"unpackedSize":20331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy09yCRA9TVsSAnZWagAAiM8QAIC2gZATGaoAAyW0BG/8\nQ3v/1VGZZxIBdqPyH7Pj5oCGxdmEm+f6lfs8hUROGPlBFFgbkrcJNRiv//kg\nBaG7Yekq/C/tmGOaBWMCa0MNvZoTCPLXtoHxv/K3tpbkokyf7z3tQm4Olulv\nVxYqLC8cNt9bqZStH+W9svb+aq+zU5KGEifd79fdmpirKSAzQVt//amsviU5\nrWTglADJTd+xih9yrIgAuPLmHrgphmVPy7JSasbeDaQhFVTIYGER+n2O7xlc\nymWf0NedvJK2ZZZgagu5pcKn4p3B7WA5NRIi5BBr/+Vy7K7JE35HslJVqLYv\n/j2dtCUJlM4g38mgP4IaSnW5aSL6y23xKaW1O/yl+1j9NH3M5EuPk7adAmZ2\nxFHfqA3s2DOkaoqYKvc834qQfNwqxKtKeOOHwUD87kqA4HmU+oao72RKBPaP\nKjRefWdYZEFexf5gg67oeyP5RPCdLWNXzv/PcUeI7DMZY1I+trZ/mS0ji/Ec\nC53wxKa48KCHaB0aWqAsLYS4NLo6/+CgqbnRD+BrxpNlRSDLQeXRtxGApOZL\nP1Z5kbQDJVWsrNBz0zgkcNtPflxUawcs7x48DUwU5J5kwCcJcf/5vVIqXUEz\nkRcZdYONMsmU1cAVxlYCsCkSMh6Q1mL7FKrTsHK1iCxro+PN9pEqUhl99Oww\nZGbw\r\n=0KCL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICZgTvuq2aWRP4mvvExSVNilWUHwEOsbHFWtHevQTDWmAiB8vVYU0xki6USvzyBE0zaiYyh9zXHH8lGBe+5JQoGZFg=="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.4.0_1623936882028_0.6323162485092986"},"_hasShrinkwrap":false},"4.0.0-alpha.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.0","@ethereum-waffle/compiler":"4.0.0-alpha.0","@ethereum-waffle/mock-contract":"4.0.0-alpha.0","@ethereum-waffle/provider":"4.0.0-alpha.0","ethers":"^5.5.4","typechain":"^7.0.0"},"devDependencies":{},"_id":"ethereum-waffle@4.0.0-alpha.0","_nodeVersion":"12.22.10","_npmVersion":"6.14.16","dist":{"integrity":"sha512-gDNoneCUuaidULiWuEXsygdgnRWHn8TWdg4BchQ/2poxtWomBjsPa4KeX7fmRLCLiklgTx/Lr2AsPv6XCG62uA==","shasum":"8051a9122b5c4e6479321c758752bdeae3dcd14a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.0.tgz","fileCount":18,"unpackedSize":20740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKhTsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoR5xAAkGT7wd6kD9OIUR4A3jzsx+a5LN/6ungvX1SgbeH+Z2mdtKUf\r\nrtETJkirDMw2PmbfmRekf1Gxk8LNJgqgqgp7GJmHYvxEShjcyN6bpVLe69sU\r\n+sb7E92aBiJjlKELIn29oPfTIj+LanRADC4fB9Ww30AS2yKZ/IrbuFV/YDfZ\r\n/reX29bLp5YXxQskLCq9YliCfPqsnt/BVPWKZXUrvtYxHl5djXVZvjGUVtjJ\r\nJaQNQ/PpmEaIzmOu5rR9JG+Yw/YzgJGKaJpG8nx+gBz8yzNOyOu6wWseLFyA\r\nbW05JL2sQ7Tdv+O5Ri+rgj19KdjJm76ikEaCy4jEuPdwYWw9nEvPTO4Z9cQs\r\nFcwbgB5uh+KRS1O4cInXhrXl1jBaCpHb2CjNiRg6yM5oaUcKWY5taf0Rg59s\r\nk7Qp+OQPEHCvq7408UYG1IbfSAm52agxqP9NgAftSXnPvSb8Sb+YfjxAz0SW\r\nEvOGUKQhKdSKqkw1t225prCUYEeg3JI1abQSyKJRXn1h5CzLnCthK1JWf3KN\r\nsKCuxUI/vKKUr447Z1ZNHjjgDjfS08i2OALCHTGkZnoP7+OUqxi24XuQxsWY\r\nsNHPsi0lyWFy/C/TUD1KEjFofAS+CB/5dZ1yM8S7mIAGxYhmreHtrVO2Wb4I\r\nlV8DQEgIq7CXEKqtd4UJOPrW5nKnoj3x/9k=\r\n=+V56\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFwtmCxpIUy4MZ8OgzsqBwyz/pu7dquRmezgWvjDwSwyAiAKC62OSb80mUWtSd+3GXnhMfcFMoy4qInznFBMEawliA=="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.0_1646925035850_0.3833830964636431"},"_hasShrinkwrap":false},"4.0.0-alpha.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.1","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.1","@ethereum-waffle/compiler":"4.0.0-alpha.1","@ethereum-waffle/mock-contract":"4.0.0-alpha.1","@ethereum-waffle/provider":"4.0.0-alpha.1","ethers":"^5.5.4","solc":"^0.6.3","typechain":"^7.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0-alpha.1","_integrity":"sha512-YIWeewcZ+yeE9jOILo8uu7ccEE0Hq/AR9jwSpp/HaPivl6J+TddgRq6c4g0Pm5NueP3Zh/ZpNmE0K2+FVhJs9g==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.1.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.1.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-YIWeewcZ+yeE9jOILo8uu7ccEE0Hq/AR9jwSpp/HaPivl6J+TddgRq6c4g0Pm5NueP3Zh/ZpNmE0K2+FVhJs9g==","shasum":"78d1843057a5038ba824dc14253b6e65edd4e238","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.1.tgz","fileCount":18,"unpackedSize":21612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOvqzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrBYBAAlNr+q0rK8mtMhhOBuXqygG1L4w3EBBtdixvvZk1jGOmUbvE2\r\n5JBX1l3+XQXUVOLWMIRLyk3+nkUaNohNisH1agr8/WASpZ2VFiM2OBdrdasC\r\nt1M9hiQE52Q0XfoFyqbkrFhPg/mYAPAXk4A7zur4246SqkxT+Xt25SCgoEJI\r\nz/vZiogma5Eco2kt5RRLmI7933YCc4viC/z2kHqSZ3myVdIh/20jhroiK2ds\r\nFIxhKPU4oIdHecbmPl5h/VR8Xk68TGG5I0zFC4g58G9qAQS3vP1PdruB4V4U\r\nff0jztlOfVk5SfMQT41JYxFxQY7liIkcT06dihgvxthXyIgg3APw/s7A0SI5\r\n6tmz7frWBH/lM3cb1Ghk+Fj74K0MYo7UUNi89WPB2Ddy87VwWZBuvlB4aINY\r\nHXO8H21gEMgQiTi6gfHC5Yerc3zgMQSuMjS9ITV96mTmlHJVMFhvkf+/VLUE\r\nNvetCmAXv3V5p1+XK27LIu0bf4SFLFv+TNdz1kb4jcoFxYrfky96Q1AySfIF\r\nBAaBDuctZLtR1DxUgT6zAa7gYLQneN1KxRalCeBdrU4WQ1e8rKfoOne6r00p\r\nRckAJuC8AWmpqrK5E0cn1mwzOg4qMAbU2rWERanZ5NzQkAIuFdXRczZ1aVBU\r\nCoLH+9rJcyUUZzT5AQHuMwgC6QCmUZM6MAg=\r\n=i3lm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCx9y8BL1jQg3jiWG0lvk4JR+Bylzm2sPkZcFVIzvRRIAIgKzmUY287Bb51RqqBnatGG12Ctvx/bitsY5a53ZGEsKQ="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.1_1648032435281_0.12087937596670062"},"_hasShrinkwrap":false},"3.4.4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"3.4.4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"prepublishOnly":"yarn build","test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"^3.4.4","@ethereum-waffle/compiler":"^3.4.4","@ethereum-waffle/mock-contract":"^3.4.4","@ethereum-waffle/provider":"^3.4.4","ethers":"^5.0.1"},"devDependencies":{},"_id":"ethereum-waffle@3.4.4","_nodeVersion":"12.22.10","_npmVersion":"6.14.16","dist":{"integrity":"sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q==","shasum":"1378b72040697857b7f5e8f473ca8f97a37b5840","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz","fileCount":18,"unpackedSize":20331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOxe8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJbQ/+LVZoSa0cQK2hBs9uDx5q+BDYW04LrwpFnQq+QYmHtQ8KxnkC\r\nqRv8YebTb5m0lemq7CbCId0m/PyBRTX9cie2NpCnr5xXRV4QzohZ76lsGI/D\r\naZ1q+I8XorTiFQBOpLDjD/4Kg+5YS8aktzQfoIsYtvqYqf0US528KD/6+GRz\r\nJtlaIdE67KHtZoHyxBPKO9Ohg8KZQkRIzvRDiqQXMUk0IgNS6x8UReygnrnP\r\nUHtJUuTEiJBy0TPffn3xVzwFxdg3HdjEgu1CmGPTveb9FceQmeLrrfrrePea\r\nkJ2m/4IvsqnnHrKDfq5IdZBuOTUDrPFIOuPO3o81wlibqxebSoXCa/qLZ7hu\r\nUm0qL2IjQYLAdiEmgqxftCgn9MmrTBeJNUHv6IJUi1Ctp015jhEP49FZuq10\r\nA2xL4xDNzGkpGv/w+2K2FioVKVgGdjp+wKt/wub1/VCv7/Y7GFDGJTQ/CDUZ\r\ntBvRpS+pfBMG5V7WEIkQy530kOUgZGrn5rZZyBW7jHtOH+AC2zIUm+itzNvB\r\nWqX6K7sd6j3bWpdO9YJKjYmPYTTdkpN3QY5L4lkL8nr4Fxr5WWoFUQFPgBfY\r\n0J3p33fR1oPlbBSKu8bYeMuOyrxOHGqo1d7V6tegtw2k5ogdEqi3fSKL9KgW\r\npt02RVM83NN9GOhdCxqRzEDb44tVRH0KPoc=\r\n=ZIJm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBiUktI7kH/NwRNcBW4ZRTlfG7kDyWaDBjY9PMCExKIdAiAyn9YJ+Eit2ug/pDM3mU/vZXbtw/kmMOWd5Auj84HUBQ=="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_3.4.4_1648039868753_0.8597059614605289"},"_hasShrinkwrap":false},"4.0.0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0","@ethereum-waffle/compiler":"4.0.0-alpha.1","@ethereum-waffle/mock-contract":"4.0.0-alpha.1","@ethereum-waffle/provider":"4.0.0","ethers":"^5.6.1","solc":"^0.6.3","typechain":"^7.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0","_integrity":"sha512-OCZkvSmK2qHPidmAp6qAndw1CE0r1idPgo5M6BHRxRtQevK/81RohWITJ1Ghv1tUCTYEbecGCjHHG+LZfkTisg==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0.tgz","_from":"file:ethereum-waffle-4.0.0.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-OCZkvSmK2qHPidmAp6qAndw1CE0r1idPgo5M6BHRxRtQevK/81RohWITJ1Ghv1tUCTYEbecGCjHHG+LZfkTisg==","shasum":"c734ab7d02f9b11402352cc27c466888ff0758e7","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0.tgz","fileCount":18,"unpackedSize":21832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPIMpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoNDg//Q/uHgHjn0XjK84A8bPAesq0lG2HO5lILFCSkTAp5Zcu5YqYN\r\nR7TwSOW+cWwbLFpiu6MIgsxYjly7eXu3XkzrZ6Bhkwd5oG6sb38JEYoLhE5F\r\n9+GIM3f4HFenEhNmuw9oxnxFkhLA3Wy1HF7RxaNZ1ger7zrl5+WvdAaFI0eo\r\n2CS2a4GFRo/cMXE3ecjy1ymSzfBw1Wg1IiXVvAd5e8Do/O78+os5/xRcrbV+\r\nacqaXQUVpHpk/0pXO0H6SbZW/pYsYFaZBYeoufIObUBVUDuEOAj3JQsEO2+8\r\nkqVjF2ZGmT5Lzsv5WQRSTdGmBSZC2dcAVGmxUOrxnYCXj18nlq8YKjyXrrC0\r\nrIM2GcxegKc5JQOIqAi7HrG8Hr0p/eaXaDONO9lnO3gqEPFgwvrcrFirw2kO\r\ntn7rRyXWkSjvIHQHiLhkLETVWUXWggeiZv36yYiFTcr3mV40xR5Z/EhbcqJa\r\nXkk4ATAPyINkefiOxbgPVrSqo+RWjxHiTYOCzua5Ioca87zPoMFZyl06bXRQ\r\n3w4U/EbARzQZObtWvsCyDxxchuihEVM3JrF+oIksiLRG8NYxTsjoRDqTMqJ0\r\njfvPPZUeETNSpP0tBJ2C5oJ/49dSAT1UvJS1APYTO/5JXuYBwF84d9eCvCZi\r\ndBrOIXqbSjG5KYFgCKnwZT53vHS7owUIBac=\r\n=6dmd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC+Ux3l28kR16XdobdHOiMtv/ioYZBCIyqQ9bpasGl8eAiEA7aChFF6zVmJSGboApj6qWQkxKMuzcVQvDJf4A8iThgM="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0_1648132905848_0.47574053622447754"},"_hasShrinkwrap":false},"4.0.0-alpha.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.2","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.2","@ethereum-waffle/compiler":"4.0.0-alpha.2","@ethereum-waffle/mock-contract":"4.0.0-alpha.2","@ethereum-waffle/provider":"4.0.0-alpha.2","ethers":"^5.6.1","solc":"^0.6.3","typechain":"^7.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0-alpha.2","_integrity":"sha512-3K3nrF7246zQwc50tMTBKkm333oAauk5+b3dUxQfPUqjgR0f1P0EGh7Xfa4J3KqVasxxUH4RTVsal7tKTF5fqg==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.2.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.2.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-3K3nrF7246zQwc50tMTBKkm333oAauk5+b3dUxQfPUqjgR0f1P0EGh7Xfa4J3KqVasxxUH4RTVsal7tKTF5fqg==","shasum":"b497ebca0075bc5a79e17aa1ccc23762799aa1b1","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.2.tgz","fileCount":18,"unpackedSize":21856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPIkxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr0KA/+IhgWrk9+eLwHyhHOmE8B4sQwcoxCuh3DoOY0erBc9ilNbEpp\r\n7OomaKjKWJEPCfpprcnMwNIep3bJyNyd2Vc7dmEtfLkqYAXJayfZIoe/2OXk\r\nFtE02L/76BMIjygC0fnS7U5QrzTK40/fNDDFf1K0JXMmdaCd993MABDNB8g8\r\nr4azZBcf1YB/1IM7jogC4HLgcjBsWeVXCG+eYOD51eonvoxC4VMwDNEgBLpX\r\nFBgtSYhvzfB1+Bo1LcMPoxeURjU2Urhcg7+KQzKTifu67MDI95XQTn7NXmxi\r\ne6mmUESQelam0QB8+26Zf5POd809rdGUHWjiJQGBzNs/C2EPvZKrE4WybIMW\r\nVrTAMw5OrJT18UFr6B95p5ov8OiuBWcf6aLBmpkCGET0898mZGb7q6pgKD+F\r\nL14ocemtbUhvhEdoJCiP5+BhhQ6emSSzxwEhE9PcyKgC8aXbCr8lCMIq4qWu\r\nh/s4Ouun6yPrmo2HXixqz5qAayaQFqV/jz9R3EWqDKoTOUBgQa1g8bE0pxzv\r\n5Qnq08vx4PiwfaOGdeKfGvUlK++GiSlzvt8PIicIFGLn/WfnOiIXja8vBUBh\r\nBo1f7fZXE4Muj/IqRORrdkLezbyPVW2WEyCYXgP5dpW6WNs1zSihO/Z3Zis8\r\nDdg/XJfKlQDDMDJ33w0VxSoMZRd12s9z5L0=\r\n=PU8h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmqekYJvOicvVuanzyAyquVMlgmSlHXBiVdr290T278wIgNeipRP8nv1WGes05sb58SatqwvDHUE6bPSpSm0tiubE="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.2_1648134449349_0.8653155946686282"},"_hasShrinkwrap":false},"4.0.0-alpha.3":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.3","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.3","@ethereum-waffle/compiler":"4.0.0-alpha.3","@ethereum-waffle/mock-contract":"4.0.0-alpha.3","@ethereum-waffle/provider":"4.0.0-alpha.3","ethers":"^5.6.1","solc":"^0.6.3","typechain":"^7.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0-alpha.3","_integrity":"sha512-lb27jfDjl7IBIIrDOwbjfTWeV1Hki67qoN6NiQz0n8Y4HAnak3VVJdqp348PHFhY7kNRwfwd8AtJVksnB/lPRg==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.3.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.3.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-lb27jfDjl7IBIIrDOwbjfTWeV1Hki67qoN6NiQz0n8Y4HAnak3VVJdqp348PHFhY7kNRwfwd8AtJVksnB/lPRg==","shasum":"809fd9959ce2c7a75608b795de34e33b21ee33af","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.3.tgz","fileCount":18,"unpackedSize":21856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPaXCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpoMg//Q3zw1eQv/fKcHZK2Ems+NTDAMQ4uJYfzSD3bYhxcSt2bbRc5\r\nbWOmQWjSXpn8hAcg+tqKXCP/9gDv+IjxgK9D/nJ5ijir0g4FnDXHyTp4VCa1\r\nkE5T3cU6/fbrgWxPze9HnaHtLeLNZKNo3GXLSeim7QYwoNdZAEl/ypwC9+Lc\r\n4YsNpNCDLhj67ZgMu9nM2JETl2Cp7ZsyAah/tp8xJ6SJUL4w9Qx5CcGoPgxo\r\nwymcdImIZdBcL3NtSNJLM3sljA/p4VOzu/qlznKgHX+LBrHXfy+79OJNNkCW\r\nrXfrWHXzPOKQxgFdELyfYs4Nlj0vqlUG7GhZIix5uQ0ahvOm//54RI5E+Y2Q\r\nv1nGgpjUN/oCSjHkQWjkpiTJeuuxHs6YBzrT5MdJLyTnfSepl38vPsBV931b\r\nbO+DzRmjOKf4xXMB57vtU8x1EJkFczxr9IiHVhNAMzny7+sWJp6Bhu+IcBka\r\n2yaxec6guTrSWMgZwXGSlADnYWMFCoDNmK6hnrTj9705T3Q6u9yDklnJxohN\r\nCF81syyqbV4s23BnPtVA85ZeUdS3P+CcQeTbPo5usb6LQ/h9mNnPkpf/hAfd\r\nuZNBZMYyfB4Ig9PdUYmjpTlCMc6r+uJRjURu/n46Odw+/Ml3/Zzp2H0tp4Sd\r\nNAfRjR1Eszjn72Lu8aMecVfxsqvLXw8UfwQ=\r\n=PHRm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYpa4CHwpeUg+vQhzwtHD+bWtjCsdU4rE6vUVeANmeWAiEAknbc3Qcqk0mPwSWXZ1A0PrUE7XmZXll3vWAT9YIMZYg="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.3_1648207297894_0.2324413216977086"},"_hasShrinkwrap":false},"4.0.0-alpha.4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.4","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.4","@ethereum-waffle/compiler":"4.0.0-alpha.4","@ethereum-waffle/mock-contract":"4.0.0-alpha.4","@ethereum-waffle/provider":"4.0.0-alpha.4","ethers":"^5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0-alpha.4","_integrity":"sha512-d4H31hd5GKgxcWEijoBSCiiPLbu4nfqmx18oIYejUss4NJztFfrtGvXLXuyzRtLPZdM5Pscf14egXMikLZ536w==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.4.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.4.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-d4H31hd5GKgxcWEijoBSCiiPLbu4nfqmx18oIYejUss4NJztFfrtGvXLXuyzRtLPZdM5Pscf14egXMikLZ536w==","shasum":"a4f816fef5aa8c54488f31bfb1193a30ddee9b2d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.4.tgz","fileCount":18,"unpackedSize":21856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPcs1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpqoQ/5AfQzO4Cmw/jAznqdodNMq9XVPIt76JAkk1XVR6qt9RpH5yIM\r\ndLw6RR9ZoiiY5d3finAyhj/vDL/h2e0NM/x9cl1YGo72aS0xxG+1qI8ic2eM\r\nQIVFuf8SEWc97WLw6q5uQ6Av9NwgokwnGCupxOetgdzb4iCIYR7c/s/jg5v9\r\nRHZKD/sGXl9wveu9GkMygR2Piz5ycGf7mzNN3Zr2mp3VKZ4DwB42V0+4qiz0\r\nx3vkLo+2SCYZjZd0NCC68koeFZbkuA/iONNOBOer74n8hIF9otfgYC0huSh0\r\nf7Aj5bngsgXOS7ejEY6VAtPSq8TMP13RGbg0747rpt9c1ZjFlyELH/W+MH8A\r\n1ohCg7rG/9AOliPK9vlB0ZNSYq5iF5qT5yqhBT4MIy8h91iInfEEB6MPobFZ\r\nIl8KOqaxg4jsydB9AkFO9zxSIghuvuUxuTBwlK6ZK50TuKyW1NKscudep0zC\r\nfXtoONNBR36g59kYhwHw28lc0AAu8LllzjVvdD7MD9MTOa2NiDAS5Tob4ftV\r\n91Qsw6kkU+bv5kOIEMT68dkxVFwl5qCtIZsdyD06/ORWY3qX0Z1f9vZK25tv\r\nN+vHIUDIi8ZxT5C1Ou9nOMKb7y610897pcsyFJLBsZHyE1CsIWLyqmdhub15\r\n1TcKH8RdTeUb9/JXBkQQMYsG65Q+JUwXrqA=\r\n=TiuW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkZeocsG4M4inzbWRyJh2f1umOCIFoVCxllc/IaGaEFgIhANkU8VjmON/YkpjFETbn+ePNU6rVR/UI7+2AIn8lWtWZ"}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.4_1648216885756_0.009270767345353592"},"_hasShrinkwrap":false},"4.0.0-alpha.5":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.5","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.5","@ethereum-waffle/compiler":"4.0.0-alpha.5","@ethereum-waffle/mock-contract":"4.0.0-alpha.5","@ethereum-waffle/provider":"4.0.0-alpha.5","ethers":"^5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0-alpha.5","_integrity":"sha512-eRHCoHO8QuKg/RE4FgvPOD6zeBIi1cEmUWIe/UpSYSwtdcGdNlPz1+qu5k79sqJDILinFu91ZtwdhefarCRGsA==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.5.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.5.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-eRHCoHO8QuKg/RE4FgvPOD6zeBIi1cEmUWIe/UpSYSwtdcGdNlPz1+qu5k79sqJDILinFu91ZtwdhefarCRGsA==","shasum":"1b441cf62d6dee98c7aece59fff4467feb118f37","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.5.tgz","fileCount":18,"unpackedSize":21856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPeTgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpKYQ/8Dfq0TlG3DtARpJ+zp87pnQpSkXCi+j2oM2XPep4fXeRaAOKk\r\nw6opZZyOdKP9BnvK0CO7bc/VJI+7fntczdKmUDZd734KDrVELUwiaCb4IOT2\r\nF67H5spHEa/fJlNNG/7sEdlXgqoGfRWf7JHKnFLlCiMX4VQKL7+1i04L/wtj\r\ntLLh9Nhz2qYSUngJ0GU7QXiLKmJdDXEt6xS/s3s2/qKWNJCqG88HZoD2RAsC\r\ngd/V+Rd2PsDvl3dDCgMWt+07q6UFy6uvvaiTkDCAMlcl1ItIa/nQ3qqOmXwf\r\nI6ymRoz+j2vApwleSGM8UgrNmtZgdNfaigJYctF774Kwa0roq55VS3RxEhQ7\r\ntp9lfytxOyHbAVDI4Aro35OFPtQ5mLXSvnJEHQto9Em7JH1zc+tiBiza3Vhb\r\nfC1Cbk/YJZKHdcKjuISG0c0pUMB97NE73ZzChLTsQ7V9/2+fPMpNkOUj1O3z\r\nhOTxMt9yf/uk/QZsLtDR/HQXxmHBKJ0v7rvam+Y/2z5rA1BiLOQR5RYO2q7p\r\nJlSuWL9OcUy5Rz617gFB3pFW70P/AUAcJsFnCFfRwMh24U5tv62sh84q2+c9\r\n7gBO2xwwGlYycV6vJ2oJVyuz4e/6gh8KvL3d5pd/ugrQXYXxvtpQhWlohtmd\r\nkFQqft/aNvvnWMtM0+T+4jSH8Eh5QX7/3G0=\r\n=8Uc0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF7wDyFUziMQyB14NoT/jGXfjQ3qRSGwHitjGDjoOf7NAiEAyEWAPdYGiuxYQ7mIKhLpdUFXoD3ERjrMbGX5o87INcc="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.5_1648223456746_0.3059964867541731"},"_hasShrinkwrap":false},"4.0.0-alpha.6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.6","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.6","@ethereum-waffle/compiler":"4.0.0-alpha.6","@ethereum-waffle/mock-contract":"4.0.0-alpha.6","@ethereum-waffle/provider":"4.0.0-alpha.6","ethers":"^5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0-alpha.6","_integrity":"sha512-eewKMAvFbFN0oVpTx7S0/s2WkCjJf0ur0kY7kz/5Ckn58iIqaKm1y2B6evJYEXl6QTlPRriHgYOdBInxBqaQ7Q==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.6.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.6.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-eewKMAvFbFN0oVpTx7S0/s2WkCjJf0ur0kY7kz/5Ckn58iIqaKm1y2B6evJYEXl6QTlPRriHgYOdBInxBqaQ7Q==","shasum":"b0b98ae5f8e477d2a3994e745286fd50259b1032","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.6.tgz","fileCount":18,"unpackedSize":21856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQcoHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmodhQ/+Iri36BsKGlFqP/J3O4xZTyerA5HkmvRcYn46HDAtEUT/rfqC\r\nlYrEaDSQOrKMPPbQo6pSIbPEVxr/F4oGCbWR7lmJyjat28Kh0z+2qO20LzrK\r\n7c/WEXnIyAFWTdwLNrEPW6PMJ09Xym1vrBTdwyERBo2ibW5xrVzHJg1mGD5w\r\npIUqyD67PGJlAm67GZcH28Cu3OFJPiuRQCS4NRTvTHFC5oOOUGIR4v1tQ6am\r\nVHJtZvlL/bMNk+m74hd3DBtBi/ZaR7sM0gxUucSjbCX9eeEBXnLGXzxHfnxZ\r\n7VpJAOlSDCtZYB7vv7h1eo0rWvgItVkryTMMBDeDnksZZWfV7CnA23C8JmQh\r\nZa11etd6k03BrKs7AAXGYigOZH/5/X7WhuCY1e6wIPKX1nyNC+ch/OgOWnsK\r\nMFGAvzR3hZxanPzJzy91vwY1D+m7FKXnFUa7UBQNLExnNaEynV/Y0sAzrbzu\r\nTccqAMQy45gKrBatG3E9YV833J0H5n+rdCon0ZchQcAuajVhRmj3umgneM5N\r\nK6JXdBnQf9tN6pxf/jwO1Wfj4qndZOqecU8KjkVSp99nvSIX6flzF4SDn84N\r\nW+7k3f62eHTbqjFWFRFLvUD2UAHuvEr5GzM5YOGJCi4/GmVCO0IgkbQl63E6\r\nWrI+/RmZLqCV1WehRcKZ6kfjwZlvwSSPngE=\r\n=MprT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5acLx92E+pUttc76W3DkIRJdfTqAzvnVepcHPkJaBOAIhAM5py93z6T2juMoAMbvbexeAIayULRjxH6GqiMdVaPEe"}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.6_1648478726820_0.297171105331822"},"_hasShrinkwrap":false},"4.0.0-alpha.7":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.7","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.7","@ethereum-waffle/compiler":"4.0.0-alpha.7","@ethereum-waffle/mock-contract":"4.0.0-alpha.7","@ethereum-waffle/provider":"4.0.0-alpha.7","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0-alpha.7","_integrity":"sha512-Pr/2dkFd18QnnaZgUJLhwD4ATt803Vl4RAP5JuFunR+BPDa46VwVhgoiru/tUxs9vekgfH8M7fsuXp3HyLR2kw==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.7.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.7.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-Pr/2dkFd18QnnaZgUJLhwD4ATt803Vl4RAP5JuFunR+BPDa46VwVhgoiru/tUxs9vekgfH8M7fsuXp3HyLR2kw==","shasum":"740eaa6d1eb20ff4709d21d18588062fcc4f69d2","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.7.tgz","fileCount":18,"unpackedSize":21855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQd3qACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/3Q//YDdrCBNY8AZlqlRQd+9iTpKn4xQv4+FJ7FnftmUGuThKg5vi\r\nYYW2yX3r3yUYV32AVtpVH5J1y2bF+CDTlcHyygSLrSGWuPmNGm9kLY4uRxMr\r\neyOCMYbfy+1pbvKeZhDFcGRnF0WmzUJzTNxiQqYhGtSMrPS1eNxOfhXf1LP2\r\n4rz1A/cCKGpTOfqMz56r1OgWQZRTZzoZeyYjsGG2bABVtkF4LlekOiEGOqPG\r\nrpOK7uRrsO7JgltWTpenFXBDIMk+EX449fm2gTNocDgnCGMghiX2AgYkzRkp\r\njM2hrsbDGesldDmye9mXShmkPRECQBK2Xx7Ws422kUQG19/kWct9vMVSwnWt\r\nE0mBCSmQLKlh/w0beX4rA6GxLuQRw6k6wmJBUbf76f2HDZNEVU3OSw0l264j\r\nA4RMwwUC9mB1LfOceZJbKtsxIzJX0Gz/fUxYZRBu5PmO5z4RPnBwKdbLFDqj\r\nqmeuHE27Kxx77OHOMZPZTIMLyfgnJt7MWGr8c2QeYDEM5jnSO7Ib38RIoITg\r\nyj+6EXsh5nwRoCg/4dv16z6ED7ZkDVf8yxd9LfD9usqE8A2yen2J05nZSljU\r\nsOp95uDlDgO7PP0u9yQog9XD2g+0X650RPFUY3G4Ews9PlIU1b9yZbTCUSus\r\nevQ7u5nalv7Ujy8v+dWmGRTcXjoibaAaOnM=\r\n=/RQs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCG/h2vcpkQcWPYYSC+ptX/NEaeBlJPRRXeZO6qEr9zNQIgQ2UlNMk6KFGbTrArRZSTDdElBYtHcdMSj+2ZHtnSyEQ="}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.7_1648483818687_0.17871733075468765"},"_hasShrinkwrap":false},"4.0.0-alpha.8":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.8","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.8","@ethereum-waffle/compiler":"4.0.0-alpha.8","@ethereum-waffle/mock-contract":"4.0.0-alpha.8","@ethereum-waffle/provider":"4.0.0-alpha.8","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0-alpha.8","_integrity":"sha512-OPf+ay8vcvNP8IlCyVdr7GNIF0AYN2zca8dRb3awTb+6+1SvB1YrxBfKP+8rr3qrHFtWQgluOZZD9YqfwnSV0g==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.8.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.8.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-OPf+ay8vcvNP8IlCyVdr7GNIF0AYN2zca8dRb3awTb+6+1SvB1YrxBfKP+8rr3qrHFtWQgluOZZD9YqfwnSV0g==","shasum":"69537a58126d800e927152534dd7ecdbea8dc8e2","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.8.tgz","fileCount":18,"unpackedSize":21855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQxbSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmok5Q/+J/dNYYSwT/lv3IKvh6SZ35utD0TasEWHZHTW0jf1CqGEcqOm\r\nLxvVsglYjkLBxWboYnzqCLeA+11o6N/aY3lvL8ZaOy5rFv1EQQv+U3Jm9mVR\r\nTroppTuZRCTdqVUlMt52LvBWMKh+vHOIiZhTYTSOa5Wjs2YG1v/Jg6GYkfYM\r\nC0T/KEX0rkZjQMeQ9afWDpIa4ikQdwjVBdYWrg6CND5YixsOl6YEb2KBjlW1\r\ntWy6diBM6B7exYMgzFrDz+XnsFue822vS0s27oS2KTDcMkSle8XoOdYZDs1u\r\nI0pGpATcgxU2EJXghygGrLOMC1yQj+Kg4T5MgYCrP/ezSvfEis+zEuqD+Cux\r\n2Ms2IG/W0n7246nCdysROv0BDpnb2+p6IEtwYjywPBwPbEDEjeRY5B5PciIw\r\nitdALOMZRpyTcmMdg0pdHrNMFWW+RBF9xzrkam/SFr/tM0wVB0K1N6pKRbgh\r\nYO0sdqkwARffhkjOme4X88np695xW/FUOFx8eRGE/YykEHtn4Qv55YQjF9wH\r\ngj64FyXcLqIfO7ejAg+/Cvo3fXdAjSLXcSbBXBdzUh7FPoxHNZMRpAufd691\r\ndS3foow/dmNllujet9ADkQ9QYrTgqDJ1jPdmXdc0NYND+Hd+UpB4DqZhH7OD\r\nR9VlclVv8IqmJ5gxEhV3uaRWmFPrOTo71YE=\r\n=CFML\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC48c6pwSwdoQdErgLjsqiN6dcSfJNiPvVU5sS4MuTL8AIhALsn47u7qY70a95CtvJnoU6TUm89xsJioJkYbc0rtfRU"}]},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.8_1648563922282_0.6576046067243904"},"_hasShrinkwrap":false},"4.0.0-alpha.9":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.9","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"e7299db6b37b027b6aeafdacb75f45c632898674","_id":"ethereum-waffle@4.0.0-alpha.9","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-VCFRsph6fdeQNT3VPPH433PKc/K8dFpGUMRf0ykyvIw45tXORFGRFJkjJ6bRTBJHOwdEMDaxkKDIokF+88652A==","shasum":"fe4280295bea26ce3f0e6a36482e2c2aeab119a8","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.9.tgz","fileCount":19,"unpackedSize":28936,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID+qen+M5g//d0q3pG8b85bWWpbg/hT5X5IlPjtQkVFFAiBqcYtTLqoh408JhWzZgKIjde0uHFGUNg9Ti+v9E28B6w=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTGAWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq/mg/+Kvge8uCtsOD+AoxTrK8PV0229FMAqE7GYsIkvkJKbjjxAWJV\r\nj2FxA94U3x6q1rI4ZfAmBQoQz60I3hfM9iorwugkumVpBTbdIdspB3nEdgwM\r\nX0D03aoPUR0z26V9O1O1QiOMwG5tGNisa3Q/UwutDCVPI55DqkpJvfEsKqGA\r\nxp2whHyxECfN04KamyESc3YSOWQc2HeEBXDJ0B94YG2/9DBazfLTHRShbHyI\r\nx4FXqpg9DVmGi/1DMt27FhlF7b2WDG+9X1uY7A3VRuoiVbOHpYu6SoX6S66X\r\namT+76r716sDWsTooM9ePob6RrzapfXdhJ1/S8jn/iAfE29qwSg+dTL1KWXs\r\nQUQ73uJX8sBd16dicFee2njbK25HSwPYILe+OcTZSaDvDLQqLsCBpMcUMI9J\r\nqYziAsFZVrpYTTBozjmrLZywIU/oedGK1AMhFLLaIstr92Gb2syaFhuqPM/H\r\nICSVJTD4PNOzkQrHhUCW28r5czhgu7EzmTH3+03VNB6PSYeAIEt7B7hm8nI1\r\nAJHompS62Y3C1zMTBBW2hgGdqEcOCAqMOAJNkZNLmi45jCNU+Ne4t/RiJbXI\r\nBLJfSAe5+TGGvsoGzWm5Mwr2XIvXXzOLsNxG/UCrsY/aKg1n5yi2rGtMBMAH\r\nJPjciT5LSN+TguDYu4RDHPbVSxflXC4re3E=\r\n=6WGQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.9_1649172502785_0.009460098059003608"},"_hasShrinkwrap":false},"4.0.0-alpha.10":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.10","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"528e32b3e375eb66b2f111ad8c2d5da95d51c15b","_id":"ethereum-waffle@4.0.0-alpha.10","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-jrtq3/iH9RtNeTjD9xCJ0904BOPObwz988l8pdP3AcNPUAJaj76znLNFIXB6vQ4wPv8RLHQiTtGXNbu6ihspiQ==","shasum":"1d12b64961d765c0fac194fb90e0793109d62af2","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.10.tgz","fileCount":19,"unpackedSize":29091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAig/kfwIdJP98w+5ED0/4iEPSAswj0X/RJF+0OHEUiAIhAIvnmFLBTUzfOw4NsawIt1vOb+7N54CjhPQ5N9pS4P0U"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiUAjgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoR1w//XTNGA8JZ4NezXdHgbinuupUIDlWTjh0G/O86+tI0Ori5FdUx\r\nba2gruonLDgimdw7Sxzb3vg1uzg2JmEqDv4R7gE3stP74ZvPXsesXfUyQfzB\r\noHfl2xp4G4sv96GVZcaMNMamVAP7+9ud6TfUBLCHzute2ii45wie0ZslHrOe\r\nk2JZvYjskAuvZ3mgifKYyuxngtjS5g8NgkQGtSJCziaYTmkU0mxDgN4lcijc\r\nrBvJWW4baWaeMSVGsZUYRAZrCdJogZusSJd3nsEhIwX7m3dBUiEfKBNuPPy0\r\nnVzUoW4l59xxZiQQie73rTDbiHUtEPgdhLvOklvD9WiLiBS6Y25uubgr68Jp\r\neSBUhSCA4ziWFjN/3aG1GRxvEzKIQxGDLWvAxHBUFAHP1BE+FS+u9W/AtIGH\r\nLgE1jafL7ahG6xdtZmy/Hod8xiLyffhp2nzTy05BinDiFqp/5lp4x7ZSk+Bz\r\ndzelPE44dyrsuoUNZuFTyyhJmpiTRhbloL4nJ1fuIvwBE5k2DG37kFVL6QxU\r\n+We8IJEc1oBIGzWEzqyOI3gQaZ3ygAyS76HmSFCOPcQ5ETUmXpJ4mzyYqRXa\r\nt07SUkcGlVXDJpleQC5yh7O/4sX7AHLioW2P8BAJiIqa5tmvvaaWf14gnwm4\r\nyYH0UxPn86oJqyfO/SyM1D9XDrP4eU6km1g=\r\n=Bolr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.10_1649412320141_0.21366416698607282"},"_hasShrinkwrap":false},"4.0.0-alpha.11":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.11","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"ed044d59f258f45fa3e155fe6f9b271ce9d39de1","_id":"ethereum-waffle@4.0.0-alpha.11","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-w/QqjNEgNfLMbN1YteokK/bWTJNThDAeYW2nDog1fRs8D/5rcdvy2UzdO8kdjByYfKR7QwAvpDxqTa/UtWq48w==","shasum":"4a9719ec08ba601690724cc66f44ee70f23c0b34","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.11.tgz","fileCount":19,"unpackedSize":29091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEW7aKYJRlPyUE+1cPjviZrxLicc9siGHco5yHcyXXV7AiBEX3pOtHMjOKM/cFBjoUKJxDhrbizgDAiG1Fdji9pTCA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiUDcHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkoA/+NHnH/54opaTjg18EGNZyE1rTSbL5okIIwcODCKSqONfvYD3y\r\nliXtTdKsvleRRwSUrHURBLQTfr+DD6w/FDkRh+ftvSMDuWGj/INuJNp5gS+4\r\nK20isZzvT5N8P00lVLu/jfVGpZHEq3fdpnKiixu/MOKw/bzc9uau+te4vs0l\r\n5iYlPOMYFfBt/2vDijRscyTpqR8EdYcfBklG7S0YqI9xQeXXyR2UaFOERltp\r\ntIeQ67p6F2gcUVDdjXZmB65luhzzqCSbttzfRiP977qHsg3WsLt6j/cpUwV4\r\nDiQAsnk6ItXfgdT8UPjEGIxkKqR0PGKvskmY7P+DnfvNch5ChiWnz+8Q8hXI\r\nbV5X9KuRWff0i07ePdWY3DOoGi9R+9CeT0aKjMg9l1G3kHhZlLHyz8a0NKHf\r\nRjA84y2+HJ0RmmhZmtHMuxi2BoWtMkSCRFwUMyIh4kq9teCZTA8RNwNG/C6T\r\nC/4Cn8oXfy7ukzbDp8ARVuHpCrKInQ0caQCXHkgm7xlUBsWTf2frOaV6+Sni\r\nSx1Vc4G0GDyMETSrnpG1K1GAfBCizxDGVMrSRHzz8oln8Ss7f0yFGQ5DLg1N\r\nC8z4qo6m0Q0vb9ePhFfzNWHZbZbthowoIxUvsELbCjhQxlj3RvRKgNdQ1y5q\r\nWptf6sunSuaYfEq7odj5002jHdvMkGhXYKg=\r\n=0q/8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.11_1649424135357_0.5542066009933315"},"_hasShrinkwrap":false},"4.0.0-alpha.12":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.12","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"c63d7943b840e3695179ae9414a7429b63ab86f3","_id":"ethereum-waffle@4.0.0-alpha.12","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-8hRRQAWiuPpEVpW0oEMmxH0wvf9sGUGTPDFRr4iJuV6Ayq420nWvNyelKwU5Ly/dAI9y4bvR58HUot8yhTl6QQ==","shasum":"50ba8656c975436bc4b74003c345965e7be52dea","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.12.tgz","fileCount":19,"unpackedSize":29091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlWniSOF+meX/L/1jt4s9gfO7kVW9mo3jHyqM0Y96BuwIhAId7363nS9quuXArC8aiDag10w0E4lQN0rwHAFNsx1lO"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiUDnaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoS4w/+OuXQkDLdKrhQNU/EEuiEYQM3DrIaSZHRv/tN8wyS/zMjrnqq\r\nPiVHcU9rS8dDCl8KP36xgoELjaSTLzaA1EElW1UtwCanPBaeQAUhGbJwyorQ\r\nu0X2xeZ+cCA376nUTAtbkkWTDFDH79WffKCbLimPyGvBYMiUmGaoBvwIzCly\r\ny8n939zT0Gk4nUU1hNk63dv8wk6KI6MQmBd6YV50y3Xt7ukirciiHsd0FOXy\r\nbTELrgSOiQXBxD0U+yXiPEzt7xEc26kbwh6DV+Dq7ihmDKLlO7ZxUUsC1rhH\r\nKOXb9sL5fXrMDUWilSZHZ8PD/41o4BMZo+7qLlFgyWp5/29qxRACnMIyvBce\r\nfNSOBXl5hDrpXrvglu8pYYZBZHYPiXnwgk823DsjQc8lLhD6iqt5hV7Vx4zn\r\niXZIdjroOCufauC1AnXSLMxjpOuEINZMLoJ/1yHE4z83en2Pr9RpMyLgjDSM\r\nDIU2whXRlc+OX+3TjrS06U0jl6lG9mNamOK5ejlnO3yke0oKOA+CnG+bYA2R\r\nTCs457rPvopqvg16a3ioYpeE8D9VIOV88e2/HIOc+4Kr9I5YJ+GCYBw1s0fX\r\nF4UAbdBCV9ApA1LNoHUlLB1Jca5c44ma0/P8JiKgKCl73YYD7CnKx3T48pS+\r\nOpLuvo11FhRzumRqcNmIusyULu0kvXkLq2A=\r\n=L1VP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.12_1649424857883_0.7414323009523058"},"_hasShrinkwrap":false},"4.0.0-alpha.13":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.13","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"fd1ce01affd04e81de568ab2f51bfd0ce0142654","_id":"ethereum-waffle@4.0.0-alpha.13","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-KVmdwyjHGxr35ldioqgKXP2MJPLpH0apAVXb6sIgJyhnaXebb4PmpURMKZI/BLQuIjB3StJvHN+H/JTCbu4BeQ==","shasum":"0723eeb5e09a71003e7cdaa41d3fef56381e2e37","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.13.tgz","fileCount":19,"unpackedSize":29091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGp7Nif+UM6ibX57tNvi0k115gpho1s94Shy9VPfdd7IAiEAyf0v0c66rda3pfsin4t3IIsdSUefPUZvNXFaQraGfxo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiUDt3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq8yg/7B1D/jJTFqN/WsTKGAqwXaruIoFTA3eDUM4EWbXh4D4uRGKO1\r\n5pnMm73sHsrLAUQz3BhfRKQ7lO5oT/pUu3AL9lLN/VOAkcXbNPIxpQoS7xDk\r\nZlJG+fsB6iqwunRdANowNAV5u4nZRi/1Bn22e+2pkrxI9jjrIMefn4nXg8+B\r\nMI+/Ub/if9LwPiY+laPtc/70xblwvpMde/IqClYd+WMbFNfD1Y0CRL06GW4k\r\nQ/poJzDwvdrtxYDRao1P6s/NhRzUnjE7EcyC5Q9+sWyEPoapVajkIhrL5Lcf\r\nu5YObi6inFlT/ApsV02N+pKREeKc6F4elhTUCtZ029CDZXno07+lApnCg8oJ\r\n8elscCEUORDYNd6z1RopzsPb010xw/aXHUDlpJFDA9vUt1O/FK7fjM8ixRWE\r\nITh2EEpQ3Rn9OE/NclQUquqrNFnfMixoRWLWSDTvjTEW5JrEefPNIn7d0z/q\r\nEkeejmpCGCsK+PWazCA6W7RePXOT5DO2Xdg5xcqbTy4zc5PwgJ00rUNTQdDQ\r\ntIuIo+5YXBCuIjl2IquhjQKUtAk6CQT+hICTCTkbaBAgKIYKLHkFF7UjgUTZ\r\nc54ynTfw+S5Uuu8kLgKlzpUWlbHf2qNZ8bnl7iHAUueB2YWTnQizMuqzVLCQ\r\nBMboYoYebAx+5YMUbmpKFpOFjYK1/kes9m0=\r\n=tLBe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.13_1649425271190_0.04360041330247988"},"_hasShrinkwrap":false},"4.0.0-alpha.14":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.14","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"96210f0ea784ee0adfcdbd53044232b1f0c69e85","_id":"ethereum-waffle@4.0.0-alpha.14","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-3+bTOsDtfVf8aE7wC23imDADkpgi6OoiOhTHtW3YS34rQ5CSBC+kxbzDYF8ugOLYIKAhjFWuaVLLWpvuDc2JEw==","shasum":"7857c335f5d233af7948bbbea6954fdfefa63bb7","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.14.tgz","fileCount":19,"unpackedSize":29091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMqZGBpgh2wZaKgyEsgzJ0eawdYvkLzNhEe21YFBKtZAiAl60tr7rzIkizOHVtnbd194/V0q9E8FUGSjelUuzJe0g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiUD6ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmppqg/9G3M2IpXkMwb0jJ8qPtG7XPfFpcZVtjdAyfWFXXddboPLLmvE\r\nROH+iE+pyenrOynblCVstfsnC5fpIN1GtlB3HIg37VEwU+Ulc3rLmt6+bAKw\r\nvVXQUUm4jkVWCroAXYvxvUG3g1gfeepKZqyEPZdhrE9c27PWv5zzlSM4blrK\r\nChYp92YxvGayd+fseu/uQj7twwrjmSUw05QVJxgg46n/7+TmVopdP2mn9hdr\r\nillVFHk2FiaTV3MsI+I6c4uW9QfKV3cPGUggH4kxaTyMFeGbatoCB8CQUD72\r\nzvfuhtiLV2GpCGsZscPd7J1tPyLTosXqXpRpog1W7MrH03+bjdxg4ZWuJnjX\r\nw0HVL149tZCLml4tNL/0Rs7E4gUGgjzvSFhOxWzI6TftDSDUc0JXFm/WT12v\r\nYkyehpqYFKQ1jR0B6g96gSbFdmxqMl2bCA0tiXDO5bnZt1nFqloPV4rWAcQC\r\nOfrd/j3gZcAbY/uxcll1qtcg1aFRfm8jltA4/fVMnfGcf+y5VPpuhrYHTrqY\r\nBdJiTPfXEoFpduvYd57Cy0Niz/wMFwxKO8d8Nz12+Q/sDg3oD5qVOcLxzcfe\r\nv5guaXe2WUFl1MpnmE08sH/7XvrxGZtiBcRvPx80lUODUWMZlk7RhpzqdjbZ\r\nNTvPpoGx0ydVpsxSAw0pVnGfdmuXkvXq5Bo=\r\n=rwak\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.14_1649426073308_0.9464241604994379"},"_hasShrinkwrap":false},"4.0.0-alpha.15":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.15","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"b94c36999046cdaa28e71ebb47f1a399b336b9d2","_id":"ethereum-waffle@4.0.0-alpha.15","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-82TCfcQlMjLNfpZxi187LFtCSfEv3X6In4afN9b65CEtTu5VbFyJPo6epuqEYIf0LIf9zIC0qyRtQJnvcqoP+w==","shasum":"0f40f7bd73044d1c02f0217d016b2f83deefe25d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.15.tgz","fileCount":19,"unpackedSize":29091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICeJF76wOxM+N+9HvigYxrOu7Duucn2JdHNvcJrHkzMjAiEArIUSrfHib4jTjZB4I4GTBTRd4pIwUa06BZx+Gby/zBo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiUFxjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpIWA/9HYThGidIJ/gcGBd6hzEIyg2zIEDxTpj2RpECNabDJ+XKAkuo\r\nm+HF9/x+ZCFzgULmwcRDHcfFgUzbjPM058JooWzmpUT5VMPpagBppoTRGN5B\r\nCffHSrWBqtrr5rinRHKBZuF8OnkWKPEziR0wVlF0xK/rUfjy4xSgcqrtyGP+\r\nzTlVwtP2LbU6qLP6TIUY8gjDMbMyLgRWr7aQwenXbxSITzw/zo0gltWlj8hr\r\nOQCtcjM/Ibp8kki8aJBxXS21U+wrFBphndaP3vIxs6X+gdg69/WN8pssLodO\r\nVaQUIOV+b1ozEOgL18tyIFHkDpYP+uPXCMCzjRNLOrCVNIfYQw7wvhXrDP1W\r\nCLkEnPz9MkHzQO+nVc7fb/rVMWeCjBb2KbyIAjC1sklPEPBG5ozNw8/jFdd3\r\n6vRUHOmdnYKoRKYUWvKrocOhE6ti4QYKIEESQ8WaAbYz04lj+l3VF7hfE4F6\r\nwkxhWzOs/ovhul53k65/QkFh6+5aHWnBB/R2U4QmdJaV2nBnK+gqdwt20IcQ\r\nL27A+BnDDaiJ+2oNe/18ccUu1lTuX7ATRvG2Aamc9XnDMSP136QvHvMY9QQi\r\nbAbWf6feBu7Rsj2GCGWN/1WpmkdrmCFJdOyFUdJAy+TO8/hym1nEjZRU/7cI\r\nztklj7YTTmcVCW6j24oVCYVh9JlyHkyaXfU=\r\n=04/e\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.15_1649433698914_0.10104130935355604"},"_hasShrinkwrap":false},"4.0.0-alpha.b94c36":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.b94c36","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"f89ed312e4403bc227a6348df418e87b609e5f21","_id":"ethereum-waffle@4.0.0-alpha.b94c36","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-e+xPBOWMbRwvFEWx6l7oVgTaMIctc4gOl9yivJqcatgF7ya63T9gsDRTRCcm4nMplFcWa7Yyuy4rLZF6t6kREQ==","shasum":"44c9ada96257f6ab69334091d1278a51ce9ce58a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.b94c36.tgz","fileCount":19,"unpackedSize":29101,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCC3d8DogAzK+hQsEa1MJShbYLe50E7iwVAfcHv4j0AfgIhAJp5IlrkEpdafvA5btuBTCVCvhRWAYOzgqYUK3QWLNVn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiU/JyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpp/Q/6AkmmatXcKv0dlrJit+r+odKWGra5fyxbhi74SbUyAW8MbjLi\r\n35wY32PGk9QuwMge/YmELGd8wNd+pVGWo6HBn9kGb6xjDM+a+VIQEOqbfwCn\r\nfLgArI88+q+D9uILdJQzOU9YAKWD3nmO8a8bTfUw4k0jpoZCNn+b+kHHryMB\r\nkSBcfH/1CBTkJLomibKY4WhdMFQNye+ni/MzUe/HeqYVsEn28X+xNSFTPXuB\r\nZi67u1wxdLRC8mVNnQqxsLqKFoHwejXV6E3wUYVKdGHteyW1RMU+OHZ5Ho3i\r\nHn4NNDphiQwxBrjATVDd6I25vw+Pt1BUXKHQeEo6H67c4UdXiuXJvVfS3gAl\r\nMtRwS892avn91vrGTvZwaHEef0cSsoGLgtU1HtCOmtIQcnfDHJM6l2UW0AUB\r\niPMS2KpvXdBM7W8UBiCOAArRNl9sbrV5wTs6vC8G2ujcGkDkRYVFtGkTj/cQ\r\nkz9qr1W/iSPYlSJFh2w8I8DIDKpCuxaxmeEWneqTOVZQzHm7/KasqaFSkmXT\r\nDeMDXSkROb4VO801aWFIDDOxfSxLtb9nod3p61Sa9hG/Qv3vUfm2IdCdIJD7\r\nwFB7/Iw3SjQHgRuVHXZ5iNUmu77AU1YRra7F2nLsqCYM2ssKa9ZIfuIungxZ\r\niwLIiNEW8jyJnFMOom3Q4B05z1hXSOi+Ias=\r\n=HDLw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.b94c36_1649668721909_0.5898972558998503"},"_hasShrinkwrap":false},"4.0.0-alpha.16":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.16","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"3e41a2ad0efba3dd8820f0d9445ce43434c723f4","_id":"ethereum-waffle@4.0.0-alpha.16","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-pBrwCcQn0z/efxP9CLUBqRnyZl8PJLbRtq8VheccxjJ3ubfM+cvlgiDYIrmCuCxTGUH6i7rzRRAszSoCSD2Vkg==","shasum":"e73c2d385b08b58564718e6559144578f3b9a7b7","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.16.tgz","fileCount":19,"unpackedSize":29091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvtrGE+5ZJYSzxrHmMc2yGw4NtitZ270+lVk88HzYvEAIgWA9E0zqfS+9ldnRpU98rFB6WappbdwyBO88wxC+xXtI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVAqOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqYbw//WVsNVArOD71Z7EYuUFM2i2NXMHxttveS2xBEqUZ7BNbcvDjs\r\nzGL4LjgMcezWeLXbw9hKSTFIa8+u961oOJDlovxYSUbr+DrT9LNLMiZbJJQd\r\nZoyL0jF/V+JG6SFTrAD4eVYeTDZtYpuizMzCcRop+kcjg8AlaS6c+XOF0A2v\r\nxUR64V9CEPn02irzgeanyD7FfZslRe2HiFEdaas9QTCAJTusFmV2jZsgykuS\r\nV4an7yPL4r3CYTDijDh/iAP2/4tS9JuFUudKzrCoIhTnmpTcNCRul1rh6oMX\r\nTPX1C8QoA/xSXsV85hEsJk2GkviRO1tSK4b/sVKsZt+ID8MoRZUQ3MZYWVBo\r\n0Bwf9iQFU3mLwQ401VwniuWRrkErRAl+Uv1iGwBugY9RHnIeKJIkFVTWkYrb\r\nhPa/j/uSF1CgdZ5nBd8fFUPl+AMNBsrMBHGRl0sOBouMi0jt+gIViy8cepOg\r\nihhDgaPq8kSFJeGv2R8vp2qjwHlvpMIcwrSHEV8HjvwEOKmXZsMDUT4ABweR\r\nbsf6uzn1kKFk4AId7+c7l8er63ffSI6xGu/ZU31O+5neiItZsdc2O0aa+aj+\r\nJMrO3Z9I8NuuFXdB1OyGXpq7n/zjzfE9mIZCjITCu8kVBTpF6ComcfGYYSCZ\r\nhF1x45Nv0TThJJ+vElq9gMcGfwPLPxmwf+g=\r\n=OhBB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.16_1649674894012_0.21867120515614946"},"_hasShrinkwrap":false},"4.0.0-alpha.17":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.17","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"ffb59e3d7e2f00643a41a0c746b3a5bcd1dc0828","_id":"ethereum-waffle@4.0.0-alpha.17","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-KyKw0EGHneJ7WJy+GNr2aIBQgwMdPpTRA9vO1/mdqQ1YZEwc1MpY71k2iNNNEIJ+jxC3ZPjX5+cXNphBf9GvMA==","shasum":"21532feaa8ef59f49e736068ee52fe1374bf0d7c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.17.tgz","fileCount":19,"unpackedSize":29091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyNfDdBjwcTLvPW/qp7DFfpd/+SObKj1U1OzrOiJ9GzAiEAwlZl2iOK6sEYDzvKQ8w7BMMkJZcFq+k590BsL4Tb40I="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVBVGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoMcg//YVBMQ8QkVsQP/oc2xKrjAKB0C8c2EfQ7LR+h4nRqa38IhEIN\r\nUvEhfDnHpTqm+uq4pm4l+1iw9r2Ng0r/i4g6HLUIG/m93QwP/QKvGwt/2OCe\r\nFu1JPdUK4b14WKhZq2S/Z2TV+I7lR5uzzGTNSeRyAuYPneeJI3wS2qXf3YPo\r\nvRnYH4h4YcUPX5KPtyv75KcgvF1GcDMyJg7KY7cMRZCkrpc5TE158/O+s12C\r\nyBkLcRBKHeIeKameXVWmjvP9K02OjZyVxNVHMMEFgahP1wpbBHFTDkXnzv4g\r\n6boRMjImuZfNZmsbbxxnPtgDKAtd52HXvwdrtnA9cHOzn0dtZyJmadBbNEWY\r\n+8bl4pS2axT4VCe31enonk1pUtsn2fCiKpgumqqkzydl1HeKxfKv5G+Wf1Sf\r\nQCOTKIjnKmmWicEkyugN0lQEdqT3THzh2x1/qt82/hEpVB1CPDrWA3LJ5LnL\r\n4AdCiEBWG0b83GfO8T2vdu19DHqnzayeF/RgTe3LIAI3qfpTuoXvP7xzmiR6\r\nBuXvLfok6nSZqIUycKxeuztEg7UczNZ4IeNlQGwCBf8B/Yn1n0/XAIWIvkRb\r\nEwq9VxVodDCAOQ9h0pNu/k3SfQRfBvruC7x0CrfJUAkWKAg70A/bKZ7ySBQS\r\nb0gL9uAPWgOmXGlPjcQ1q8kj1MGcLsTN20I=\r\n=hee5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.17_1649677638654_0.8000751944041076"},"_hasShrinkwrap":false},"4.0.0-alpha.17.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.17.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"5b3953fb764eec816a6e67a40f3c12e51b915a29","_id":"ethereum-waffle@4.0.0-alpha.17.1","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-TyEjBGzcgLw62OVB1BEvKkW7nFm6Dz86EWU/m5Exv3PB2PqmKGRoZJu3eIQZHDpu9YfEY6oemCdXMQ9qwFp2dw==","shasum":"f0bc45cc36653b95bc8cccef46193ef89436ef54","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.17.1.tgz","fileCount":7,"unpackedSize":16853,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGEdMibJHiHrF/DM+QIj46MOsJXUacHT0yDXsAT+ugaoAiEA9iFRwIAAhzgB/dvAyFWWorZWaq5nsDITgfrmvxKcQGI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVE+PACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr8oBAAoq4yCnIf9MJ94cu9fnprBWxk4S+J8w1yT9mZS8jOoru5vgCk\r\nIagpiP4/IO39Oaf33jh3m4UifRydFKJRMzW0wpjp4+trszY+KWIFR/2aeIoV\r\n2u2aAXk+1ObR3lA2ev9MX1uynm1vX997/TR5VF5tP3R4+V3ltRpWERyYZuaM\r\nXLEt7kgz2DeooXyAKtiPxiJDMvxe8mDu3uSri7PRFRXAmSM75DmkQQZOalmf\r\nqQu0KkIIFw9PsvsEiVb2W4HE49YeiXsm8gBL9RS7S86K1qWjT4FQaR4uM2d8\r\nKRjtGfXLxlx/VriIil8+Cr3PK/MlbANMFGiBZrBf2lLoFX9j30AV77kckqOY\r\n/5KisT+BI2CgonqpgdWKYMDq9QIRglSA2BlbMloBnBLqu26y1BmgOl/Zw0BX\r\nSqyyxC5bsAvWquuNSsV7dr+EnePztlVvjh+soWfkE1i9wTEzshT19DgYoYRw\r\nn0pVwLWNP/kFflGHghhISbto9KtGzGWvIvMKF4Ulwh3ohhV9s+YMzdu11zEc\r\nQAauqfwEegZIJpt2gbWRLKZGBpOVIKhx21e15sxzAZ7cgEm/zJPCZ5kFvwR3\r\nFlaDZM9B/J+O5EFxgYAizR/OLVXRWcncDI1RjB/cSQ1Z+2ZfOBzQg0KjFmlK\r\nOhrKYc3Oh2hiCmNBhdJgIursUjsvKq71WUs=\r\n=4rLe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.17.1_1649692558723_0.5041766202442044"},"_hasShrinkwrap":false},"4.0.0-alpha.17.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.17.2","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.17","@ethereum-waffle/compiler":"4.0.0-alpha.17","@ethereum-waffle/mock-contract":"4.0.0-alpha.17","@ethereum-waffle/provider":"4.0.0-alpha.17","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-alpha.17.2","_integrity":"sha512-kcE28JaNEHdEWskUFc2qvjxy6H+h7SwNxd8SatG7e/s0E7jsB20LbwJp5dApOyyhgeboG9RBmw2he7VV1fuelA==","_resolved":"/Users/dmytro/Projects/work/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.17.2.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.17.2.tgz","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-kcE28JaNEHdEWskUFc2qvjxy6H+h7SwNxd8SatG7e/s0E7jsB20LbwJp5dApOyyhgeboG9RBmw2he7VV1fuelA==","shasum":"8efbbbfda1a6bdfb5885cf43a8a79e3fad6f292e","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.17.2.tgz","fileCount":6,"unpackedSize":19442,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE19wvSOOUmjpxcsD4SP2dhwg/Kj9Doxc2OrXbUk1aXKAiEAvP9vQb1IPiZey25P/HNkygG0Dm/q9zdbJut3bbGxto4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVUuAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmopuw/9FK9MCXogvp9mKiqgrSfp0PkNHEE9Zon6KMjoENFCzFzmRrAV\r\nzNI/V9y0OsRp2Dm8D7mEhkyjivBmKCu9fVFv7s/iE1PLte/Q8JXW6hxK+Thj\r\nQqEyi0SdKcqi38cbqmLgADAHVKWuUB7ctCaykPSFpTRR3sNjK+dGhhtj7yxw\r\nUDbjywxjCTh84DIhER7buYmgvfQkXJZQb2c6BdDgOY8gVZ+LWjrBYmQ12+YP\r\ngnDflHXr8V+mDv1wK89elcDahfX9bUPbJUI9y1nQOHA8xVbNGkoFFi0BFC9W\r\nLOELji1xEAxD+TxgvENdGMLg36gmGp+sYbvOwGto4yt/UlS48f+FB6H+df9v\r\nGL9xaXWengZttAJ6UQFcveJkNxXt9xbwZQWHt7UUntI/OHFbA3AHEKwsRG9u\r\n0Jqsl7IMOzibGwhEwUafk8TfKH+Zr6cnIlBMUyMlzpcPbQL4jclv6L9Hsyf3\r\nkywJIYpmUfeKaBvI7YTyEezlplNStEJcH3l2swQtsLRCbixmB4p2VJYQzdlT\r\nwDgXImRns3FyZ6rXIQeHwU/hj/2sOAgXqflSd/gpAlI4l/S+0pEebGCxfMTv\r\nsnD1wCPkfVPq/Mvp8/053QBbNSNBWf/n3O1A6rHdyed2mqNh2GmuqhcINrEx\r\nuypwQABfGqZcxymDF5B5JZVrWWZpxu3lFuc=\r\n=JzKe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.17.2_1649757056071_0.06692322398262962"},"_hasShrinkwrap":false},"4.0.0-alpha.17.3":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.17.3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"5b3953fb764eec816a6e67a40f3c12e51b915a29","_id":"ethereum-waffle@4.0.0-alpha.17.3","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-XcOTG2xipUZbjoFX4c4T8kIy6xdXMATJf+Yp2i+cDqdS/F/EwKLj5ZG261KJ2f9POIWAN+rIK52jTxuYokfF5w==","shasum":"ac26a02923f34c16ff648c6e133ace0641f70372","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.17.3.tgz","fileCount":7,"unpackedSize":16853,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCH3mifOOFverkI5kpHJiPOP0NF5IQigaOdqI2N1ahQgoCIQDnHUEnCrrOdfG7dsYceS6oiSOgsSamB+O+/x0hUEsFzA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVUwqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnJRAAi+DEMM87eu6pDS+IOpa53iKelglOAX+PQSfrQULMAGjA8tVG\r\n0gQDJb193A6oEhcKugTb+96GSfBva6/rngV4nVsUiQ9v3YBfwioK26RTtpNF\r\njf1TJXjNFbabyVQdfVVIszWTPsCWf1Tm3ZNSp2jg1LsYBVZtwkb3tpb01Lxo\r\nM/1KyKdJAvvaIRCHAcaNmlP0WQ6N8UeHF3Ie9PMtYVSMpZtsP5ZWWlazYdn1\r\nAmXOjPMqPxXzqxGk5NA6FYbHjgvso2HLATWIBf61a8MZjd3nKd5DIc4Rsgzv\r\na7m2hMCkzu/ymxTjSavWwyrHwhat+HbLJlVxBoETzPWkP/krKSNOzlEwHcWw\r\n/rkiT9eyguBxfzCoKHnqXV16a0Cq7fCOYsoekanlgjq1DMMOumNKeeclk6De\r\n0Sc77JQ3Qanh05s2PJI+9c8k62IOL7so1btJ0FHznuiAPoe1ADqYIHxDcVmt\r\ncgOpiqzX+NVWFLK8XFcW/oAbGouupLI0E+CH52qcUw1aluSjEehvtCIFrauk\r\n/ZumOcCT9eoZzAMz14Gc6WEMhkLqu59lkyBH349QtBfG/zkPrXPP6F2AzOwl\r\nz1o8wuGNCxsdrrG7az9WOmo14ox5GBqlq6sUxZtL3iqQWR+3GlzkInbFJ9dK\r\n5famGQqxT5RUlG/WSmLLrYGsIgFhpSPcoXo=\r\n=s22p\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.17.3_1649757226379_0.6547238342603989"},"_hasShrinkwrap":false},"4.0.0-alpha.17.4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.17.4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"7efc91f090bdc0170667653e969eb9d41cdd775d","_id":"ethereum-waffle@4.0.0-alpha.17.4","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-29Yhea5qY8RbSomr4lXlT0iro6QY/MYH9BuOTMk2I4zURwqYXtykWbu/LhCqFBAvOIwsq7OZMkotaCe6fICZTQ==","shasum":"6c69fba01df52709f154b539f5706ceaf59da9ae","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.17.4.tgz","fileCount":19,"unpackedSize":29094,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1/7S0jPVYi7fjlWg2XyiOOyzPnLwYY/dvc2gczc2B2QIgKIHcmWq6xOnxBOeNmT/Xs/OUv/d9Tm+rmILdNM9F8So="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVYppACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmovaw//R0T2gq8YPKt7plNWEdNc3IZ6g3XQpI368yuVijxY3wTnbdu2\r\nFJLa0MAgDgEbW6L8VMwK1qPDQwDKSE1d2Au8CPMgjGCz3J/M7PYeblD9h2y+\r\nJjuvw6PBXpKttfAJVGX9uThNaSdyGx2gr2j5diKSe/+ZQIti6z7shxm+FH0D\r\njwMibQveWYgf4qe1ICHCDhASusMF+AzoaE1++jBQU2A5zmfBBdnToyMvveyc\r\n463I93Rmp8MSu99HY3k8POzjZ+8mqRWd8yOg5lL3jnoCxha9IQ2/SNER5Bjc\r\nNtzwvg17M5nfIzwGPeuVDBI8F/AqMXrl2r/iMoKcTSv4iIU0+c8nnwykKlKA\r\naxiJQqIXptrv4gE5dAEYpzLVspRwRRnxU2PXvUtE8GJiquVfHeyhHfx8DtGF\r\nW+zJSnKFltHIwYqdyNzKv6/rHnChlAVBF7ehju2yVvoeeQMKsTUvtOxqIR43\r\ncPh0uzliOEFFMAFj8TX8LPWpUTjmhMxn9M579fi7rVhN+krWqsLxKjONEpC2\r\nMEJiWzTBscMJB/SDujvS0salRcApuR+0E2a+7aja7TGSb5XXYtM3PzZDSY4e\r\nHCO3uyo3Yoyfb6OC0hntiOnADR4D3B5J8bNS7VJZhy9d8eIdVqBKJLW0txn2\r\nyGJ0HC+5LoKa6puv+g44AuKqrY9wUsdowrU=\r\n=710U\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.17.4_1649773161677_0.514184324508244"},"_hasShrinkwrap":false},"4.0.0-alpha.17.10":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.17.10","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"d3f77df17420c2cbfe2fedc8fda493fbdfc110c2","_id":"ethereum-waffle@4.0.0-alpha.17.10","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-p1StLDaHOa6XQUBQrpvkcjyV6WhRjAd6nmx0xUN+ART43VvnOjYnfTE9gzIcn/TV5+qmS+wQUKTCvoGHUh1cnw==","shasum":"c8892128c29b3fad25d9931fb694603da45ca36c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.17.10.tgz","fileCount":19,"unpackedSize":29098,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOEzP0eO63wwXALRBK/RjmyBUjhCx7RCCuJEs2fwLJiAIgOdPM5cfb0bNbgOHRRdk5i1VUpV7NN0aMjnCzbQ3L7l4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVo5NACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqwtw/+LpIofD6xMDab+ywP0ExfUn0Dt6DaRhy7T702fAFs2J5HI9w4\r\nEGQ+ezAWQwE7zAxRMdXZkqqFbkW5UkJ4CHpIS8JaGQjuNOsSUHn9RXRGlVJ5\r\nj+gCyUfHM0xhbXhJnn4kZhZ8yZk8hYksnJ82mHFrDHWsfq0nfCoSjo83dV3V\r\nRd6Uqvc4rp5lWVPkZKanJoCQAxeecxznovjziEM55Nv4zQ8NvRcHJCqVHsuY\r\nkRBQ1gR8UCIgBh7E7YZVzR08RbLE9o7GkilGge52ploZGJz5mUs2e8TDEaro\r\nVgxHxmISG4frztEh/k/ifXynyEDMs+kWDZ7qXUFdARXGqY1/4Qpm4aJmlkqg\r\nrAmZpQJgnR+x2kskVmJsG14sZ0FAZ0nbwEX2FAq3sPxPDWkR15soMIF7PdAD\r\nMoGv/FBSZcnSbS3wSPiNNN8cwpqD+/HN15/AUuNnWxydDFurw5m2c03AC1Su\r\nGcI2/6mZu18v8JKC0axq4xJWKENjwPET5xDXpz3VXW6tyXY+0/yCcHKfV/+x\r\n12o3pdfXNWaRlZ4hymkL8KnjQQs5zFaxoFnqzi13C5u/XxO7qaUiL747ZNY6\r\n906Eh9Ja3h0DkVrB1CXOZJVO7IGF4Moc8lSimh7MhUeKZ73EISByAYLH4cui\r\nsdtyuan7WBI3kL+Nm7MUeVMJZpwRTUZIKyo=\r\n=qjAr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.17.10_1649839692867_0.41276734284359695"},"_hasShrinkwrap":false},"4.0.0-alpha.17.11":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.17.11","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"c44e6dc275cbc50b59ff75bab7b828045f7d1329","_id":"ethereum-waffle@4.0.0-alpha.17.11","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-vWSElDdDg3VY4sIQWY5ptFlTk3O80BDY8/2FKz7c1o/8GfsHfMEPbCxnPOtu8ROZWymFbEF3BGRxtIH6IOjtyA==","shasum":"ae66835843d6535d06609f8c1b42b3148ef9ebc6","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.17.11.tgz","fileCount":7,"unpackedSize":16855,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5zgRkds9spOTMQ597fdJm2zz3WjDudPPNzQIJ0aau7gIhAPBSd4HXhppY7FaKAXVrxf8E2tnKDBW4LQcMy2+/48Ec"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVpAAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq5JQ/9Hz9qohzJyYC9+US4WAz6OPVq8laaMA8LqA2M2pIjYFQmqvN4\r\nZiFXgs3NGLekzEdAKDl/HRQItTTu6aA2DyENLzQoRL0Vrves1C655zwJs7aw\r\nx4nwdvphH+LJqecoQLvf6ysuxVuRjB9ioFSQ3mjAOszvg3pB1kagkXOKzQH/\r\nFdWkdl0oXYS0LiqoT+T+k31vG8Nf10rnUIklS5hSl7MuDmbs3qpJVVMqsN7u\r\nnga+9hz4bYwB4HuuWmDe0YedErrdMCWRDDd69OtM8uRPcqEqIf8LSHVo044Q\r\n1ZrPt80XtzD4g/foxwezAT+7l06s0+X7Lw/IzXMb3iUT+O3SuMmJeM5ssUoL\r\nr/azWmM7i0bZ86vBrKvZMKUMkYVVX1MPsY2GFwD1gtUrDUrBR5yHUL/QA5xg\r\niPpUmmQ3xbnPLs6oJ3dIqK+MxrCfZ1yqZPPw0GgqqQOmdQin5GkVO2Un/qek\r\nvQzsO3TsQ7jdHDxm1ypRJhghdLSsyQKwlGGW2+7Ed+ymG8iCdWBendHhkR/k\r\nGXl68C7sVZEcrbWo69Eq8EVk+5TCUGBHAtbtA/Xbz/Rw6OF1d9gpwVqk6UbK\r\nFFng5cfr1ikUzHCDlGbno+qR+B7vn4QIAQ5yrQzpChHjq3Wvnw5uHThsyj3U\r\n3fTOTw5slkMLgh/6iQV9mrZFcllhPnHpOFE=\r\n=yb4+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.17.11_1649840128508_0.9599461213461371"},"_hasShrinkwrap":false},"4.0.0-alpha.17.12":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.17.12","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.17","@ethereum-waffle/compiler":"4.0.0-alpha.17","@ethereum-waffle/mock-contract":"4.0.0-alpha.17","@ethereum-waffle/provider":"4.0.0-alpha.17","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.0-alpha.17.12","_integrity":"sha512-YxtNTHsemSUu14LwJbDa9IzP8Z3mdLU8Hy84zB2oSuiJj9Sm+JjEz+AUA3GL+x1dOToATPqCExl+Izgnf9tK5A==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.17.12.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.17.12.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-YxtNTHsemSUu14LwJbDa9IzP8Z3mdLU8Hy84zB2oSuiJj9Sm+JjEz+AUA3GL+x1dOToATPqCExl+Izgnf9tK5A==","shasum":"d1d4c82ba5f3e1a57c5e71a64f2ecd6129697dc1","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.17.12.tgz","fileCount":6,"unpackedSize":11986,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA1YiS61gCMqijJjTnrPmwGcQikKrdHcZqx8Z2VrJSB1AiBOcSPAr+SygRZaLNXSEMzmpusAW2Ez/FMxo6p8PNMRvw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVpDmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2cxAAmBdJkl/qRZfNJiJFUZytWHonf9OSph9JLUUtmnTSuvE8R6R6\r\nLTSIqyvIyw7Gxu8X+2e+UPXUm5uzcATZQDyWup+G6PvWlKXbnb7Sg8gkjzGa\r\nMnnAGxd2f8sRNREkoj4JcOID7UkMG3QQi/giaJ5FY0gko/Q5FStfwfF6x0pk\r\nM1a+se9y13RmBiGunNO62OWtHkwXcxj0KVCz3tGAgPXDqO7dsjGHH8tS49E/\r\n169XeRFuqBLwSj87gD7t7eQdrybGjuuqXmnO0vHvm6p1O1zMTptF1WtIgFCt\r\nUWsPH1SqPj4Ac5HvXdUPy55pvFoDy5dFIGuuBS0caEXLFZDSRZy4fgMB1dF9\r\nqVfDTEQhGZX33IG7oTXolLMLvDsluSPyMCJr1SsFr7BNhyZmbMgXhuZ4Vj2/\r\n6onKLYPY+WvHTzgUCXOBQAHekJ83gu12TNm3m+8eVW6SF00y9EBdjRT24jwT\r\neL2GCfKwoYTnLZLYR4NdeSvbj+383+QXDhdb+G1uvbjeqR9BszRpMQysNcC7\r\nLW3grXeqQQPIXtYKgzL85d471+Ay7YVxqGlx4JWHZrOprAumDW0o+1F75QuF\r\nZQ0LrQuuT5aE86tyVO6KdHCi5pUcKwAbQXZZ1DzH0XF0hpa9m58a8JbqPWkj\r\nJM8Zninkq/tbmQ615VMz4rfII8te/32tBWA=\r\n=Zgz+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.17.12_1649840357961_0.5465719545776377"},"_hasShrinkwrap":false},"4.0.0-alpha.18":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.18","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"workspace:*","@ethereum-waffle/compiler":"workspace:*","@ethereum-waffle/mock-contract":"workspace:*","@ethereum-waffle/provider":"workspace:*","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"bb64c0ab085262441f4106111a6a051e44459f49","_id":"ethereum-waffle@4.0.0-alpha.18","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-I1U0pd/EJXG7Ku3PjWfLApaWCs2/z3yF3W8vg6AyaSCzkOKDKTsIL3pUo2DUMSNBFODxGeFiCfwpWpdBS+0MHg==","shasum":"8123ee8140d7d8c75841620633d26b10a9a2212d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.18.tgz","fileCount":19,"unpackedSize":29091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvXAa6fMyiqLa2+n69K6VXnA+6Isj7xz1PYr+zvy6piAIgVGBKd8/uaGbuex0ZlYdBdQuJfe1TtmK0riqLhTXbFwc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVqL2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqdJQ//TWyND0YZHO/k4B16h0dOMR6443UC0lO4UAQyBSfmuoH85DXd\r\n90hPXGaDBlfjTf5UfJuIw5ofQEpFZQU4XPJeY095oRNvSkBeSfbm+3JMVA10\r\niXBCK9FoUK2Xj9q/o339+tmOhbfKt2mYVylNghmbVPGaWegUg3pCD56v0FlZ\r\nZAqJtwTEZY7nifBBXeScGb1Xgq+siL4qoWj1hr8GtSyFuxc7YTkso9txuqnn\r\nt6cGGPYVHPfneuds1Zjmwcp4WQMtNHBxwFJ8tnouCIv5zvzk6Erwt7ChtJ94\r\nwG5Vhsl4ab1zfwrBX9fb8yisV7Enj0h5ZGjFvwhbVMvvwYjjEIaCdS0akgaJ\r\nFwIX82a/Q0qzNyk+1yo9ewI9RdXLds3bq6tZkvSyTQI0Q9FUc2SGbmIjtnW4\r\nQRJMYEcMHQkBfrTWOflingc3VJ8z5K1x+HtHq5AXlGaF24DcsmbdSi3As2a6\r\nId70EjFwF8Lqlt7q+Q1B1YXy76u6p4ZDLpngNj1z0v1yX03UqrheTGtaZV2Y\r\nJJypNrc6MbPoLbCcG7frVqKkLWkxmaqkKAd+Oed3KdvhyoVyKtnZ7URyi/Yy\r\nY0z8htfX2EJQH+xZS5Id9PqhwpW1ZCkK4A0AyR0/DQqVcCxGgqWSEtSi4Ta7\r\nbMhhtOu/icyr03ZwZHSvLm7xEsy+9OAKykY=\r\n=dPIU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.18_1649844982242_0.2732202024122141"},"_hasShrinkwrap":false},"4.0.0-alpha.19":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.19","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.19","@ethereum-waffle/compiler":"4.0.0-alpha.19","@ethereum-waffle/mock-contract":"4.0.0-alpha.19","@ethereum-waffle/provider":"4.0.0-alpha.19","ethers":"5.6.1","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-alpha.19","_integrity":"sha512-/5ESvIcqCUsKcJh3EHRBd8KneaQhNX3JmCRI+/4IalRavBalu4XwGGi2sG1cSSXylbYMhpsLDWoW6lPIU5TX4w==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.19.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.19.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-/5ESvIcqCUsKcJh3EHRBd8KneaQhNX3JmCRI+/4IalRavBalu4XwGGi2sG1cSSXylbYMhpsLDWoW6lPIU5TX4w==","shasum":"86ce90c8d4d154b29a45b7b04d9fe5a6f46bc910","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.19.tgz","fileCount":6,"unpackedSize":19440,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDALt/cA1QAmuuCmYGMcElzMP6T/4PedYPq6DCmhE3lfAiB8zdrovGQLI7yRAV0Yz29Cke64za2vSVPGm6YbFZK7Pg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVqt7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpidQ/+PRD1mN27LAtJ1ToiDb2+5n4fRfMB92txGqU83bAsIO4loMR+\r\nZOCmsszO9qxdk8FTVQMeubwWs+0iev8uk2GgJZeEUAinR7W3OSfeWSnucST2\r\nMevR6fTfLbPTT8wkRR8ueMrhP3Vj4l+Xda7tdcYhqM9pba6VfTZBNgk98IZU\r\nt59qZw2Xm//supImNsqmBJ6Oj07bE3rXUkFCyb5+HA/YQvq1xNPbYigWCE7g\r\n24AdoMm1buXfPEe4K95HM7RszuJPl6OFwxQLeN1BduqGD51sshbwXuzeJCK1\r\nFEc2GhEXTGDGzsKoh3EaNkMqXWJLkpGvyfk7XGI0mMSDHMFgtotGx374L2Ec\r\n5gEejYEzrRDSZgfbYIMFNSsszXAteFoIcPphEcnQzryYjZscRxX4v82cxsjS\r\n00eANljKPqyQIE7PTUzLDaLENztqA/6fG9dlCvgXPcN13alaA6+433Hvz3lz\r\noHzh36GAccEJmalZb7p/moosgQA9DNqebcDr2RGe54vjdqICrk6bPYdi67iL\r\nFef1FAg9BL5azmmVImShfvyI4+RmIkY5yEuzAlKaKQ/Nl4XjQMb6xWivqf3P\r\nthTbzKWrEff6CyqiWOJjw53D5sjyb5lxJsggbNmERC2kTWPJ3LfLoWUbrKas\r\n4PL9bZ5O7lVBvfAAUS2N9jUnZrW+bVwwMa8=\r\n=cZT/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.19_1649847163239_0.597245478532026"},"_hasShrinkwrap":false},"4.0.0-alpha.20":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.20","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.20","@ethereum-waffle/compiler":"4.0.0-alpha.20","@ethereum-waffle/mock-contract":"4.0.0-alpha.20","@ethereum-waffle/provider":"4.0.0-alpha.20","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-alpha.20","_integrity":"sha512-DArZucj7brboaPgI4Eplqzu/Bvn53QLX5kZl10C5BmilSOT7tM4A12310bBisPPayoI/mqGuT8Hw1Elve+I6Rw==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.20.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.20.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-DArZucj7brboaPgI4Eplqzu/Bvn53QLX5kZl10C5BmilSOT7tM4A12310bBisPPayoI/mqGuT8Hw1Elve+I6Rw==","shasum":"38c0da8479014df216b92b87179b27669fe582ea","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.20.tgz","fileCount":18,"unpackedSize":29836,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQvGLvHOJuo3o+LME22XsihyIVcFJ/QBLCrNQyNRlAGAiEAnnDz0dyup1LFli/xhY/A85+8EEyKQSYzNbGTefJzvrk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVwC+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoLOg/+MtEUd5d2Pv8kkK2P8vatbMb2CikqZCi8w98IhFYz9iykcAaD\r\nTgTHQUsTBh3v7dMWjJHJz8BT7GdBrdM1QKNHWAZ2pNKazuz5McpwTCwQuXSi\r\nZ02UA2HsMfH56o9e5IjFk5m7esIVjvb2P+RJZZKaXvUAUjQEplFVmMy/mkez\r\n7EcQm/fh4/itvDjVpQLRYXKf/dbDUoTrlAvyPuE43IAbD5i+qqfz3KpoU+nc\r\nKhNqXGXFXr0bCyF1SrKbULuBSWlvWwB1POH4pontjva4rrNdjgXSngXfOE01\r\nxhcHcUXv84uhHDTlxRDzJDC/WeWJy2lguV7V+fmpCkLUf4pf6Ph9IeGUPnHg\r\nD3zbCkBFPMWi3Z9Aq5FLPd/tVH4Ac3liqjgYw4dd/KJG3PTiow1qABls1FLp\r\nahHiFsOppkElcz9mwPhUk91IYbzZAnT8EpzjzlpMB8ncKkzR4aUCAd9GD6kI\r\nDuQ1Oy7W9chk+owlEWqRS4waK2RGZ2e2oi8YtICSQf/80RdppQ7jCY35dgCy\r\nkkoE//mQRq4AQl+LqW2zQ0KaSvUROMl/GucNneyNu8/+DJzBtAX72m9jMDBj\r\nk5PoLw+Xaqz+IQeIC3qG15jTbhF8Jfexix/bKHSj7DpDFr2tM4kaLrGfnAGT\r\ndTZsvPJsRtkcFqDLVlkmlccQRpaiFZrWCoo=\r\n=7emZ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.20_1649868990487_0.418174977093952"},"_hasShrinkwrap":false},"4.0.0-alpha.21":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.21","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.21","@ethereum-waffle/compiler":"4.0.0-alpha.20","@ethereum-waffle/mock-contract":"4.0.0-alpha.20","@ethereum-waffle/provider":"4.0.0-alpha.20","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-alpha.21","_integrity":"sha512-Iy0EKLT9fgw6i21F60s6iM8wp1besXi8vOTjdPpprWWVtCD948cwWianmBBx+RC4+7CpzjlJX40vf6Vc/Zyq4w==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.21.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.21.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-Iy0EKLT9fgw6i21F60s6iM8wp1besXi8vOTjdPpprWWVtCD948cwWianmBBx+RC4+7CpzjlJX40vf6Vc/Zyq4w==","shasum":"94e199ef1d2c140d2b33aebe331e599d76ee198d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.21.tgz","fileCount":18,"unpackedSize":30044,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG9XOptv9D6RwlodKFNRGTWyuAPYDctf5S0FOxlg+2oZAiAlsjkSHSLL4IfhdvJZ0uEcZ4WIsCWda2LD8QoJkqmqaA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXrN7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrh7xAAoj8LjVWwBbm7Ivlvvoxt61xXrkPY3lwfPOMaELp5I1tq5lrC\r\nDSLrN0dUbSYXEv5eSI88THXnyACmn5nMcNz4vjRToEp2UM/ognXWjc5l7s4t\r\nghlTgLZU8UgiHgjmTtL++EnPRoqzXlWA73yGsxzoFoGhbpLzAxOfJ3vW68jg\r\nEGJsmz0cdjntD3PZvkOlpHck4vPyPlItZ4qq/JSqSSF+cwD67ELSBgxfrTqx\r\n8NNg4WFg9Yv2lrNgkpUKjt12Ob19mvZAxSlDJWVWAq/O/bf4orFIRTRPfoWB\r\njhIho1rz8wanMgRiO/+ZcCxwyuItoegR61SImkA82S5LlwsyMTtBNMU4Vh70\r\nkQNS3JPasGosIM0ARhD1hBK8VvSAtzXX3UCoEyWTT1HeATJMzx2ym39PZFSQ\r\naL2uEPx7IkalQy0AQS/awSOXNLNJnAloe+p9T+CDV/mKVjpo9aaTXjk5/czl\r\nDQ1jpRGrgv1b0ROgC7JMBtUnyIxMKm9HdOzdZ+b0X5zNdGX+0HyIY8+KN9I4\r\nZUL0tGSaqucU1GvernFfec8EC0oLfLE4ymcw1zcKrFSWj3IfAAIZmj3jAMul\r\nlyoC0VrwKxHJiZR5I47uz84E7QiB6sEkl6ZDsSCpQrXwhqh7iVs87dWd8iRN\r\nw4yLtbGSdKmA9j8KnT5dwD1Hke+Sq2U01HY=\r\n=S3Pb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.21_1650373499286_0.11016759261677245"},"_hasShrinkwrap":false},"4.0.0-dev.b82389f":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.b82389f","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.b82389f","@ethereum-waffle/compiler":"4.0.0-dev.b82389f","@ethereum-waffle/mock-contract":"4.0.0-dev.b82389f","@ethereum-waffle/provider":"4.0.0-dev.b82389f","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build","version:dev":"../scripts/dev-version.sh"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.b82389f","_integrity":"sha512-semgLf+VllpJwj+aAeNTQYSbWKMdbLMq0+oN4Fzdon4L7pS/mkueS6GRcGX8oyPGMXzLxFDeuJZpuof1YtMUcQ==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.b82389f.tgz","_from":"file:ethereum-waffle-4.0.0-dev.b82389f.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-semgLf+VllpJwj+aAeNTQYSbWKMdbLMq0+oN4Fzdon4L7pS/mkueS6GRcGX8oyPGMXzLxFDeuJZpuof1YtMUcQ==","shasum":"98097b2b9dee5f918945ad5ef0bbc99d2d43b3d1","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.b82389f.tgz","fileCount":18,"unpackedSize":30107,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGIJW0S9jtvw20xTfQ3HeJjls1aWUpVcO8mWW5hQh/WqAiANLz44xgRw7yk/kYu9OFkGIBsbHApJVMwXSSvS4TPdOw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYUN0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpZUw/+IUIzJ2AuPLvE50+1dLwZfrmvmeH9Ou3Y8UJ75olltueb+Q8P\r\nC2OwdP98ynUu/QGKlAs62P+78rLDO22BWpbQu5e+RNJvC8AR7TG55LjSND2B\r\nOyObMQS7u5vhIBZ8BuUMnYN/torwRavR/r3pQnAb3YvZC/T2n5PKcNkcQLuK\r\naBJgpqk8P2YSIVR26SjZYqMZqZNfmjY0WRyd16MFZcW5nkARl+cROZjhUgB2\r\n/FKd7YzONPmYRH5/GhdyrhubShNLOHJRFOOBpurlYMVFJk3rpDytiA90uKAr\r\nvIkpRnDlGCAs4szhlm/YMOgyitTAlwdY/ZcGOL4k3bOl0GkWcx27CB/6mkKc\r\nHfgDNw1hTYpoP4feJ5eo2nk56KnH3n/m5Vz2EdlxfdQdOXP9kEnHIShgIaSB\r\nZh+p7PuZCsC5gKd8RJCF9IwFEGav360eMJJvkBKBLlOJgcCITdQTbFtqHjFV\r\nw6aipJ2kHWYStkOgs+0+DOrac2DBi9hcuC9i0Xs3nOm8LrsFDnWCqXw1aHAX\r\nPMpwaU8Rcq8E9gv3Mp9fdw+GYMAjMGeW18nJ2JWN8VIJuCLmrgwJ6ZiFZrBx\r\nIcsTwYF4JuQRefO1/vLYpqXesfcrBDR03agaqJKQD8MlGtouNdinzlmPAEJG\r\nUEFW09U6DhR9aS6WHPax/TZkdrDSbqlgQgE=\r\n=zKfe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.b82389f_1650541428478_0.9150622374808861"},"_hasShrinkwrap":false},"4.0.0-dev.8d4934c":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.8d4934c","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.8d4934c","@ethereum-waffle/compiler":"4.0.0-dev.8d4934c","@ethereum-waffle/mock-contract":"4.0.0-dev.8d4934c","@ethereum-waffle/provider":"4.0.0-dev.8d4934c","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.8d4934c","_integrity":"sha512-Ge/n9imFjFIRWaZbPvJ1I/6C3JDIluGl045cICX0MDipry3pw++CzUhrPodh22Gsljv/NsRl4ZZ0fz36+LnZiA==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.8d4934c.tgz","_from":"file:ethereum-waffle-4.0.0-dev.8d4934c.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-Ge/n9imFjFIRWaZbPvJ1I/6C3JDIluGl045cICX0MDipry3pw++CzUhrPodh22Gsljv/NsRl4ZZ0fz36+LnZiA==","shasum":"d470f34c4052575334cf58e4682c8dba80ecd03c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.8d4934c.tgz","fileCount":18,"unpackedSize":30057,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLKpIYEts+LXLHosYUSiXWcahljbfzIZJHbKyOaOMUFAiBsxoNj8I0IiMzfneOF+iY336EWnMB9weiAOmgwGdm2YQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYUzBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr9NhAAl73PQ2jAl6sVXpkpjzl3Wiotq+O8uA/sGboA4cPgjDm5vI4L\r\nD1hsoG4BlaJkdHW4uMMeAiUemlAoKgCGLOry/OtTxKJnSNK8X27pcyYDJW2o\r\nyNkq5khY3RgA0V15KL9LboIKx/cG064HgWdsww4rbptawo2jrE2HLXFfpbl2\r\nv3HErNkHNz2gjFTzdnWE1GBCs16jz8G7N/k1pWYuajBO4K++csyzPwePUGXg\r\nGHBcfilSSt62HCGbkU1cBAH0Ep97kOJXRIgqJrCwnkvyrnQ+PdjrItRWfXhu\r\n13i8tP62n9St4trtB7kyGRqktQ1VsUKSCL8GdRDGfnwRz6AOlDrGQgx4CN87\r\nu2G/l7pOYfrHYSUUZ8znTxQbKc1Bo9RRpHDz6V1baJmh5+Rvv6n3id5jyrMe\r\nEXVS769YfMYk0YTTKq1yWdVdO8pzhtOup8nFNwtvjJDlJnLbk4iaKz3pnRHs\r\n9DFvnQ3MA4Od5fkPDkvmgv0WkVaR2xm63MyBKtb7ZFfSh0ipspgh7krwjRDF\r\nMzIzEB3VNj7CApkjFmEy5XAJnoIIUhjMlkrvC2ESGXgUgjYom454/EHGQoEC\r\nZWZ2fjLvc9Tcfjsp8lXqi7JAieRDpvZTWupCTUU4s2Ajt1rlj8m/b9SEEXiE\r\n6pda0w7NCrnC0QrLKGO5nDkLJ/3S8NrX0k0=\r\n=YpcB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.8d4934c_1650543809744_0.8959746158657282"},"_hasShrinkwrap":false},"4.0.0-dev.baa1b2f":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.baa1b2f","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.baa1b2f","@ethereum-waffle/compiler":"4.0.0-dev.baa1b2f","@ethereum-waffle/mock-contract":"4.0.0-dev.baa1b2f","@ethereum-waffle/provider":"4.0.0-dev.baa1b2f","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.baa1b2f","_integrity":"sha512-cawUZWMRaEvjyQHtwAaecNtCkxtAN+QjdleruMZTu+9//btik0XgQbXF684kEk1Rh1Wbexc0/diJLLNE899NFw==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.baa1b2f.tgz","_from":"file:ethereum-waffle-4.0.0-dev.baa1b2f.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-cawUZWMRaEvjyQHtwAaecNtCkxtAN+QjdleruMZTu+9//btik0XgQbXF684kEk1Rh1Wbexc0/diJLLNE899NFw==","shasum":"e3ff41e7f18ded6513a8cff978300413f06a7f7e","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.baa1b2f.tgz","fileCount":18,"unpackedSize":30057,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBBj7dQ009aOS+yRxGYa8oQDhZf0dJRlWaUg+MT4KTdpAiAHHWavn9snJnsQMphnLysQfXcF/H/IrCpuwuEBR2HBhQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYVKxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqVxxAAjAblXk0WFiCYcXWCL8hvsjhXFRZ2xNJPYK02oCqByjAVA1BO\r\nNrUMErwbAz07MFVSci5ySBDGRmJeoDP8uzxAVRuVO1ZF9yVo1Poh+AgGy09k\r\nWIeUgSpMwm56rsjkJ9lIvK+8MMnp4fN6InIagT6GoP2s71LLgqcRU3rT1BQF\r\nU/BK26IcTyt0v/cOEeB9ZIukZs3DjD1gAtICaVfnW2oBGhaor9wQ/fEbTlgC\r\nqDOK5iWvn+R14qevKNbfTrbSkZ+RrN/MdLCEyeAQuZPCfc4t1yJlQmHZ2Z8g\r\nVG+Q6tYftUhDbGBICsoNuWdglSCQlD/3pY+DKUcoblWi+KCxLj6OeM/g7ct6\r\n9a8tL4/OXhSK3KReNWAbKc217Ep9VU9tEx1dfjzvkNw86nArEIlZ0PFUC3Ba\r\nAE0/EznLackF3Now3/QXbCSi/L9tlkkPsRYvUZ9IeluU7zD61tGLez7OwUPv\r\nd6ZUt/89/GejepE88/zrxlYSXl6eUetEOuVuUpN/do3akYaGzkb5h8sUDman\r\nO4+/8QGW1OkGfQUnMHYS1yaTacQfKdu7HF3saleRRBypbF1dJi8D410zmcM9\r\nl4H6AW7nW8mHv7NoMXfyDXrwCBJqA0WC36+09t76qP4nhpBC4u0b2jiGmvgJ\r\npXJUqAsMOIaU3uvj/56xpqQoUK0IwBarKj0=\r\n=seXY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.baa1b2f_1650545329774_0.3491804193435306"},"_hasShrinkwrap":false},"4.0.0-dev.8f72c9c":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.8f72c9c","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.8f72c9c","@ethereum-waffle/compiler":"4.0.0-dev.8f72c9c","@ethereum-waffle/mock-contract":"4.0.0-dev.8f72c9c","@ethereum-waffle/provider":"4.0.0-dev.8f72c9c","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.8f72c9c","_integrity":"sha512-Vgk3oetf7vMm0qjWNpAT45UyDBKcoFJZ61mSd54ICDDksaQjPQ3NAMFHBuddLW7oZnWnLAM0jO8mI/gtKhG8hg==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.8f72c9c.tgz","_from":"file:ethereum-waffle-4.0.0-dev.8f72c9c.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-Vgk3oetf7vMm0qjWNpAT45UyDBKcoFJZ61mSd54ICDDksaQjPQ3NAMFHBuddLW7oZnWnLAM0jO8mI/gtKhG8hg==","shasum":"f47c7907767e82c28debdc8765d9b198588d63a3","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.8f72c9c.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtrsYxdmF47G0LnuHZBlVPtV0voJjomnH5JXTKx4EatgIhAJSwJZ3LYK7Pa6zCfga7/noyveDZUmnqEUjX/XKklAPo"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYWADACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpwtBAAmwPf9cUppk+tnopcyVj5QK7C9O3HyFNCrd7pIaNrmtBTqVfs\r\n9Bm2hBKjqxgspqOPDK14Y3tKIL+f1sY1Lqg51ywhpONN+X1NNdTd+3S+gN2K\r\nm+0TaqsQk+vUZLwIP+NhFOi+9hCFqlvjOyiueTTC0RDBtWH0nkHelSHn/wob\r\nZaKQVUueOD624QJXIicqKZhYF7nb3h04ZdtP4sAXYQV/hlR3mPiF7vzR2gSY\r\nDSJIIm2V2ob4CKb+sXFI/IHxRVCIiA5I0FCh5seRWXJ8MCdcDfF/fVtuMpF3\r\nrrw/RGwp/5XyO77qeh/qcy71jInj1+evb0+l3MH6/vS+lh8h+DdQjUJYHIYE\r\n4ydJ+VfoFHv/MPir3Me7E3hMQob5kgCDD3vFviSGlqwqFGrUP/J4lhfxYGE4\r\nCisxzNmfQyC9rrZfktmxIJhEbq5Wj7uMaeVXAilzI9uuoGe8onTnqLZsVevF\r\nE3gwuKjJQDvw/+zrf3b92f6+kyBYP2rWMcl1UsLCSDVp7LWrfyjQUj6s/Yno\r\nnpq5/MxUyu0cSG2/SzW1g//cGSyHTN4POlpDZ1q1ZrSiTXqZhnsaxgY2ew8d\r\ndqSSuTl2jjRDXITtJM8IWk7nqCkffB+t+gHKZnTMP9k5JjILa4jwYmYJ6gaC\r\nJnH/bzk1e637G2m96a/V0jn3hzOup3gu5cg=\r\n=OkUX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.8f72c9c_1650548739506_0.7056235613211825"},"_hasShrinkwrap":false},"4.0.0-alpha.22":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.22","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.22","@ethereum-waffle/compiler":"4.0.0-alpha.21","@ethereum-waffle/mock-contract":"4.0.0-alpha.21","@ethereum-waffle/provider":"4.0.0-alpha.21","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-alpha.22","_integrity":"sha512-31PuXkuHdL+FIT0UOD6C4opb8tC8CslBOWl62nNVRNdp/rOe735sXsJTaQKVjy+Nrtn8MnFXS0QXM80mBcRZxA==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.22.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.22.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-31PuXkuHdL+FIT0UOD6C4opb8tC8CslBOWl62nNVRNdp/rOe735sXsJTaQKVjy+Nrtn8MnFXS0QXM80mBcRZxA==","shasum":"83b1b0595ae9d3ffe4769effde7f5082dbc84118","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.22.tgz","fileCount":20,"unpackedSize":32025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA40g1KxcGP/lmg92kXjNi5ruxhmMPqqFHBg4yrEXMC/AiEAsYb/pU2zLMrtKj8PmZ+3DgTOfJogXceOsOo94yiompg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYWLXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpPrw//a4qo0ojWA+KalRKWQV+Gg1HmD8e5DWSBpYs43MEscUNtjsn6\r\nLDD6rj0FoASJMgKfu1QXCjaBNIMgpGSnsTrPEOGRYL2Gu9kBChbrIJ38AOpi\r\nx1r7cSVqpMAGiMGQ2JIOXSs0z/gyWQwm7sQkOvvsabXwq0WQVe8/Dn7tuqVs\r\ndgiJLyAS3bKhkpsB7oZr9RdwVxeQbjR71XfZwNPS3SPpq8UH2FBQ8w6ERsK/\r\nNuzxbrHOPzieG9RmY/aLHdzpzRrIrTztCGXBpRmXSwvY+s6z13xm0rk8iOHU\r\n566t1URlLTRb/plOfSs/Fg6dDKP9HnUpsW/HPPlM1cVjB2GC+Xfd42wa9seL\r\nP24fCE8Yboc7nBXdA7Mi8u9MSPqn8DjylzInZN0A/yZ2HwbxVSlMKGyVdUCA\r\nSCI2g87bz/54UpMv5KkxOTVdnPLH0sc0CERtLyuOSQ8B3qU1YKsPs2KgugNI\r\nxi2nL2g9ewq5CLPu50jwsSJZTzIz2TaiHs7X5RmR5s9LxzR1DKHGdqqFluJC\r\naF3VbpsnTGTXJp/9N/s0Tx8EUsbDWJmIpvnGpTBDO9dS7PQ3Koh2q/wcSA/X\r\nrj/jBQYyQDzrTaqVZDKOHCCvsvNhAo61CxkCGJ0PAmlKOlaNaOyOZmDHiVpC\r\nenW8L7YMzErO1Txe1MHtAEJS9vtJK12hV5g=\r\n=Zno0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.22_1650549463096_0.1353839345174057"},"_hasShrinkwrap":false},"4.0.0-dev.51e05d8":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.51e05d8","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.51e05d8","@ethereum-waffle/compiler":"4.0.0-dev.51e05d8","@ethereum-waffle/mock-contract":"4.0.0-dev.51e05d8","@ethereum-waffle/provider":"4.0.0-dev.51e05d8","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.51e05d8","_integrity":"sha512-HcNo167GK+uCMgixd/LOz4LprJLnzjz+yakxax4BAOudS8cUdh6p24wS9xHg8kIuURspETJD7QgmSYTHNdS91w==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.51e05d8.tgz","_from":"file:ethereum-waffle-4.0.0-dev.51e05d8.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-HcNo167GK+uCMgixd/LOz4LprJLnzjz+yakxax4BAOudS8cUdh6p24wS9xHg8kIuURspETJD7QgmSYTHNdS91w==","shasum":"572ec50603fd1667cebb9c215362024f4df7baa2","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.51e05d8.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDa5IetcEfGGmcM0LW3wJi1wYB7deNTp5u+B+SV5VEDqgIgD0ERn+5t25cWjE0fjLt1HUIjCZzhEUj2fkjMdNdK9g8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYWNuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrXchAAmE0HLGocN/CZ+jxdK5DmMD7zBO3gTOc2k5UU4MNvhUx70yrh\r\nZIY5CZU6nKGXldJN1ByguRi8R9jKqGphl2Zc+w5JPuHYg/k7dF6o0D7D+v2A\r\noCbwHz2RrF3v5hBMFg8uuS+CyiQmLViaOJE84AeKXNfE+k9vgwbRNzxD3mry\r\nwt3EmiIHtunu66Uey6030lAI4+k7X5EGMvhYVK+auzHkS9Jd8w5sY2XsdKo9\r\nzq9Eq0HYyYLI+TzD1p3noHtM/m3VikvY+kf4D1RyUiQLQZNT2VLOgUe7tRl8\r\nxdTg7K74WAKSMFdZEJt20ZYEzmFM4kSNMAMkNQl5kDnWZAaVzxmGTt8QJeUb\r\nHIu7a5sjPfFHHpsmvkYylQ0RmB08G6PfEyjycfEvLnO66Om+rLvKUztCj0Nu\r\nM5abssoEwfJN643xJeogEA9BAU/OiKjVb+2I2r81mqgST2acUI4yx8Gyfmnz\r\nRX33wQoE94kAWbEmWG0x4dd2rMcfDpo+CmMvHZq+J+/SgsCveb2TYj0VmzM7\r\nyLqvogIe9qs/9xEl56kVT/6uZi4nQw6/dtH763OcxbIuMNWb0VFZOnK37cEO\r\nb8FntVFUikq2Wj+kXO7JZUpkXmOOoBZr7zQBVjF8oIkOinvQibPZZzmVsE9N\r\nFkKICdjjSUN/aBOOy+Zt1CBoi60+An4QEVY=\r\n=SHbe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.51e05d8_1650549613822_0.6745959142162969"},"_hasShrinkwrap":false},"4.0.0-dev.498bffb":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.498bffb","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.498bffb","@ethereum-waffle/compiler":"4.0.0-dev.498bffb","@ethereum-waffle/mock-contract":"4.0.0-dev.498bffb","@ethereum-waffle/provider":"4.0.0-dev.498bffb","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.498bffb","_integrity":"sha512-K3llbaqY6KStPRRH2EaiGiLy+bh22jP+816vrUrea/Qf/jrokkcO9JsAUq0ZeJ6h3sM2m8FMRDJAhWu17pdafQ==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.498bffb.tgz","_from":"file:ethereum-waffle-4.0.0-dev.498bffb.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-K3llbaqY6KStPRRH2EaiGiLy+bh22jP+816vrUrea/Qf/jrokkcO9JsAUq0ZeJ6h3sM2m8FMRDJAhWu17pdafQ==","shasum":"0109a57c829d510fe7f2a42fa6101f93e5afe67d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.498bffb.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDyp89Dk90SMhmIht2MdZwpedIswpJh45Thlk3oyPLm1AiAPvMGwiJuJNL3sjw5/BzS+w/RpxxI47SMHFvCUewcUDg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaVOYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmql3hAAhdL5ylYA0hJ2LjnS7AU/sGnv0IfBpPJYcn+yNoQ1yd2Jf+cX\r\nWsEpvzaOwFDNTzOKdrz7Jmr+M1rqJBw4zXROH8D/pTHFXrRyAtfl2H33cWFD\r\nRMMxtjiW6DQ0rqxNy25nxM0gAPkZowyW6z01qgRfo+JuYELISzb2w+mZNR5E\r\nZ43TadvxGwq9o09HbLJE0bMG7AMHk8na363FXnLoi+HmP2OWM8gbVbsYceEZ\r\nkItfUaTsapRN6iIbIJR722AXViwtgk4vs6rmTT97XLg81iL/21zyMU5WkHOH\r\n4+PIrogVmsiOOwiRUTqnkxjZsPJ8pci/MV1aApOx8JEhEjO1Ib0F5q4rh6J3\r\nbvhzJ6Y9C3e9vZsLKjYKPyWkhgFWhD71ZhPV+Qeg5+nxZyD1UVlzS5U/dNEg\r\nfJlc43eXdEQts2vuq+O3kFrO0h9bpDVdHIfnfr9fNxGvHbA7dT4MdBlu4bAM\r\nInMlCCJRNQq+PuSce8Dm9Wea0T1ybOqAfSX6Exv4VOeK7FouuIptk+e1m3nE\r\nPjJksIHc+wavwzfcWbmOuVDCJpjM2xM23vSWCoV+5b4/luvwXd0MZZWMdEdP\r\nOx++qturKrq06fcTKm0qHAncuMy17g124rPwgUObFYBalNwEU7QpUHWh9jnr\r\ns3uOgbd37o/VeKb+3tXpjgYhsP+S6Vc22Gk=\r\n=JLcP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.498bffb_1651069848533_0.86393626794612"},"_hasShrinkwrap":false},"4.0.0-alpha.23":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.23","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.23","@ethereum-waffle/compiler":"4.0.0-alpha.21","@ethereum-waffle/mock-contract":"4.0.0-alpha.21","@ethereum-waffle/provider":"4.0.0-alpha.22","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-alpha.23","_integrity":"sha512-XUXOOj8p0e+TLnH0fTfQAYhk0JiJWBL1ka03yu/8XqEKdRlXJlDwigxzEqD7ZhfjFOsz/j6loE9z0T204OLJTw==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.23.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.23.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-XUXOOj8p0e+TLnH0fTfQAYhk0JiJWBL1ka03yu/8XqEKdRlXJlDwigxzEqD7ZhfjFOsz/j6loE9z0T204OLJTw==","shasum":"0a34237361a85307ca25dfd9957b9aeac45b02ff","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.23.tgz","fileCount":20,"unpackedSize":32025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYLH34SjjmWfIxFOxY5bKLM9Vph0Il0MPqFY54QwkvmwIgOe9jYhaQimUMsP+ulwTW8fwT9KPoF3SbtyvfwBkaL/w="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaVXWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNCg//TBaiveeNzgJ69ngAW+RMZ1VobqckNJOqHJLcn18AZhTnpQsH\r\nDR2WbVIc0KHRMhA40pKBS/AHu6UxiF32KSZV/7z2BMeoDBS6Ojv/CzMcRDf/\r\nNHq7TZaaL7wCMgYTKcaKChO470QgH+WqXQ7aNxqJTZnnDyaSBSqk3YIr3IGF\r\nderczqG+7SsIqJwntW1R6no6YFd05OphTfZ5bkO0vnupIQDe0J6DPl2R16UJ\r\nOeBdVrzH9J+HDLNlmb/mgiWa6hV8JQru1ILNTq4GTOuT1OjQ0f9z46rEeAhy\r\nFUX1nCAftrPBTX0YNtkTdEJZrur++a6KeD7DIi+WzOb3jp4vcRH5giXhB60w\r\nX/SDPb8yVe1a1mFlGykuEdlds5XCdm/hAhxxBYp8YkJlPR/jfASrLu070fnW\r\nuXw8onJmyMqyeXnete7o1kw0kc+s8GbbyT4+aXT/d6Fl1YFdBqM18Y7E2Edh\r\nlSjgVSjmlMkAl7qX2i0KWk4quev9iySR/MCUocby6wSX07a2BoBVenmUmZmD\r\nNEs3ZntJjLfIpXzWxvQuyDOE4xDFFj6BoTBQA2IRX+3yFrrnRL2IRbn5kWXJ\r\nBll/jrcmMgUl1UrY6ly/A+bUP1W5NK75N1Rm6KyuuJd6Mg6SKLsKzvAXiZ5I\r\nAfv4R9Yw/fuSijS4jUiHrrfIHIz1Cq/86RI=\r\n=9FZY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.23_1651070422705_0.30004173528057865"},"_hasShrinkwrap":false},"4.0.0-dev.de3905f":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.de3905f","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.de3905f","@ethereum-waffle/compiler":"4.0.0-dev.de3905f","@ethereum-waffle/mock-contract":"4.0.0-dev.de3905f","@ethereum-waffle/provider":"4.0.0-dev.de3905f","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.de3905f","_integrity":"sha512-sfIIrEtonoTbxYLPFkpbFUh51mmxo2IkKC+7WFqYQhu/nyP3UfUDheXPEheBQMzAGHr0+Axby3WLiklWd6w34g==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.de3905f.tgz","_from":"file:ethereum-waffle-4.0.0-dev.de3905f.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-sfIIrEtonoTbxYLPFkpbFUh51mmxo2IkKC+7WFqYQhu/nyP3UfUDheXPEheBQMzAGHr0+Axby3WLiklWd6w34g==","shasum":"76a0ae693937483302cb1b1254ce8192b57019cc","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.de3905f.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLC/CVHsAo67XiZFkuCAe82AtIUIf5wM6IuKqV5lAQPgIhAIcbDKWAlosw/FK1fCjm00JAbGKwPHJc15lmtGa9QDhO"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaVZzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmou0w/+KvNK++gNet95DtquBI+0HMqBxmR0qrNeC5jdP+TfVxKKiWtO\r\n7q/bxJCGOdd1arNRlPmxNqAVnuk78SUj3hi75i3zZ3BTI/REftEpfbYN++U2\r\n858IO9etaVBzySPXqzuC8NnizERH3EIggjS0RK2SnwNzFs6uZejNt5SMDfFa\r\nZsenmeSO82vFm0xjqLYvXcqmWBZbhbFEnQDHLQyRe+pbVv7+UpgAC7m3yjMi\r\nG11IgrqrKUJISQ8bO8j46szlQv2xjbJ5k1EILzdikbdFFdZz1mbtWQDR3Y5I\r\nQL2QNQj0cqgDFkhBR4wXQrGHBG+tE8ycZqku9k6EgQvRWyGX8X+9xu3d9WWm\r\nB+IkI+/OY1ZPMoWvuoU9lRZBKYutGS2FDyRvudXA7Msdzy2tteh2WXTjnnA+\r\nfImAu6CfDUKHeABpTkAy0BLxbsonKioy+d/T+vsiEyuwOOWpO6wqLnu4tDgm\r\n//zVzZ6MQjnK2kk9Sr8IBm2RrpPlXczjuyhfhlYJ7K58I+1zJIXFpbYMZPLr\r\ncgBMTZAyVYRHSKnYiJOcB39PzdBJWNOrrV4MfAREmaBXnJWuuKb8cq3EMofR\r\nIbegnyYKdl5Gwf015BOpOXpeNfe2vkOJAp5pBImZRYZD7ICQ3tHw5ZqeXQu5\r\n2x01X9YdyZihljyi5WmbyszoYAWgKYR7AgE=\r\n=cm89\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.de3905f_1651070578888_0.8961937937221096"},"_hasShrinkwrap":false},"4.0.0-dev.0e1e2e5":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.0e1e2e5","author":"Marek Kirejczyk <account@ethworks.io> (http://ethworks.io)","repository":"git@github.com:EthWorks/Waffle.git","private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.0e1e2e5","@ethereum-waffle/compiler":"4.0.0-dev.0e1e2e5","@ethereum-waffle/mock-contract":"4.0.0-dev.0e1e2e5","@ethereum-waffle/provider":"4.0.0-dev.0e1e2e5","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.0e1e2e5","_integrity":"sha512-d+fzyX7LqqOkwoub9nsZKSqYUFlZ80jCqgFY34Yg3hy4YUSw6j4rxPTqMGkSxygRbpOgg45+csZc1r7eSpaMqw==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.0e1e2e5.tgz","_from":"file:ethereum-waffle-4.0.0-dev.0e1e2e5.tgz","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-d+fzyX7LqqOkwoub9nsZKSqYUFlZ80jCqgFY34Yg3hy4YUSw6j4rxPTqMGkSxygRbpOgg45+csZc1r7eSpaMqw==","shasum":"2b4f355aa768203fe66f72a886519c27a302ae23","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.0e1e2e5.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2Na5m1yg0yJta8t/kUfVrNVFjH3zPyu9u6RBB0bcpmAIgPJG5PdgHR9GvpYb+i9wpe22eNtim1VShOOW3+hVQTl8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiclJBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpELxAAmVYcPuZkb/dRBPczME4Yd0+6aOpmZbEC+xshSr8VmS8RjGMj\r\ngnIwKQeEM72TKejsOqJJQ+MusAIJcwEaMvTqvC3Sx7LeNwsjqy49sGDNqmRE\r\ns2hbIY5Fp8K0JZfJk+92pp5HF+Gy4qQSoSZZMTy6GdT242CZnxmkCr+fTCiO\r\ngHk4qtZFvCtbcoWPkzxQBVtEbjNhuMKrLT375UtHpn0Grw7cc+gRX6r57uZr\r\nrcIHhRiJJ96QavYAAid5RQx5G6T+9sz/oS/czhlgGxTMuyKlmQ4bMkGlj1oM\r\ng+w7Lj5YdczaTgecJQSOuKXAt4xhE1imCjmVyreHC87DMlpv2RuHvtaNmL5U\r\nTg3cteW5hEX5ypW0pbvX7hko1WFnI9ZuSByq89mTREWzTsl58x5m5kqGL422\r\nFp7c2GNhDr2QT7kwj0X3g9G2jFisCF3VFPWG0o7RWpL5z7vB1NdSKXO6dowY\r\nGkpqJn7VtciJryEgfmCc5a35YTYqESMBZoNvjyeVv9XgiQMyk1jOice8Ya1N\r\nK3DF8yiulN2kCSSaZFD0DMNttzfSe6VmSY0bUkWKiB9uNaVIlFj2g0I8wv5s\r\nwJg6NpRSuKpsUGNIA3mZ6Qrbe3lPbYLb0le3eo5mxU69iQuzk77torl9BCAG\r\n+4CXKatxHUN345VW4vJcAfFcCOFdSB0sRuU=\r\n=NgzW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.0e1e2e5_1651659328837_0.9880401084651327"},"_hasShrinkwrap":false},"4.0.0-dev.b7bb3ba":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.b7bb3ba","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.b7bb3ba","@ethereum-waffle/compiler":"4.0.0-dev.b7bb3ba","@ethereum-waffle/mock-contract":"4.0.0-dev.b7bb3ba","@ethereum-waffle/provider":"4.0.0-dev.b7bb3ba","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.b7bb3ba","_integrity":"sha512-9ONLWyebHdad95eNtIgpcLVJ8vdQw4YaqpL+gP7pud8ykyReiS//YDVHUSeHXCe9Wa5mpHBgEKYO1IQPRgqS8w==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.b7bb3ba.tgz","_from":"file:ethereum-waffle-4.0.0-dev.b7bb3ba.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-9ONLWyebHdad95eNtIgpcLVJ8vdQw4YaqpL+gP7pud8ykyReiS//YDVHUSeHXCe9Wa5mpHBgEKYO1IQPRgqS8w==","shasum":"386e74fe2e04e6b25b2d078b499bf77f00d5876c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.b7bb3ba.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDG67BvuPpzglb6sGCPeRH124xXhjPsWvrZWvZ7dt+T2wIgSRe5WpcNovmUghu0wXd3WRmWglw7Uhb1uAkfTO5456g="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic7R2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqr7w//TLmQw2kq5lY5hX+ByHPzSZZXVPq1dvyigMv8IVJrv0ZBlDEE\r\nJuDo7gtL7sixdgrrbwaHhTUY2d/ehuJJLLu5aYzczjQNGe1IaTjkJwfyVVWl\r\nSH+tugvapNc1kMS+iqEKzkQniUcjTSwXb4MVAfwX73Tz3twzsNWaSkhvHrhD\r\n7p3rmcLb4CtRNoh1Z4s0/oDWzXT+6kEdWeDHCjuzgK8WQeSFZzbcewz16E0I\r\nnHI4AxLkDX3sgwHYveUCeu+2U3XS236ZqKzemR7dY+3FSjJkMRsANj/N1pKF\r\n+QuwdUFRpFd3CrujFUuj2b+X+ivNj59DvO+zLek9AM90aDDdiPpsALYmgNBW\r\nJqzEr2dK2Bd7OPtupsTTs3K+iNg0iqnWcTNTc1ck6cz7Y9QCnNGV+A5HGTBy\r\nqVmISRylhDcUqPgAdqqVa/hjLqEFfi6RTwtW6L14R8osWEGJOBpgW0lDq8uM\r\nH5F3rAFJq0UbMMSBGDklfFEJXCwA+/nqgvK7orRpQ0GX/oCjbRKIzxTD6AGY\r\nBf1nxKcb3IEgGjxDiHJe4avp0rr/TgPDbMqe/eSdoXG5LKOXRPzupydTu3xO\r\nnSAC3dhsPrQUE8Yv1ypg+ve0fgjybG/t2oDAONDW8mggnY+RLPrZYnjbMAOE\r\nW7kU742Oh9PlIYt9wPh7GKaNcY46KSCBD1o=\r\n=luj4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.b7bb3ba_1651750006063_0.6991205350350664"},"_hasShrinkwrap":false},"4.0.0-dev.c694a2a":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.c694a2a","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.c694a2a","@ethereum-waffle/compiler":"4.0.0-dev.c694a2a","@ethereum-waffle/mock-contract":"4.0.0-dev.c694a2a","@ethereum-waffle/provider":"4.0.0-dev.c694a2a","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.c694a2a","_integrity":"sha512-uGL1VG1VsU2xqG4aMHHl5QZriIR9A/6VbaunhDcz7yots9RyK+TRzYV2ihEYLgktonwNuCj/O+MTQ1hwGXcMEg==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.c694a2a.tgz","_from":"file:ethereum-waffle-4.0.0-dev.c694a2a.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-uGL1VG1VsU2xqG4aMHHl5QZriIR9A/6VbaunhDcz7yots9RyK+TRzYV2ihEYLgktonwNuCj/O+MTQ1hwGXcMEg==","shasum":"0d02cfb7c611f27dbecc89f7277b4529e53d733a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.c694a2a.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGn+mCTBC/T5nY0AN3EQqBHHhhpV5Grl+DDv0fORB/JdAiEAqRkJcC137KYjKvgTpRwze25BCRHthelsz4DJ5eztpR4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidOORACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrRkw//VtPq0zEpV6q4DTUg7mo6A3oE/aPlvfUG4eB+CNq0Dyv/YwYI\r\nHExbMvTWjkWJTBZ3Qn1+8ixl9harWgKcV03OpVBg2FJciiqMlZfd0fByU+NC\r\nusnp1mfk4WygJGiDW/EBJoojPHVgRDS/D0m8meSrU8d2uN4G01Klwp7Pj6zP\r\nCavNoLiJiYVMBVG/E68PupCAGvfKGKuChuDKEAq7qHtqbHN600VSh0PdqxIC\r\nT1R2ILovHivFlV/mDimc0TppWWSFtQG3HHRrrRxsYI/SnjeifPyeKjqh20QT\r\nAKGtngURGc7rl9eA77KiwUWpmQM7Bvyc+abw3jayXeoLwWb8ihj2Q6pHEC4o\r\nVrCY3QhRuIDE5FJHbdOTYsXcx8qCa4lxWxbAA7liyOALjnCZomKL54muQeaP\r\n5dgJRzRA04wJpmrpefpCOiob6IRx8OzAltzE8DWT+xE4N4WSkPykUyAUlANb\r\nxpVwtNEop773QrCmm40RGmG2uqOLIDvvrii+gTsIEFG2aFP87MnhPsj2BfFx\r\nH0kJYRsVBph+PpDS8UDZ1l79HJnyPIMIs84D4TVbfAjrJ919b8DGZ0dONoP4\r\nQMUkquq6WPJ9Kdsj5xwgUOcNaUQ4CrQPz+GOPFSplbZib/iRolY+6loYArYK\r\nBH80MYGpQpMO1SfRWLblPcgFUU85LTS/q4U=\r\n=3eOF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.c694a2a_1651827601247_0.5472084643237962"},"_hasShrinkwrap":false},"4.0.0-alpha.24":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.24","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.24","@ethereum-waffle/compiler":"4.0.0-alpha.21","@ethereum-waffle/mock-contract":"4.0.0-alpha.21","@ethereum-waffle/provider":"4.0.0-alpha.23","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-alpha.24","_integrity":"sha512-4fSrsMPuvqmNRIJH4oAoeDakxd2QxhG2ojN607ZVottTEGTcQs/9J5XqfN6xgEP9bguGS/cL6/EcZLZxv42Hug==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.24.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.24.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-4fSrsMPuvqmNRIJH4oAoeDakxd2QxhG2ojN607ZVottTEGTcQs/9J5XqfN6xgEP9bguGS/cL6/EcZLZxv42Hug==","shasum":"2eed69975b7b53c9ed055b284574627ad19a2186","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.24.tgz","fileCount":20,"unpackedSize":32025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEAujxmvQOUNFAJti5Xi/aH45GmrJYoCzFCPaj5MIFvrAiBj9eC8Fkb87H5MFHOxl0G8hXS6kRZjaDS0F1gm5tP7nw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidOeHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrtLA//dDo3ZariC7HDXqMEdmKqFxfYvH+ECpFCdXXif9LUK5qGTe8Z\r\nP6lMilt5zZIGprDXqiBxFtoYzNjSh89tc/nZJnTu+IYq0vXLBJctp6lo2PXX\r\n5Sn0n3vHCDMJCZdijIBqOdguAWnd+8uP1jAEfoaKqM3BlwR+XcezWQ6h1Bmp\r\naEdb7HqVSy6eRYdZsxGpyEfJaQGon0p7H6bNmqdA2fxFPY8YFX1Rt0iDQxvD\r\noU8Q/vF6jeNhtXqf6Z+y/FbvcujchxWB7ty19/0AnbIyFoP+gFRTxFF+LWaG\r\npkB6N0M9jK2eXgSygieXjFailZzvI37d/3p6tx8mgohAYcNzPuaZM4GKOjMm\r\n5YckiEb8hdRcyZzQnGultJcU6LI5Q709cQ5EkRH8S9FBweMVLIuLyGk3g3Cf\r\nzk/Ru3iv3vi5TW2eYc8lzCjpiKvjD75JcGZa5dLP8k7Vx/ikCbSi97tYiu7p\r\nil2ATrTmeGCRKCi2ZMO0RdPtDoe3rjSsDP/ID4wo3/nsCqz71wqMontOjrHm\r\n5+5OAN/RtJHM9Kqr2hiNS2C6t/eWk29cO2Sm5/ZTv4sklNWfy5eeSvvl4739\r\nRdke32QanYHRjMBFVAtkFBdVPN9wYTYGFKOocHP8ZoAhuRr74RojMWNgqf6s\r\nZuirulRyNhvaOfSt+2e2uMXOTQvG2/KUJQA=\r\n=i3Py\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.24_1651828615542_0.9694914138564144"},"_hasShrinkwrap":false},"4.0.0-dev.ba7033f":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.ba7033f","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.ba7033f","@ethereum-waffle/compiler":"4.0.0-dev.ba7033f","@ethereum-waffle/mock-contract":"4.0.0-dev.ba7033f","@ethereum-waffle/provider":"4.0.0-dev.ba7033f","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.ba7033f","_integrity":"sha512-Qmo1D6FFmBH+TCN6Q17ByymON2EdYxHpgLY4SFxtrW8JR/uihJ/TBNwN1ZdEjCRwDu644RVxJfzmZTzcTIbgCQ==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.ba7033f.tgz","_from":"file:ethereum-waffle-4.0.0-dev.ba7033f.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-Qmo1D6FFmBH+TCN6Q17ByymON2EdYxHpgLY4SFxtrW8JR/uihJ/TBNwN1ZdEjCRwDu644RVxJfzmZTzcTIbgCQ==","shasum":"a7fbf4c3c0616a9d84b4dba1ee863dfa4a5deb2b","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.ba7033f.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIARg8B5VMvgkP0pm5j7PUB9++qqaJgkGwjwTCBuHcj5VAiBk/Xc6sBHBvwnscc9SJxKdyVBz3Vf6mjF2hETLVF9pYg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidOgmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqyOA/+M5uJ2UquM3XI7zCV3R2JCO2OdwM41HHd3e21UEN0bp7ty36f\r\nspoL8e7b96WnrnDBzrleBcs2y51RsySORxAPDhDH+G0aE8+XmoQA6/Qf6WDk\r\nd27jP5bhs9fAPi6hilxejfb9iqrio72S73lk4KomJBytOXNZAlPWvO+fL/+Z\r\nC3NPTgBP+ZydH5XdEjRepb+1BX7bNKZfREId78MEAHMR5GmnPTjFaUP/58yq\r\nSzSDjL5uu3NIgZRH5OuL829aidgu/9Qi6YK5R+jNDDlJZA2n3pphzOPjhy5h\r\nr1Hc09V4KLyT+ZvwUA8SWSfOiiODqUL6yAvX2f1sUY0XBYpu0qAZoegnkBoj\r\nNoxacijVVQs84/HTmbkq6mmNMdo8bLMBtyUWUwixS0VuLkgdavUh+c6aF6qT\r\nO/liOF+r3XaIOUgxQPMHYTPKT9ZnI8G0WUIXbKd7QkK5PjDFmFw1hjB0XyQ0\r\ngPbDWTj6Qb9br8ug1ODzK5NDWLojdCkG+Olgx5TaBemNggXsecuSY24JtpYj\r\nkqRotCc9eyvbQfbSvfW8kwqsO2cAGJ+HLEwmWA2ITvASnaAz4OWnJcD5RzXX\r\ngZYJfmlsmTxiQ3CcEnAEpCw9ZCb+eUvofJXA2DTcnGzRnTr2adW3yKGv5RlE\r\nZ14/fVARtm62Wvd8mcBTgYT3kAF/AIrjVbA=\r\n=hpCz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.ba7033f_1651828774738_0.5030774125875002"},"_hasShrinkwrap":false},"4.0.0-dev.bc0a5b5":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.bc0a5b5","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.bc0a5b5","@ethereum-waffle/compiler":"4.0.0-dev.bc0a5b5","@ethereum-waffle/mock-contract":"4.0.0-dev.bc0a5b5","@ethereum-waffle/provider":"4.0.0-dev.bc0a5b5","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.bc0a5b5","_integrity":"sha512-p3aBcWGdsURdd98dmm6jG2fS6omr3zGdkvjJ8Oy+9Gy9qIoO1XgGvqsy+x0yklmvL5UzzyK47zZvFmgL7W8vxw==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.bc0a5b5.tgz","_from":"file:ethereum-waffle-4.0.0-dev.bc0a5b5.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-p3aBcWGdsURdd98dmm6jG2fS6omr3zGdkvjJ8Oy+9Gy9qIoO1XgGvqsy+x0yklmvL5UzzyK47zZvFmgL7W8vxw==","shasum":"eb551281fa6a44864f751aee6d7dbebe611ab1ea","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.bc0a5b5.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDa+X6L6+BQJvspAPLVXZni9PQSP+1kPXmXWJoTAU5oIAIhAIu/eanPLNTEnPP62SmRSo8ydAcuS1f/rvginW5a8fLW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidRYhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoxbhAAmWQjJp0fUCZUIX0TKjOyODaWLq0omfWPpKR6Wf60LQ6f5nnV\r\nmsWvknAE7MrqeO0Aj8t23/7TiOtsMPPvzt9tLlLDo/Lkp7it4B3w7yHTqDfH\r\n+D6Vw2My6MzBfZrqdPRbP/QcsCZloZ20TR1+g5LeyevdsmWivjsq2quZxqK7\r\nX92yteyHyyCXHmOo+GvZOvUyf0nLJb2a7nw3UHE5Ovj9JX/1y2es2JYna1+J\r\n7lMn/s7ForOikHwOqCcB9vx64w88oVtq0K19lfxb1Wcmc2EiWVglM8dS1Gdf\r\nmv6k5smi16fwZdwNoxhXa/fZyysK9oOGo384UCaqzBSh66PjlMAawcZJF3lg\r\nI3ijcUNdWpkp0PJM6fozi/li32GUedpAH/OF0gicE1W4du73oCQITLdYIFhC\r\n0qpfAKz8hi/sk4C6oPAS0gm+v5yeFRCxz0mizddrHly60JUHTQntRtxxrUNe\r\nIo+gSaiRTTK9tMt6BWfrJvj8fxb4x3TbgTbm17YQV1585g0RlpvklOSJsw2f\r\nbyP4PCChSqxGz0cwhZKpXHRie4XWeEM0SRJxmUWvC8CQhPzlR+DHGCWtDppD\r\n0IIxCqATIS6czsliDn8sfrUSat0FKAbrrGbwzud2jkf6M0G5PqTldDOmDv2N\r\n9uLJ3SYBiTRRrf9qv3vWStusjgtocY37al0=\r\n=bvx1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.bc0a5b5_1651840544946_0.4465166541892249"},"_hasShrinkwrap":false},"4.0.0-dev.900b71d":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.900b71d","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.900b71d","@ethereum-waffle/compiler":"4.0.0-dev.900b71d","@ethereum-waffle/mock-contract":"4.0.0-dev.900b71d","@ethereum-waffle/provider":"4.0.0-dev.900b71d","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.900b71d","_integrity":"sha512-B66x45kreZwtcS42FlWL4OE03NmDBy3T7z1AcJikAGk89ETz9Aw8HNLM2BWM1TGgnBzcttWwgQUwrTn8Es3etA==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.900b71d.tgz","_from":"file:ethereum-waffle-4.0.0-dev.900b71d.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-B66x45kreZwtcS42FlWL4OE03NmDBy3T7z1AcJikAGk89ETz9Aw8HNLM2BWM1TGgnBzcttWwgQUwrTn8Es3etA==","shasum":"bd65eee2f2302506ac9119f82fe41317fdfddadd","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.900b71d.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG2Ne/ixiEYjfZckF19XYvo7LjinNacTimi8UkJSPapkAiEAjT3d2ueu7/ltuc/I0YrN7M7jRF4u/WIWnGvhUyDnMsE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidSvBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+8RAAlhpMEDjtJqVXPn2ThgmbtE58yPhFk4ZFH1u4Vf7O6S8UufU5\r\nKfxKJsDpQGVndqtvGqCU1LEH402AEdWOERiySjYU0UMNHrVq3Px4psVp+F+q\r\nQpVejV81t/ZkjzGezMi8DDLS1XvnWNssFJvFmJTqmvz2fsTglQHVhqEWYj+P\r\ngwCt1JxvW6g8pyLUiZrcXzJfMXxLc4eCxuURfFMKDXI9AlO+jAnO6mZRSmPh\r\nuF5YZ/6COu6nXG+KaB5FD9aQE03m2rGAXAkk/auJLqQszoC7b84lsCufUeg5\r\nE+4ti/H8DW1oV0MA6QgyGG0ImmbCHV8i/nvPtZaTqtoRX4zc7GgqXqRa1EOP\r\neJquzjG0TdtWGaP32FoYtzLtdM8gMNhLnIkycuij+r77wKjbIzHbSUULDYFy\r\nGZc/FhCpkZPcE4Q4YFAMdEWCT9Hve0NJbUwRlXMQg8dx5fj4YMyuKZTZ/WOM\r\ni33LvVSEkZrefzXMPJrMxoq9yEyqwUodIcgrAQkeDHjk/w26H2rqCizh6Yy8\r\najAX7BpZWko5+0Y+tMuuL4gzvDwW+gRDQwiBQ7oUYG6yh94oiTptZlcGUouq\r\n609bB0Vu8z+3abtNeb/CO/wftBq3MmdoEgEn/kG2O+fWqzsrdYK7rbBFnmqX\r\ndJoANMEUCB6Gup+I9Au2BRmbzcRXqgbHDys=\r\n=RtfO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.900b71d_1651846081757_0.6606397612792811"},"_hasShrinkwrap":false},"4.0.0-dev.ba8cde5":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.ba8cde5","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.ba8cde5","@ethereum-waffle/compiler":"4.0.0-dev.ba8cde5","@ethereum-waffle/mock-contract":"4.0.0-dev.ba8cde5","@ethereum-waffle/provider":"4.0.0-dev.ba8cde5","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.ba8cde5","_integrity":"sha512-9GzViWhH7S/ayB9JtkbdYCFzEpLKgppOoFVAQF9i9hVN0M9aCOCAri+ehuY4ovhPgxgbWpYlT7raV4GwBldwGw==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.ba8cde5.tgz","_from":"file:ethereum-waffle-4.0.0-dev.ba8cde5.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-9GzViWhH7S/ayB9JtkbdYCFzEpLKgppOoFVAQF9i9hVN0M9aCOCAri+ehuY4ovhPgxgbWpYlT7raV4GwBldwGw==","shasum":"27e3e3853fb22573f6e797c8893343ccb9dd2e75","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.ba8cde5.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChibW9Xci8Z+6MEs9VFN7bPolBrfZDhHnWdLr+8JAgvwIgDSYuSBRYOcFmnElV+2nselF5S56oWPLqpMfz56y71iU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifh9XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpdeA//VXMeA6/t3EkChLa8FaFGg04IiVkSEAy9N1vdlOTf92G90JlY\r\ni9gaXQTvJRCmaW+J1OV88MpT+QnPnMzbCZ+PMcurdD4DYKWiVY6iCAhx7ddU\r\nvVuTZSBcI4C3a8e+XgVd/WyAOFkNDv3v5HK8U0F0incO2HyVXL9eIvcmfkRD\r\nScRyLg5P50xVlqA3VuH97Xztk5l95VktzEodQTe813VRS0ietbIFA6SS0/NC\r\n/DD9e/Ntx1THssCWnxmakDJCssH0WGWWiqdY/5lUd+O5zsEW34cNRLgW1Cq5\r\nL77gjQe1mpGnNA8fBvkvFKQkNeWVnlJYCfE9sFIAL7+LzuRttOJRwTWTtgaX\r\nYfGCV9I0Nk4c85XivxQns6cbDWy5oWL11CXjrqoaAzuep1NrjeBmRCjZd5c3\r\nCAq0rgX/3t/3mrFWntplDzA1/Bc8eit/+cpe8PUf1C6TUd4nMqZ2UFtv42OS\r\nCs4+hGJxS12FW16kEJs6w2nj6COVqWdZ90FNjCcOe1RW9s4rKvoIhgix2c5j\r\n4snhCmrqDbQseNaKq1rbhGwD9O4WyXSXnqxxeLAbuAd9avZ65L7LW6NhnB9M\r\ndKgyddOqulDJ3l+K0fdOqYO9pvVbtpDBu2viqJy5xHDHvGW6NVVdervxBZ87\r\n2BuVxJjmBxrqvb/60866xPv1kYFX2nRmCCA=\r\n=Wslp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.ba8cde5_1652432727253_0.8327285961367992"},"_hasShrinkwrap":false},"4.0.0-dev.104f4a3":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.104f4a3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.104f4a3","@ethereum-waffle/compiler":"4.0.0-dev.104f4a3","@ethereum-waffle/mock-contract":"4.0.0-dev.104f4a3","@ethereum-waffle/provider":"4.0.0-dev.104f4a3","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.104f4a3","_integrity":"sha512-ksfLj3t4wlO5AcWpjKzpjg1qP1iw+MSuUq0gbK9e3RtgrxE2WNsm3TbLLMcx2yO1Af48aPI7AWZsrQ/DPbGtlA==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.104f4a3.tgz","_from":"file:ethereum-waffle-4.0.0-dev.104f4a3.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-ksfLj3t4wlO5AcWpjKzpjg1qP1iw+MSuUq0gbK9e3RtgrxE2WNsm3TbLLMcx2yO1Af48aPI7AWZsrQ/DPbGtlA==","shasum":"19ed7f42ce1d4499cfe01d58c7b5047d83f39717","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.104f4a3.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHNqDjg8QNpxmXZ1U/13aeAYK7PNxNjnHlCewOpqlzowIhALXDIoODUe6oV/CQjZWGhPhIhwdIy57yox45OgusYpVr"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJignjiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGUA//W+9jVkZ9Rq49Sdh+sYxD2osl7ENQRbUEVid/ciRGxCr9KD7i\r\nmTcR8c+AlUDYqI8UIJgr/ZKBgoj/RW5oCFhZWyWD4qr1HrJVlBXThkaiGD0S\r\n6Z05dMhCrntQuvYo6EbuzPDalVReCs5POLCFCCtcuWbv8vHmb1TGsWaH/fH8\r\nSoWt307n6uQSxikwe4pl951AVCduy4ba7PUroaE91W2Dh3HKatyJVwlhjA7s\r\nQHeJX3vYpXOBGOmzJl3AWkAcS/cfikMRaehHgCQKWF8+xkhIQQL3VLfbG480\r\nSylnA0HI9/F3C76bPCQPlPo5uxNhuZfUJvKqW9TWmRyhes6ctjDrcOP4VPo+\r\nrZzNcOl4FWhM1HU0mpaAYk3jJa36wkW4yK3FazLpe0fc2rfFL/7Ff26l1kpx\r\nP0ika2A7+IELCFEDacuGSnxxWwjVlvCVcqdVvMiL0HzeOtn3z7w0DGlF3Jvo\r\n5FMOujjlzPK6fwqumG1I24gMAVx3iGHkhlHSGAuFW0o8EFLqBmSfe3ZIn8od\r\noUr9MC9W1xl3O/x0XUmhBAXEgj15l+vWzB0S2Iu+tkZaGnw1/z7PTJiLJVso\r\n3pUzqilLGdxbvB/enaefAUrdwfzzoGcg4uiXbqouQzOKufI6iL2jJgQAweaX\r\nUyQ/wIhRp3GTj7/uWxx8+7R5QrRJxJRnwwg=\r\n=bIFo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.104f4a3_1652717793884_0.8520145900717258"},"_hasShrinkwrap":false},"4.0.0-dev.e3fa452":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.e3fa452","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.e3fa452","@ethereum-waffle/compiler":"4.0.0-dev.e3fa452","@ethereum-waffle/mock-contract":"4.0.0-dev.e3fa452","@ethereum-waffle/provider":"4.0.0-dev.e3fa452","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.e3fa452","_integrity":"sha512-spe6UdG4Joq4kbBLaBEWZJQWtIpRvI2q+vxwclGPjqtVVbV183ojfqoafd2ejyZh3TSyZ5h9RwpC6ov9T/vR8Q==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.e3fa452.tgz","_from":"file:ethereum-waffle-4.0.0-dev.e3fa452.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-spe6UdG4Joq4kbBLaBEWZJQWtIpRvI2q+vxwclGPjqtVVbV183ojfqoafd2ejyZh3TSyZ5h9RwpC6ov9T/vR8Q==","shasum":"307c9c2f5e1118e66dd6fc9c21117ba83faf36d0","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.e3fa452.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBKc6mXQSe50N1lsQw5TDCkGxdvSQlED7KnBJNBMlBMlAiB7xBHFmaJm6FLhKcEpCMHevrsVGZ1UZAZp/Wpfie460A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJign0RACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoR/A//e0rufSnt8/gqFhZ8jL6ZEWlAlDTRipLdFcImgWLclRRIOwCB\r\nbogf5DXBuWzSKCVlRTdGa0m3LbXgIIPg7ktSodNJJ9oBrkb+o02jPRBIjqmd\r\nFXnbEIwQYcC9WXAuDHKYAeQWcBzcycgKuYstk1+dGsX2sJ4Chfyzql6g7AmC\r\nNguJ7Z2DHuXJX/HqT0JfW5n6/eRmBFSFNuZM4rjEq1G8DiFarnfm1K0E5p8e\r\nYQmafWubAJKn4F5RWI59/E185EXY4J+baxwuWENVE2QGl8kkYcK2uqx2rIoR\r\n5trT6gkwCoIpBwg/psC7m9HErnLnvD1zw6xoHpt9h0jw6I7CtiLdxr2Gf1Gk\r\nmbwn5Vn6U1dwrSNLJyf63IfSRaKV7w0k52dcUhfQ+yCBine994rZjhkHHvlo\r\npzNK75q1SnZSCzO5TiME7xQJRH2Yj7clhTy2BYlepbYS2/7ljJyAQlrqWrzx\r\nbmafQPsM8KPV6WuCmaVq1Sohfjq871IkHJKH3vt2/sQHO/Zfszffb2OJyHRe\r\ndTWmOiGqMICkEYH8d7RBtH2a7fe73/xHK2t1qPTG+COO08sUcWGsfIRSiSaA\r\nkInOAj2B6JZxtg6i5lGkLEE8wFqLBnPi5/mGgSCkPmIZK9xLNY/7kaT5MZk7\r\nLYbfeuaV0SUYvyYCXjdCophf40sqBp7v7l4=\r\n=lUfb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.e3fa452_1652718865820_0.6539810048115065"},"_hasShrinkwrap":false},"4.0.0-dev.9e7c3d6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.9e7c3d6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.9e7c3d6","@ethereum-waffle/compiler":"4.0.0-dev.9e7c3d6","@ethereum-waffle/mock-contract":"4.0.0-dev.9e7c3d6","@ethereum-waffle/provider":"4.0.0-dev.9e7c3d6","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.9e7c3d6","_integrity":"sha512-B26hYM+58C4jzE1aYOKt1QNPk8xcNGP27tXubdXsEJ0HuHW+mPDHDp3qCsG7brVA8ZSUuAemsaYs/WKiYRGuog==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.9e7c3d6.tgz","_from":"file:ethereum-waffle-4.0.0-dev.9e7c3d6.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-B26hYM+58C4jzE1aYOKt1QNPk8xcNGP27tXubdXsEJ0HuHW+mPDHDp3qCsG7brVA8ZSUuAemsaYs/WKiYRGuog==","shasum":"dc9f864b9cd35bcdeb869d11995ce7e76e45ab46","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.9e7c3d6.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZXzgsHYPQam5tSn1+3eIVLQUgDBfrO7wO84dPd2/LXQIgX5kvVWiKw6I5gk8mHp2hul6RLx6tPEsnBefxe/ZA3Nc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig5rrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqs4g/+O8Sc33/lNoyANvKaqP3qESysTYN1jyzDRkshyEArZn4gJbXE\r\nuW+MkFVC7gNznY6mJ2vnDyaFDMEeOyuFyBOZ2Fr9Ng32knpJqIi9209AvIDb\r\nbxl0+GnBkSE6vTQuH8EC/RJSOLsA4hSiRU2fLJoSr9uwOEOIwL8Ypt6zgTqd\r\nWXvKKojdT0SavZkra4idATuFIKCZK7yFIo8WleMVKuG5sA4scHSlQ5RLYrcu\r\n6YKjbWQbzJKqkF+wPMJ23fAAgqu1LvT5hCPJkXUCFqWosdoIBZN2x35Sp11n\r\nmKc/sAcJHIX/khPu1np7qlcLJmU6icIu36kl1n+Iu50w4V5bnes9RdrMpmbe\r\n3TlC4kbJrzNzfaH7mjW8aykHZdffe6P35m+JU1FrC0zfDKcIN0zhc2jY5qPH\r\nUs1/HUyUbD/39VqlFSFx/95Qy7ku/OC3e23lNg48tq+xJEJHGMM6lzJrD5Gv\r\nKgR4N6tSqinPGZSnPIz9GkISQTe+eU10S46VyEMjaQfvAOge0qxft4OcIVW2\r\nD0vO3+Z+vDeZGFDxEzialrXqZka5axn7PgSJoJPPkRWHMzWDyK59KyIy6rAK\r\nn0qMQ2Ka9NaWrCdv0zvojO832OjbWSYeho9J90Tm5jcdxQ3//WrVbM/sknhf\r\nw1KGHYOJdp30HGc8/8QN1x3GiCpgpUQrPpI=\r\n=Xnue\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.9e7c3d6_1652792043542_0.5737836429751744"},"_hasShrinkwrap":false},"4.0.0-dev.d9a8ab2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.d9a8ab2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.d9a8ab2","@ethereum-waffle/compiler":"4.0.0-dev.d9a8ab2","@ethereum-waffle/mock-contract":"4.0.0-dev.d9a8ab2","@ethereum-waffle/provider":"4.0.0-dev.d9a8ab2","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.d9a8ab2","_integrity":"sha512-u+/ydPHzWFTILHcDpdqF8CSylAGSMw9+hEmaLRf5UqLxHg4qI40M+2ooN7z7By6e/J9HKmxa5I0GQR4zrBV0Tg==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.d9a8ab2.tgz","_from":"file:ethereum-waffle-4.0.0-dev.d9a8ab2.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-u+/ydPHzWFTILHcDpdqF8CSylAGSMw9+hEmaLRf5UqLxHg4qI40M+2ooN7z7By6e/J9HKmxa5I0GQR4zrBV0Tg==","shasum":"747e74c3011102342bf1a598fec0ad16c0b8f041","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.d9a8ab2.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAduXamQETl2Wav2rLM4xOnn2EgeXdMMTo4/zWC+AeuMAiEA3v3HxLd0xS7TVoZuM6s9SfUJS3QpmC2pWyzP3hqVM2c="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig52XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqvQA//fXNHVUAF6IqviuXFVcKmuS9+Tv2ayX7wcDOpRkHW/XRC4Hl+\r\nuyvjxAwyz4wUxFN2EHFE2/0wTzrGBLdnRHaQmKsdfysCuOx7slknKKjvp6Hd\r\n3C2o0GMb1gEcbVH9fhpgmhTJpvGvVu9mZA/pxOHJsLDxc/3IYMx7qlOeUJ1m\r\nLZepNPvG1O4L0rpQHGwF4bneV/fyE+pUcm4I2uOZLcFS3owhP6LHFghoMGNQ\r\nqbNZ2PBQmiIb1Pa3bx4m4qoRTHi5Ucb7r/oUMcSIEqnX6ft5TQNAGTPY7pFQ\r\nPG3B6UVMbbyXZmuki0KhIKwBRnngMHfAEIZo8UL+c+tx9wQsS/A0l4cxZi4c\r\nWQnzIo87uQKIwQVFZrgCg3nrpH9XnRpzH/0pHuyBb7jMwd09FGxpcUkCSmmQ\r\nKtzSPDUfrIHhaU6H5WvMkwH6Y5F7tCQJ8rkKqkCXvTfjGEmXQ+1noYZoS9NV\r\n/3fNQl63s/vwANdcbavRPQY2zwLR9yxVh/I6dX885LGwbMSKNs5UALlLcmae\r\nT2FeQanxknH7IRBdBPiW74d342/5kYlyrCoPZeO56XN2S4rwdxNhcAdVdTVy\r\nHm0AO906dNq2ZRubzt/X50eJZPzUIqde8jMTtugfhQSk/k+w2SV6tUKMMwRR\r\n2safoekDokPC4aPA7Nwy+c2qfBQcc7SXTLc=\r\n=6uyk\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.d9a8ab2_1652792727110_0.1255173021564686"},"_hasShrinkwrap":false},"4.0.0-dev.e275a26":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.e275a26","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.e275a26","@ethereum-waffle/compiler":"4.0.0-dev.e275a26","@ethereum-waffle/mock-contract":"4.0.0-dev.e275a26","@ethereum-waffle/provider":"4.0.0-dev.e275a26","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.e275a26","_integrity":"sha512-rCylMJj2rlECt0laeATnGpP7RcKa9O50w+klJy0Xc/PZk6cv2nbuQvpIRAuagPwUBiES24Mhl3Bw434HDvJ7mw==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.e275a26.tgz","_from":"file:ethereum-waffle-4.0.0-dev.e275a26.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-rCylMJj2rlECt0laeATnGpP7RcKa9O50w+klJy0Xc/PZk6cv2nbuQvpIRAuagPwUBiES24Mhl3Bw434HDvJ7mw==","shasum":"44d2564090b3818333cd71c24cf4fd63608b24a0","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.e275a26.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5QyTKSnGd5pKoWmtiHOQ7NyY/OSSo8RGrjT/7wAl7YwIhAO6W6N+0ANnX7sFQPUroDZwBS9iy1j+Sl+8DJXtDBMI+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig554ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqEjA//fgovm+/TU9KJIIn02jKWlpIn5YU9UUFw0MmvaXFJbqZcJ0fx\r\nFJJI+splVUQKcWUjQZCbyONFqUrJo49z0rlDNY0Db+QBp33LX5yP8GUU0BjH\r\nMsKRPRtKsuYJ2KFlcZeXIb1p8lMgd/Kp5MBMDG6xu+Mkd5E/tUdepYKhxRIa\r\ngPTpLZ8H9mfqMVAXF8nnltoMySKS7yIhibnawuUrrKdonXISKv5y/jK1TDQT\r\np0aCOfmod/hFIlBV4A1kpABtNNBLkYorb0HjcUjOyZ1ophLKjb3rvrE2FzZ2\r\nQ1tQzyFM8yCGnYzHGm4RGVySbH1eTzCJtGrUaatXyH09MoRTh1hVeIqkR/VJ\r\nyKTduEBPLW21gHzzw+PPPINpeFnVzhtD4pGIZPeJ55B6qPC5W89M3ADQTVzQ\r\nmZRZu+Yh1L7R0QcvZ09oQDTtmkVYhZ4wa+Iy6CApLT0SjRreudYWyPNUis4l\r\nJF+rXznlcI3cJ2x+4KTJPswjy0dAIpRzQUfUj8TrQ9Do0IAsc238h+XlWPMl\r\nPWHOFO+zUXrXMEs630Yvk/ADigk8Q1GPwZC12gwx8/NtcSTFoFjixModseE4\r\n6lhi4wgkV56rQ6Co098r5306prg1vFNdWIS5pfFXX/WJPzQGzoDvIG/zijmx\r\nS40Ya+b2kvDwYUkHOG3wti97YyUW9tqKhAU=\r\n=Miv2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.e275a26_1652792952400_0.7784912284869956"},"_hasShrinkwrap":false},"4.0.0-dev.8aa0bc2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.8aa0bc2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.8aa0bc2","@ethereum-waffle/compiler":"4.0.0-dev.8aa0bc2","@ethereum-waffle/mock-contract":"4.0.0-dev.8aa0bc2","@ethereum-waffle/provider":"4.0.0-dev.8aa0bc2","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.8aa0bc2","_integrity":"sha512-TSzqb7gfmRu19y0GA+2wIl2ZPmJ/TI0zhU0PY/gs75Ogwi3xB+HTCja78XZC8Nx+kq+lysXfG4CsPNJMT+qy7g==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.8aa0bc2.tgz","_from":"file:ethereum-waffle-4.0.0-dev.8aa0bc2.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-TSzqb7gfmRu19y0GA+2wIl2ZPmJ/TI0zhU0PY/gs75Ogwi3xB+HTCja78XZC8Nx+kq+lysXfG4CsPNJMT+qy7g==","shasum":"3dc6ccd00144727bc8a06ba09559af97679e6fb8","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.8aa0bc2.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICY/TPTj8VQOp0ufPKOgLXDhWtxvIgYnabIKrpZIqa6mAiEA7Yo8Z6QlGExEGw1+SqYjx2wsXlb2MIDcTLqoehMBIuY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig6CKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrzkg/+Ify7cnXrgCQgjxn8JAgxRQ8siYXZKx3KcS7nDR93vZ/HAw7B\r\nVf3xxdV0WOUdKvYeEtBr4+j3VGb2RganvsdigxF0NUccZ4jQRY5Rjx4Ud5xZ\r\nG6RD9gLuyMTDdXaVwkPUTo1aePgc9Zt0WSXmbmexiQ/KmmQTs3hdZnA4GEtV\r\nTNU3z7PeapxQ4dPGz8XDNqAT0UUkqorcRQg7bmiX8/urS0QmQj8GBbDfHVnG\r\n6wf2EJFzUXExO0TeBorzTV6ev1EXH0ia0mod50eHN+X34QiDuIF4grPGkpO2\r\n/eS3EqD2kRcpSADeMAF+ZUw6qgjwDxTaGK2aPMplw7baJRVWhhv8ZaJJ02Mg\r\nVxGWJUjhy3E0V7NtTyLSzrdqsUWuqQZjpe6JmRsSuohY74fCbXZcmqRKPnon\r\nIbl0yo2FslrahN6znOG6JiW2afxUqpF47xIifb4YLsQvSv/TAYsz1dtZctNv\r\nQ2Pc1n7zwzhOxi67MNZC81o4ghpuUywlXxxwDHxBVdEySDS8rPm5CEqWBifc\r\nbB5p1Vpn46LO4O2Ms2y5Y5kSIg0VYyiUUU3kZRU4sqLoLGyfkpTT3oFZgyzW\r\nRk7kX8Ij0UBDr8RNqfNmVxjqJIld/ew0eoFjmRK2bV4brGm23aoz0Ebibaga\r\nVxJedpefwPVrpKbE/Ed9ZGbAa0gkpCBiRCA=\r\n=tfP5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.8aa0bc2_1652793482105_0.7161720193673797"},"_hasShrinkwrap":false},"4.0.0-dev.219fe4f":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.219fe4f","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.219fe4f","@ethereum-waffle/compiler":"4.0.0-dev.219fe4f","@ethereum-waffle/mock-contract":"4.0.0-dev.219fe4f","@ethereum-waffle/provider":"4.0.0-dev.219fe4f","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.219fe4f","_integrity":"sha512-Fplm3lV7MtPSbBPEET0P8Qi2xkrgfPQZQqBxKnIRbS1rvt4nTuUJM9pWRDyfhB7MSM0ujhYPZm8Hr5duIETYbg==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.219fe4f.tgz","_from":"file:ethereum-waffle-4.0.0-dev.219fe4f.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-Fplm3lV7MtPSbBPEET0P8Qi2xkrgfPQZQqBxKnIRbS1rvt4nTuUJM9pWRDyfhB7MSM0ujhYPZm8Hr5duIETYbg==","shasum":"0e6a813dcb5737785985b23e2094a238e8020442","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.219fe4f.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiwMFc1T/HyyWdIStO39tYrjdyb8MO1L2bAcevzglXQgIgMwQ7OMvfCkb8NYTKMuvU3o+wIwD/ZiVYsaX7F47lTE0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig6UgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrGyA//f5eTf9nFtDuMme9lwx7vJUgY3sN1JOSS0l4p8ZfLcr9D5Ycb\r\nbnc1l+g9maK32cyI4ok+tMZlcvnl5qBlyaWu6xMeeFRoOBr9s644MyKjevsg\r\nn3t4gw+abfTHqbqKnvckNNWQrhA6G+iUhU/ykCnc4ZiGmYA5tsLlO0B6/7NC\r\nvto7tYqDtd087fnzW5nJbADYRnhC3xm4NcIXgLFKH4yR4cafAm++ozPPDdM3\r\n5GZ1mEreATc9VAZhMrFxP5HiIdpCjCQJlHfxiQEdre2xc37s7Nesck1E/XeF\r\nxSUSYBV3oH5YS2DbASOsbcMwfnMuwGbM1s2ZvGNpFiODO87zdRtV/hTAWo6D\r\nZ1Nba+6TphslNiGfl7w0uj/uZiigeZw7mBgQg4Hrkce6XZtAr/AClZ9tTS0j\r\nfRC6E/qWrXkf6UGJdj8bd/wLY6eqwlp/CxTVLqY0u/fd7afCSiggqxeDt+xw\r\n2hXU4GaPGI5Z2XxmW/Jkla+76Wxxr7NTQmcYPeU1pGcnUsxe2+NrX8A13jSI\r\nJTNSV1UaxydbAQROPJTF7Vivvz/lOPILOkW2iKhwJ20m1T+HfVNKYcszX0cK\r\ndt9hvAFDQefVuBcC8RJHKBUzrdRd3fl4G8hcTjho5NpYZizph4vO5rv2hAmW\r\n6kgdbC/9q++yzWQ8co5XmbuFKBLH0YLY+fQ=\r\n=3M7f\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.219fe4f_1652794656204_0.3920309149150367"},"_hasShrinkwrap":false},"4.0.0-dev.7e092e8":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.7e092e8","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.7e092e8","@ethereum-waffle/compiler":"4.0.0-dev.7e092e8","@ethereum-waffle/mock-contract":"4.0.0-dev.7e092e8","@ethereum-waffle/provider":"4.0.0-dev.7e092e8","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.7e092e8","_integrity":"sha512-al8xHfTq28ymf66HXDQd9+nMczyn/gz128asc3rVnTbbnEwpQOi2hmvD6GBnuasxbgTjtCOrj8qhPgHL04hL7w==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.7e092e8.tgz","_from":"file:ethereum-waffle-4.0.0-dev.7e092e8.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-al8xHfTq28ymf66HXDQd9+nMczyn/gz128asc3rVnTbbnEwpQOi2hmvD6GBnuasxbgTjtCOrj8qhPgHL04hL7w==","shasum":"29cb71cd13727df0a64b25253d149408d74202ae","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.7e092e8.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICcXLcY/e+1qYxgOh0Tikz40WAiwDY2EJ0tUl/vZ6qhTAiBfz/KNppM3icDHG+Dy4+RqorTxgjWuzvTSWAp9Q8iZ7Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig7GHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq1Vg//d097OJcuAWbuPlAyEMyAz7iPE1pPdVyMqTdAwvEE0wJLZaFM\r\nicaPBRXv4IgLQaaJntK1sehuK90knW0fJoz89Nxnr3LUPtxA3uw5KdY5E2qh\r\n20KwVOXde8rrI9p8SZKbP61sunoz/thDXjC7k9I3ZNde63LJtwmk6FfFPp9j\r\nnO3QfMtU35UE1zJ1ef90g0vWohqXC3MoPMKtdpcE1fYx4ITXMnZJb4aFNTSN\r\n+Adok4fKMxaPAmEBFfrbflFg1Z/5pvrFtyCPwkFF2gVUx/l7Mmm0w7YwekdK\r\nU0gH+dnxA3w/bkrUPMRfMo3BNgKmDPjuQ491qU7okwNvQJmeKCYYeHkdmh/M\r\ne8631VWI1gC4VBi3M4bUgvYsbofNZYDx+1Kz6P3hzeizKyfqC9jf4/fxHjFD\r\nr+frUlTkhzqaPTQ+Is1089UwaPBIet0y78ZhvWMHf0xaQYsVoNSYNi8y/iaS\r\ntE6V/RuRh0zFUHe2zJyWn7Ywh08UAt5UqGEGE8tEC4vVNltHHJIsJp4Zoor9\r\niH8+UHe/FVukLCr+p9j/FqJ+5UlYSb643bjls3U3jKppbhIuUAzxD/snJtgt\r\ndpL0Nyj63wJqHpZtuwUHEJ4Hv1r2jKtD+8tsDg4NTF65/DbdiqhdveAbq5Ni\r\ndYSzaYpRyE0ctwhfNJ2q/RxMpGXn00p8wZQ=\r\n=hZGW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.7e092e8_1652797830790_0.4232728416437648"},"_hasShrinkwrap":false},"4.0.0-alpha.25":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.25","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.25","@ethereum-waffle/compiler":"4.0.0-alpha.21","@ethereum-waffle/mock-contract":"4.0.0-alpha.21","@ethereum-waffle/provider":"4.0.0-alpha.24","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-alpha.25","_integrity":"sha512-BFYGAcysw/PfDGBOiT3O1mIsLq11MuI/NhJLhvzayCyMdNV2WpEQwmVe/ieK7BPxw+VRPaA5P+Tsrw7VNzLSAg==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.25.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.25.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-BFYGAcysw/PfDGBOiT3O1mIsLq11MuI/NhJLhvzayCyMdNV2WpEQwmVe/ieK7BPxw+VRPaA5P+Tsrw7VNzLSAg==","shasum":"c791887930767eecb15f9afe9ddb9c3ce586af0a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.25.tgz","fileCount":20,"unpackedSize":32025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqlqI3iFPHc8Bd/oQo9hXOBt489A+E2EZWKmZ6qyj4SQIgGCLPiXenv8HbWBbwVkKiOqleh6G5ls7Jj4Q/dp62ESY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig7Q8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrmEhAAhFzDjN7mDLGcApuVmv8n+q0XY5kdgpcXuJyyzqNqUkWSEmP2\r\n0FqB3pekD3ogshg6mULZj1/1KFi54ZFvA+76i8HFqaawCF1GpYjL+aARXkkk\r\nrVQnj3A8osGCu1XJJcIg9IWQgPB26VILw+meq7RW16oKMVaCziZZuixO+0qt\r\n87YnMKOgwWk+RZGakDhxZ8885V0URL+kwUHj/GCzbwLDpMZqcGvbrgb3YwIB\r\nOEaCBxoCAWVYqvTpPBrQGi82ePBx0RdDoAOcCokPo4omq9XJIOOsKTydRsjJ\r\nY+0rI3Vij7ldMVQufHPMvYwADdfHJ/bWuC8DaxH9Y5FAryUQ9rEdAOLs8SkW\r\nbQBipEtpNKvteFfUfxJq58DYq48yagPA2f3VdiHUctcylY9BLs+phG8V41EC\r\nMhAd1qiyHpC5/APoPaBHCed5EBeatOGIcIBR61ABrQ9taeH9MQbgoiyVSO5K\r\nYWMc+qP+ZSg7UmXjLNw6E2XF7xxqdSFz7k06dblvU+F08WGPu4MAaDQ6WikG\r\n/xvkaHiY53RmFwXL8xhfiQwtA36Ydd08sOMdbrFstfxeD3bWNTBfcQ35lIgR\r\nD0DI1pPhW13ixKJEfmQvNvZECTzJxh0158x2ZFMKtuRFleu5t+pQ50JLyCXm\r\nx7kJ+egZDuvuty9vr11gvxFd4ED5psgfSMY=\r\n=L1yZ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.25_1652798524675_0.6878880023894169"},"_hasShrinkwrap":false},"4.0.0-dev.2ef3d81":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.2ef3d81","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.2ef3d81","@ethereum-waffle/compiler":"4.0.0-dev.2ef3d81","@ethereum-waffle/mock-contract":"4.0.0-dev.2ef3d81","@ethereum-waffle/provider":"4.0.0-dev.2ef3d81","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.2ef3d81","_integrity":"sha512-mKpmPvHn95msulVEMJ5nyyzgJ6xKk7SxM25MvvuwYQ884aIz+6E1ZLzA6fiOyCFbG3tq3dXNLFdTeVBOd0pU1g==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.2ef3d81.tgz","_from":"file:ethereum-waffle-4.0.0-dev.2ef3d81.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-mKpmPvHn95msulVEMJ5nyyzgJ6xKk7SxM25MvvuwYQ884aIz+6E1ZLzA6fiOyCFbG3tq3dXNLFdTeVBOd0pU1g==","shasum":"632ca524bb3ddbd9b457ebc6df7e3fdda82fc52c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.2ef3d81.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGC17sqtFS6KUOor413gmRJYqa60nJzk3BgyOOqMVXYAAiEAs8/IpV7KWre6J6MfMiyS+qCX0oqf5siqxkzNRsLRVBM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig7TWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoqBxAAmkE3O/rW5FL0yF+m5kMecT7F90pCr0AeF4oAgYrKWc47Qojc\r\n2beyaZS4VhPWokHss4570vjLSUJfjPjpSTndSl49ZvZYNqzpOpcSZRtSaud9\r\no9AQY+Ln4IEi1VVR2itxhuOwcMOsXJRsShf2Mmt6y9+Io+iy4tahCaHrc8Li\r\n5jLyDMbE4hhGCXCBu60Gz4JIoW5t0cZKiOXTgbDHZvGOFAvhSgNWnZGT6pld\r\ntOX/77I1MJM+LsCBCfHYYeW3OGh/pwGtBdiUcnCQwNCwWkxnekEXXGEttrxq\r\nFg4eZxhkIP43ZEvJsAad3RhKz3/B6yhQgt9ggAP9/K48u6wDgyYtz30uyW6E\r\nj0UVvZXSMBz5+8MMxEwI4hufEDT2DfmjZUKMK/DXLtk84VKyF3ORbg/NEhLO\r\nvBRjc7mia7wePF0HAcxHFS3u2tSLqgEer+bbPuHOPmltTa2i0GhrQfs4v12O\r\n+MMS/9z+CnQPAH7phW9xkhl+JXMLJAURTKK414ceU1ckR6Tqe8KAR5xshWM+\r\n7fdInrkqiqx1iT4w+Sm2c9wOubo1nSYXPbVB5UMN6M4zL2KVy38Hk8UJogQX\r\nfsMPg1tQPdCHAqDBwD2zPDIp9/eAvR77I+eHlvZGtZQynXwWFQngMLHtxSzq\r\nXa9mTYxI4iMHUw2+Pa+5zcxTLgbQcrG0N7s=\r\n=HK0v\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.2ef3d81_1652798678566_0.6937457803148157"},"_hasShrinkwrap":false},"4.0.0-dev.539c432":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.539c432","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.539c432","@ethereum-waffle/compiler":"4.0.0-dev.539c432","@ethereum-waffle/mock-contract":"4.0.0-dev.539c432","@ethereum-waffle/provider":"4.0.0-dev.539c432","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.539c432","_integrity":"sha512-sYxUzVKzfNvrO6BG3YWQliC7aG2iRvrLNWAQC1UwWFQfvViMLwIZB7o+7jUTt53RLQmEhaL91nANYSoQLGqk0Q==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.539c432.tgz","_from":"file:ethereum-waffle-4.0.0-dev.539c432.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-sYxUzVKzfNvrO6BG3YWQliC7aG2iRvrLNWAQC1UwWFQfvViMLwIZB7o+7jUTt53RLQmEhaL91nANYSoQLGqk0Q==","shasum":"a6e894b03031b408545252ae5c298d5d559ffbc4","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.539c432.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAlosLXCyKjQ0NeEyoci7W7t6V1gTDiGvlIicwZ/h5P1AiEAxjGEcMxrWG4EzD8Cae72+P2X7FcIHTjBrmfme8y2bQY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinvgIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpvjg/8DhDgBCuxV0sKGabk0RQgG3dE8A7xPFp3fpQGNRZy6ZkxBuAq\r\nQkd/RhQIhUdgLNcgXSfnYEu92EUG+6UhWIS9KcHRlM5YPqocGEuXSObxikL6\r\nLt0OKqzUu7tOlcb5OpsW/o+OYeuoFeVa6UtFqDHFekeKXaaXVMrZ5k5iPUh2\r\nKmbbXkce42K59yi5kyfYhh2J9H10W0r+bQ9vIva2LCmIx/tK7Yiy/HPBKPC/\r\nOqhnUUkuS009nnya1h4WzxnRwkDHmggbU/Wxb2GdQaQv30YO1HVvEtdKSci7\r\nXyByKg/mjjX8k73Dwr7+vXbfMVRu6XwGp2VWTM4KDfUzNi53jq6urW+mQBuV\r\n6r/S3OB5LoI6V606LXIwvVzv7CWR7+hh5+cEfZA+2URw7p0D5L1z5pEuUvIA\r\n0bn5Ap3c22O4KjXuGaN7J/HjZ1zO6RsFkRU7WO4rb8WbJ1prlrh2upYjNv1E\r\nN3sD8kTH2a5O7q4mltvltl9mtW14IUzEq8V9RPyGIL5+7qMK9zNAgYb1CVli\r\nTL8MqGiw/93toKhhlFDsXzWk6+oFMH4+Jah8ijADpMTpMpMVsQZD/WSVWJyY\r\nov467JtrEflgi+vGdktmr0SEj2VeJbOakboxWRHppoUDRpVXe5Og3qzXUiIZ\r\nI8sdiwxWdlJyXS+SxTpth3+FM97WJGcdcPE=\r\n=/1y9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.539c432_1654585352740_0.21512276137921593"},"_hasShrinkwrap":false},"4.0.0-dev.2fe3f15":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.2fe3f15","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.2fe3f15","@ethereum-waffle/compiler":"4.0.0-dev.2fe3f15","@ethereum-waffle/mock-contract":"4.0.0-dev.2fe3f15","@ethereum-waffle/provider":"4.0.0-dev.2fe3f15","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.2fe3f15","_integrity":"sha512-rx5Vo5ol6hqIPqmRq6o/ERk/tIFtHtHiyR9pvvbAuT8xG3XWjds7Nx2qpzYTzDdMqsl5IhVR+FmmByuk+e/IjQ==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.2fe3f15.tgz","_from":"file:ethereum-waffle-4.0.0-dev.2fe3f15.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-rx5Vo5ol6hqIPqmRq6o/ERk/tIFtHtHiyR9pvvbAuT8xG3XWjds7Nx2qpzYTzDdMqsl5IhVR+FmmByuk+e/IjQ==","shasum":"2ffc7403646347dce3a743cabfa60aef5b85e299","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.2fe3f15.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICuBWiw+mDhIe4oArAWPpNQ8isHz0QLXQSt8hwXL/mFdAiEA0NpnrtFw6JXt+LIlhVZTy0twFvL2sbIrvtvrcxVI1tk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinx5HACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrOQQ/+NGYlTSeMulq1Q5rnxPevp6kK91M85i2CEDfsJXeJAa38JP0v\r\n9DQYDHi/pul6jGJlerBC51Doq7O+tZQgo/t9lFUw0j3Wu/DDkRCp3tMcsvvw\r\nEBrfA5xgXfh8WrqkKX3Rumy6HiyuvA+/sT057NAbKMbZsQ6lnKjwGAWcx+x+\r\n884aa+dnfg76ZQT9dLoagYUz2GMn2Kgw+hNW7RO1qyMRQpVO/vzUSfHNDOCm\r\n5TZCpXbGCPds81fK6omIVWEWYtew9qUyrBQTN607YfZlEC+pFWWydcOgyEzP\r\n/ouGgdQQdjbQbvUj7F+T4XXk/nK6UBX0KRExqrmW4t0vN9goAQ8dHoxQfM5W\r\njkXyaXFUZKoM6qh59wbBe1T0CUDKmplJ6zZbXf1RXp7HRUDC5t270GQIROyZ\r\nG8B/dqgrafIAnPm4bAdu8ihoradfCHMGrDZvIENSTJZffsDTAcR617zRFLGO\r\nXA159Ag9D3DDbAHmA1X7/9om1rSb1HfHqNDDAiUX1jZ+feZfEKRBtxdkYJ5p\r\nfEgY+jnGtt39locUaaVRITXUVrFp/JMauu0ln9ifhQPBTL2MU+ihZ0JxbGpI\r\n9SViJUfMANruXnGlsof9lKJ4HIaxOqRqKgxis48/62Syn+lVFlOW4ACoOZM8\r\nOexibuPLSzHh0hWO39o2PQzfHOivm2G8mLU=\r\n=7iWc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.2fe3f15_1654595143244_0.08706385596456956"},"_hasShrinkwrap":false},"4.0.0-alpha.26":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.26","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.26","@ethereum-waffle/compiler":"4.0.0-alpha.21","@ethereum-waffle/mock-contract":"4.0.0-alpha.21","@ethereum-waffle/provider":"4.0.0-alpha.24","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-alpha.26","_integrity":"sha512-BBQcJSMZHYCi8mOKIM47twDfttcBewQ5XYHSmetFMUzJEC2Us5tiq0U1tIt/jzg2OolUuWYtKsGRl8Hl6GTLGw==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-alpha.26.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.26.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-BBQcJSMZHYCi8mOKIM47twDfttcBewQ5XYHSmetFMUzJEC2Us5tiq0U1tIt/jzg2OolUuWYtKsGRl8Hl6GTLGw==","shasum":"43af8fe5b0a2bf671fb6188e30324ff2d7094578","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.26.tgz","fileCount":20,"unpackedSize":32025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlaybnWvCtKYSIIsfzZZD6dkdbyx35JpQRSUXIXJmTNgIhAPuKnyTMyLKocVblo8IS/5fZaoksyX/w0ydvjqJ8BByR"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinyDGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr29xAAiVvRT4QatVtL1zgtnoMTTphIgRJ3PJGusEGik8oWI2mD4E8I\r\n6U9lGH3QJ3a4BR3FHO/0rvJXylqloxsiKjgmI1+K3xOeYSwZxes4/HrIY+mw\r\nng0bF2GPisBTqaI5S7HfLP2AzxyWtSiySe+L2dLPblCsvkmBSEyWk9KnB5nU\r\nCXECrQIY/u7WEpP5vj48Oo4YDGyy+sUUpnlBcA16b/dULAQh+WnYUeFygnXq\r\nC3DFZjKkIZlCqKFyN8/E0zH8/wRobIw8DMUPKb/STzRMe2b49q1BAlgeSmRa\r\nsm48ENYhXJkHfnD0BiM1U86RPc4YoFCwRcSiCSlcqvYi1/HRPqYqZwKRCML1\r\n4GWO/I7jS1kzNHmu8906cFG12dOHTU1yMVUllMtJcPf0hG5A7HawcoTi3zw0\r\n0+v/cLj3eX7ZJjqQKhpL6sLrHJfv/59KN68Use4lr7wKn4tTsRzq93A6cUI4\r\noUyAasmA3rdSqRcyvQtQWH8P1J8L1YymaILpjVtlWfbNJINyPlyROBYWKgYv\r\nP55mhBUGlvS4Y5oClNH92kf3VGte0c5SsH/8LIGMp5egCUH1uRH8pWagZn7O\r\na/IzsTrt+G/xGDXC8FjELU7YGnEsZLdPXRelyGeMTn5b69V4KhoFYISOPeuq\r\nN4Vp4re6aj+FHXsJBNxJ8uybLysAQ1oE9IA=\r\n=F4Ka\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.26_1654595782305_0.2507348256582653"},"_hasShrinkwrap":false},"4.0.0-dev.b2ee4d0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.b2ee4d0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.b2ee4d0","@ethereum-waffle/compiler":"4.0.0-dev.b2ee4d0","@ethereum-waffle/mock-contract":"4.0.0-dev.b2ee4d0","@ethereum-waffle/provider":"4.0.0-dev.b2ee4d0","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.b2ee4d0","_integrity":"sha512-1COFQisLdOcZyAnhyjl8NoEyvJYL/GC2sI9rrQLSSeNMaHqlTWChuU5fJu+mf+JusUseSWX5sFHZ6RoKI/2Chg==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.b2ee4d0.tgz","_from":"file:ethereum-waffle-4.0.0-dev.b2ee4d0.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-1COFQisLdOcZyAnhyjl8NoEyvJYL/GC2sI9rrQLSSeNMaHqlTWChuU5fJu+mf+JusUseSWX5sFHZ6RoKI/2Chg==","shasum":"45859be85409e4bb6f3b01c2e5c6cd720d0b91c5","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.b2ee4d0.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYN97peK5vaNXTSXMlRzMtClIiK/eUCTXtkKYxgCohpQIhAOz7rgK1vNAPP+F884jqbqoUzDqnnGMFencK/Y/9Mzcn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinyFXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqTgA/+NlaZGkHzrDKCZrbgDmH5ocooK6GN/FHYXCeGYmzuL+8SNhS2\r\ngTLf1w7KT9gFVhFStvydBRlNYbP66UEHPEKQdSYvLL9HHeuD5WGiQIY2P+nK\r\n9mYb9baOhiCebjFoDV+BN92GBsHXFcO6abXQUQuOunN2nsizMuDnJEP8i8E5\r\n1q2iSCbLnZBChmFLzldbEdiKLsxfyBYPvUPR7fQQSCjNZX4rurWgSknUKdsf\r\n4dtdDx2qWJxlOu+vFJ+mw7WsjO2m2Q/lOGUhPlGDSGtgJRQxeVgkegP+0kvZ\r\npzNESIQKYIWp2jCxrib+0DCPb5QxjijPf0sJ9IsQlrMRNxagAbbE5FL8A/wM\r\nTAEePKcdbQ/DDUti/TA91gD+etNlOj4H3LhDccUTJBJU3r2Jva46tSgSR2LX\r\nLpBIwaY8xRm3eGs5L3GP58ltSKJ0eQMKvhDYljzlVL8/bPZ10ivD/AqPbzjI\r\naH3TW5WuO4wY9JzXUr6JSOl8ekL1bMz49y1Q30rhO6ERqHoMrAcJZHRmPM5v\r\n2w2wScgrfobHNmOr7jN2fTHisw42yvut1bsP1JzOHlwwB57QYTnqEfPbYfh1\r\nIJfCqVAsokqvd8Fzg6pdqvKXsM4aVVQIQaemsxna1JE3xsLDf9/VzjPjmAsN\r\nilHgeQOaXz2+xu1CXH2LnJbg/sXQgHodWuY=\r\n=V/iQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.b2ee4d0_1654595926963_0.8124719162155178"},"_hasShrinkwrap":false},"4.0.0-dev.4fd670d":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.4fd670d","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.4fd670d","@ethereum-waffle/compiler":"4.0.0-dev.4fd670d","@ethereum-waffle/mock-contract":"4.0.0-dev.4fd670d","@ethereum-waffle/provider":"4.0.0-dev.4fd670d","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.4fd670d","_integrity":"sha512-m3SEJ7tPoBnnVu+VpuRv5MdpToalyhpxIVN+2ZLwzreOgALCxMJpMsKl6aCw7ac+p3ZlmaXVyqU0ffvzLYlOvQ==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.4fd670d.tgz","_from":"file:ethereum-waffle-4.0.0-dev.4fd670d.tgz","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-m3SEJ7tPoBnnVu+VpuRv5MdpToalyhpxIVN+2ZLwzreOgALCxMJpMsKl6aCw7ac+p3ZlmaXVyqU0ffvzLYlOvQ==","shasum":"48780a4d31df8fbd73bbb7f27a3ca34aa13dbaf2","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.4fd670d.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5h3pz1amqJZfjEKWxzMixgxJqYqyVp6TNzW65AOOWswIgC81ZEYhws+ERwkPq+0gZD0ABWStezfKSx5e6KjarksY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinzYUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqkog//VFvFFxfpj6g6jc8iGbhC0XVs5WXG3Z+NaVNNEGQm4YnxadZv\r\nU+omJ6kvrpo8qCzu/yL+F7SFkzNzAbeYk4EWcFpFtnlH0CmyNwcbzk/aF85G\r\nk5RQRmP3jWzlm3ukDCrdGyZjcO4G4OXFJhLK2SUH+uzgYS/Olig6YGAdGGIi\r\n2NKwcNBxH+AySANircPsCJUpvZD7sgG4MpWLQcVLTMtaFxaiXFIcd8wQdWeL\r\ngn9F6YJBcVfdi1aINEtMzPoN7LnVnS+CYaDx2ZqcUlDOUrsZ2zgHUxdSAQon\r\nf9O3rVU3Sg+ieGpu1C0bx5REB+dDdQQArtkrMHJy++HV1ij5YmY5cOMCi/Cy\r\n7K2n0rAOBcwmfuAoxZHhp0PZBncSCXh7waVARG+YiKtvmjrJiE9v8Gfr3w+o\r\nzA5ThycBfa7Ib1c4AngK2TiTTkEm5Y3TQhtbN89nfYfdiI0+MUxHVudeKUXV\r\n2RaWpY4RHLi3FGY9QhonhKLmEF14p6g6Z087na7i4O/X+koUo4kKzgx67IpP\r\nfOQIMmtz3ekHqDxsqeQgOmJz3Pk12aTMR6oa3VaIleSwuSEtV+uUoUj3ppLC\r\nO+EizLrrVoMaEL+lGHsYPcwyXgwcyFjTUQEoPtjoIEEy17gi7lzRXRbOIDpT\r\nkekqr51B/xT07r5LN8XB+hBS439torDi9bA=\r\n=UT8q\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.4fd670d_1654601236602_0.11436441802261199"},"_hasShrinkwrap":false},"4.0.0-dev.0f1b253":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.0f1b253","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.0f1b253","@ethereum-waffle/compiler":"4.0.0-dev.0f1b253","@ethereum-waffle/mock-contract":"4.0.0-dev.0f1b253","@ethereum-waffle/provider":"4.0.0-dev.0f1b253","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","_id":"ethereum-waffle@4.0.0-dev.0f1b253","_integrity":"sha512-1MQgkYHBHpdiUHMC/nkr7Anbv6mlUuX7yuGv0reCphbVq1ARMk0Gkdi26eJpxPIGp3+wAMl+mVlYa6Mg/ydOzQ==","_resolved":"/home/runner/work/Waffle/Waffle/waffle-cli/ethereum-waffle-4.0.0-dev.0f1b253.tgz","_from":"file:ethereum-waffle-4.0.0-dev.0f1b253.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-1MQgkYHBHpdiUHMC/nkr7Anbv6mlUuX7yuGv0reCphbVq1ARMk0Gkdi26eJpxPIGp3+wAMl+mVlYa6Mg/ydOzQ==","shasum":"3df9e251dd03253dac07cde30b7c8dd8c2d97f22","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.0f1b253.tgz","fileCount":20,"unpackedSize":32038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9CoOCFhA3QmZ2rXL5li1ZCW0jSOlc7XRkbLeEznuAOQIhAMf63ebZZoM+XlOFcmDIOwPxK31J25HHmOwQt4Tk8lY4"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinzjqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrhPw//ZCKteICa/xdXh6Echd3LTM+7lZWjLAJvmPgCYdoFbqUH/3PH\r\nForjmvGS9/xv2TwgHeDWduUDF28JR4oAuQlto0KmWn1na02y7lKYHe7zNFqQ\r\nMBz24DPOmciGzLEVpI+qNf8cPvdi3XGQmVa8oYq/oPd/ExARcWC16QwzJT1x\r\nooTifzqq59Qgg1w5rTXRqolNMigB1vUQ0iBSpzw50plHlOxzz3xEnwtX/iZU\r\nvpWS2CzvyqCrGUCKBWxqaHxYgMj96cXX0PbFc2jfUxL5px+aFmynmG/Zzy6L\r\n0Ui9S2wZwj5GEd1TTuMo1n5oNQHvTRxnfCXNYYTiSucGbJtWeDv/McfAVJkH\r\no831qvIF0KYX38ELps6vv9/BhbOle5gZ0SKR1JVp2gRjwHuE/fyrB/tah71K\r\nuO3y4KwQJLxTffmT7OtQBKOs2QqBUlRn2uCHLc4RH9pPR/U90HQEGhyX1T4H\r\nMkGIftqeuSjdvCwjdiyA3ZJS+ckjmS281X0O0xiPNmPwl8XRzbiCgtg1taK9\r\n3XHPB8zOtzhlJEXA28ANDQUwizS6Sy57HRq1/yxOWby05QMgw95FAuS0+HSv\r\nXzao/NVKYPlQJ2QqjSf7aVv1O5y4RJfSbNBj6j/fn6tYKOHYvlRZEqeruJmS\r\nNVONuwY26hOjHuBDJwbtd1E6Y2SwtSTCR40=\r\n=Oi5G\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.0f1b253_1654601962622_0.03672947398627646"},"_hasShrinkwrap":false},"4.0.0-dev.b21809a":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.b21809a","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.b21809a","@ethereum-waffle/compiler":"4.0.0-dev.b21809a","@ethereum-waffle/mock-contract":"4.0.0-dev.b21809a","@ethereum-waffle/provider":"4.0.0-dev.b21809a","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.b21809a","_integrity":"sha512-1/pJRTHBGSQ1Z3A4mafb9Y0PGuSfbiBCejg4aqal4oKXSIhfOK5aQjuul0t1r4SFmjh9VphtgWthIcUUqxd/XQ==","_resolved":"/tmp/fbcecfe0b3e1daf64106cfc2733f7cf7/ethereum-waffle-4.0.0-dev.b21809a.tgz","_from":"file:ethereum-waffle-4.0.0-dev.b21809a.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-1/pJRTHBGSQ1Z3A4mafb9Y0PGuSfbiBCejg4aqal4oKXSIhfOK5aQjuul0t1r4SFmjh9VphtgWthIcUUqxd/XQ==","shasum":"d79c3e96ce965f1883d77c820d5d3dc66bdd132b","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.b21809a.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaSKwAaPcCwtzyz0z9peHUSkJqwq/vykVAQ92TRAaZnwIgXOwHyRDvQ9gD+KGF8ka0nUWjchwX/qDZFmX110E1p0g="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioMUFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp20g//QbYkhmoJNkegr2GIDezFuNraTMxLnpco4P4F/3WNn3VoRinu\r\nzm2nT6nNeNQ3kjCKQFLGIjxW/GA+k/UvrSVcv/n2/3fdVy/xwG6fLWU/jAXo\r\nURcB5FAGUBZJM3tnpbAnoMJUCLKjV++ThpdfS7SOYvWLlws8/CmSfP6F6iqQ\r\nO5HJW40Iz6efcyw2ePJNPBuYL+DuqsRwEy+OazE1bjF8xMZAyEMOZfkaKEzM\r\nqQdRhhggo2kfgK/oOhqCmz4LoLVEiYWjqQYBK4rhDxO5zeFIZviBvWpTrOMK\r\nrZGeVGdbKsWMeK+5ht5/abysuMeOl1Se6RRV6biEF8QalV+hKOTIwGQFxogG\r\n6zzy26jWjwoVcP7YU/HpMxZhrrdpslc3stxQr77aQGdmNlBVacJY30/MpCsG\r\n8gDoEFBH0h7l1fl2Hc7+waVgARq+ln5Y9hG43/HZ0fbUcmXBWdZtHKjYvzXI\r\nAHw7z94uNLJ+JgaTvl5iXSbN27HoN6SPvy0fAJ5TlZetZMP44BLZGJRQ1jvD\r\n4Fi79CaV9AKohKr+7Sq610bGm1veLDAUIMa9VbaA7X7IZaHY0GeR3ywA0Gnr\r\nmIwXDaziMH/SY8Jx7D+lgl+T/gFLHcK793LaNqquo0yul+ec8zVOlhYmNS8e\r\n43UCw51ljVkVbhjLsH9oj5xqC8OEAd2rBEI=\r\n=sGmy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"account@ethworks.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"account@ethworks.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.b21809a_1654703365506_0.6234374682776447"},"_hasShrinkwrap":false},"4.0.0-dev.1c384e6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.1c384e6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.1c384e6","@ethereum-waffle/compiler":"4.0.0-dev.1c384e6","@ethereum-waffle/mock-contract":"4.0.0-dev.1c384e6","@ethereum-waffle/provider":"4.0.0-dev.1c384e6","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.1c384e6","_integrity":"sha512-739Zr0G1JLtIM3FLz4bvRPLDohOSlR0v2ytnKukGqDI+I0h9d5vQ833bn5FLUE4kR7CNG8TVhaBytWwUqRpncA==","_resolved":"/tmp/768af0afc657c930334530a4ca773131/ethereum-waffle-4.0.0-dev.1c384e6.tgz","_from":"file:ethereum-waffle-4.0.0-dev.1c384e6.tgz","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-739Zr0G1JLtIM3FLz4bvRPLDohOSlR0v2ytnKukGqDI+I0h9d5vQ833bn5FLUE4kR7CNG8TVhaBytWwUqRpncA==","shasum":"f21f8b70cde0a4459675db0406cfdc661d473576","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.1c384e6.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCp/qWZjOmWqIRIV9xet5X1l2gB8awTjGR8ECMLyPHTMAIgZuGa9mkfFCjzIwMrLFZzKR5nQyFhmfox23F/tUhDZ7E="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqcM5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqbCg//R2IhsRIhcK/IXuUAfjFXN4ElijnBdso0ncatXnhz2oW6LySb\r\nE5sovqPEwGgy3/x7mGJqKnZZZVXqe1bKNor1t3nqzucxr1pFVNjpdTOG+lKb\r\nPVEEJ5WDQyPFDbfOIlc/QzAFmRTAWngVSvlu1BK56Sg8jR/UPUvFkCjvfQ6Y\r\nij+DKuymphKJ2yG7WoNjFg03+/QTXG2iA7V+BOCqarmJEXY230GWDCiNZZs9\r\n1/OxY5LB8GmLtrSgyefgqYu9pBy8c0eY67qYlcs2t9grxygNI8n42rEliwZx\r\nbHouGYdsi/rEJvNRK6L5jYE5C+NH7sJE574Cvpu1EP0mBWqqTChZGwCp6P6C\r\neSUOehMD+KYb9Kb8sbhoEW+bxoSHnzngxIQ+6VLpq9mbSsGr8uSwoQhGTyEi\r\n3eQr0A2/JhbCFB1i2qvD2b4VSPo40RKtPNS4X5bzqtTNnrx83NKgqKG+zlkL\r\nQVx13OG/AI0i3n+xRa9bEhrNDCexsE+MRafcyvPeh3GOOJnpvIKt6WgjPP0N\r\ng6gV3nA2+gv2OKnoqcnJwp6T1EhI5FH3TaRfdm87HcYULH36xnLv9OaQvcfj\r\nt4yzHnBVWp3WwhbMOIz8nocHfTIAu2iUfpd5aHeusOrWmu73iHy3ggVKrSWy\r\nk6udt49IPLnTGGCEGeXWQHphyT79/JDtm4E=\r\n=Qb7g\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.1c384e6_1655292729128_0.17330865413787278"},"_hasShrinkwrap":false},"4.0.0-dev.d8521e6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.d8521e6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.d8521e6","@ethereum-waffle/compiler":"4.0.0-dev.d8521e6","@ethereum-waffle/mock-contract":"4.0.0-dev.d8521e6","@ethereum-waffle/provider":"4.0.0-dev.d8521e6","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.d8521e6","_integrity":"sha512-RPCfT27QBTWEB1xjeQC7+vmEogSP6OLqRQO/rwr5tHpJkMAVhwReMvsthiu4PVQDBpYZwOUZV3QJZA7RYJc7qQ==","_resolved":"/tmp/533a126780f73c0f9c711051d7eac969/ethereum-waffle-4.0.0-dev.d8521e6.tgz","_from":"file:ethereum-waffle-4.0.0-dev.d8521e6.tgz","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-RPCfT27QBTWEB1xjeQC7+vmEogSP6OLqRQO/rwr5tHpJkMAVhwReMvsthiu4PVQDBpYZwOUZV3QJZA7RYJc7qQ==","shasum":"3dac07c4348882225b5290e86f8026010dae019a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.d8521e6.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6fE7EIyvl/NtTzqwP4Nn/KF5di4l/7udgsvsWNhkr7AIgfKowtvmTZOkpB2PDZ1U6rs0ZEYekMfC0+QTOKvxtqlQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJivZBIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpi6RAAlffX5aItNdVUZb6ZKK9rVf2WNDj/yPiidrzPGRmraiEJmbU6\r\nOrTTPJowocT2m6fGo6HyLEKQeHtmOdHfOmdPxROEVlZNmURmBx+6jAl8HzYC\r\nn5/42enTSmKqEIvTWnlW2caU7S2oP3XahFhZaPjkkmHof1h/TwhejOfv6wGi\r\nLxxTjUcDnYq12GJAZtAW4Rz7u+Ef88uB6weeoToZaMjrpbz9fPcq4RXmVTMR\r\nun3tTfNdaqNTgj5NOr+dCKlDyh1n/XaZ8JIx6xTXpbXbMaqkw9uzjvgqNzHd\r\nFSfQ8FPYY++hSbsJH49ELfcBWL1zLU5PY4CvZqHed3jm5SiGhENs5yfAOwEf\r\n7vr/EMWzxYACtXP/AlXm9Q2KwDrnSoSTUOj/d7lmkFkJJxJHzyc95pVGneGc\r\nc7RaXlsqFclOaPC5drQwsMDHnsUwXFoj8/Sm0aIKbozOIp1cXllj9U/ULe8a\r\nsN0nXAF9X+GKUGOOIxeDOMaViy0AGfnR/Fj9WdSIlq3eTVmHGckGSiAUn0m2\r\n5JupR26B1ptnZxzsLHv4Wl02qQ7r/y7F3kTnY/PVZyi7bMYEyqhPJjMdfhwj\r\n1qXWwVjGS/YKF/az7QkYFSWsIbM4E7M1jzkSBRWrj3JVJvgGoZR6JA5ybmQt\r\nZbZpfLtwjv2+c1Y2+VyoIbh8GpbI6xo7sXc=\r\n=q7Zd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.d8521e6_1656590408143_0.24596260650052204"},"_hasShrinkwrap":false},"4.0.0-dev.4867133":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.4867133","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.4867133","@ethereum-waffle/compiler":"4.0.0-dev.4867133","@ethereum-waffle/mock-contract":"4.0.0-dev.4867133","@ethereum-waffle/provider":"4.0.0-dev.4867133","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.4867133","_integrity":"sha512-wFNkd6iDpxIXau7YjGwjZseIzQhJWl1z3E3EXSVzWcCE1FLS95M+SuSQFA81jvs7gHhreX4eKVl4HwzAWI6yyw==","_resolved":"/tmp/09a9abc79c6b7cc62ec850e2bb3af34a/ethereum-waffle-4.0.0-dev.4867133.tgz","_from":"file:ethereum-waffle-4.0.0-dev.4867133.tgz","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-wFNkd6iDpxIXau7YjGwjZseIzQhJWl1z3E3EXSVzWcCE1FLS95M+SuSQFA81jvs7gHhreX4eKVl4HwzAWI6yyw==","shasum":"ea3bd008b77abfe9036f202584cf5c0c9d33323d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.4867133.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEEDJlMdCmDiOCELjBIucu2ZgLfMCz8D/unW5ZqwC2FuAiEAyvj60AklgQXbSVhs8vFcp+Ryp1KXROHar0cLjMcVAUQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixuItACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoIQ/+JjGerq4pINGgFeXu7s98CYjjcnV7JPX/tAEbex2HSEHTMnrJ\r\n4/cjWRrZKtwxOYswRdrUkz9R/zNGHbecQD8THoDgpq5Gs61OFfpyfOcwG3s6\r\nQ3/Pbj7vmQRgeGt2kgwaFPazk1vkPl9pEv0Fe5IfX8wu0HgVARo/FxDXZbz4\r\nJFXVBnQ0NXlzhqFlOwwCCRnEpABAZEa6btUEslSQ2LZBYY9UVwQSGA+CvJ5B\r\nLIfWcbVhm5DZ3VKYrjOQ/gelspZu+geLXB8DFAgN3UZSzEkloLeDDqcBGQpf\r\nCE5QzI5HOulfbbrkJmyy8ri5xdKxtyt/4yyTnng21ZddGzzd64Ybw1noAWm0\r\nn3idGPs9w+lyzS/HKU0VAFswH/ph5/1sIwTQJfSL303RvIOlITWRNbS/+4Oo\r\nG54tLjR3+Y4J516ggme/kWlF+sXT/NYHL7qEdLHrlReMyt6tU3vF476Hk+Kh\r\nEUBz/Zu88GEKuEvw28wlGdZCdqkj8lG8l3CUwuqyKmH9A/JXFVXRdZly46wK\r\nkQ1/XIcXOcOkCS2c0T3sWK4zY+WNqeTATjW1LbEKLBhSQqmEcioKFPNj5eg0\r\nRTEGbOWRimEesGN+4WUKZ5mccigKWZ7UUrsLrAUfn0xrghIUVMHXMIF41Qjk\r\ntWNOsEkTm/r0eb0SRdK/PMxLZ3gXpuCFBrM=\r\n=+LHp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.4867133_1657201197597_0.5476825544405843"},"_hasShrinkwrap":false},"4.0.0-dev.838cf4d":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.838cf4d","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.838cf4d","@ethereum-waffle/compiler":"4.0.0-dev.838cf4d","@ethereum-waffle/mock-contract":"4.0.0-dev.838cf4d","@ethereum-waffle/provider":"4.0.0-dev.838cf4d","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.838cf4d","_integrity":"sha512-QMRaFJDtghzv8TasskobYvQjav344EF5fMoYS564Viiz0UksJP3EmIYDXb6HNKdCtNyG8LAuftxhQjnEtn2YWw==","_resolved":"/tmp/19b65c951f393ebd20a74f4baa41d8c1/ethereum-waffle-4.0.0-dev.838cf4d.tgz","_from":"file:ethereum-waffle-4.0.0-dev.838cf4d.tgz","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-QMRaFJDtghzv8TasskobYvQjav344EF5fMoYS564Viiz0UksJP3EmIYDXb6HNKdCtNyG8LAuftxhQjnEtn2YWw==","shasum":"1bcb50a5cb2da2d2c62be81fc285b9d08a9cb88f","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.838cf4d.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBg5ErVSw4ypXtGMKf/JmtwK2A1CbLEcPvPlUsMzoD5VAiBBB6R7y9diBPzHzQw9Ogv1tb7u08XvD25bJy93HC4fcA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiyAF5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2vA/+LD2pPEqssy+bK7Ez5dXLqhyqEy6xzED1QcYlWuBOQPQlPCOy\r\nCmLf3/Kl9dj4SwF/QVTfrXSPfr0R9PDnI7+/OWV7pQKLV/AOBt4OacRjXXYq\r\nEc8Ms/tvIRqUz3pWWPK0hl/NZASCvYADrXolbjGyG94ldIkkRcphP9zsFA4/\r\ntrmI+jcoNuwh6V53rSMgwvjzKCBXTQUmslK9g3ObFnlo6IIcYeDKbtAVzhCm\r\n3hIet5PaZrlNEbqaPzHLkLEs+WynETjZ7bOsk2CtGhssjKBv9b2hvtICsP2J\r\nIEGK0QgCgmB24lpmRf4W8mIx8EWSXDDKb++UQ75Ry4uwneLa+6g0f45Wt8Rb\r\nQMCjO+5qOxF7TcT6HORiFEOdpS6yZ9xYAptxSL37hwxFWL+g7m8lx9GZGwHL\r\nc9cDL0vjGeNq3Y4yAPB38QuvDZbSurdeHcDjxjpP7E2PriHJnHL/tEKK6K0O\r\nvhXJMVXsmiiyjLVz92A1X4OUdFMXXP91NhGwGck+JRiDrwXle6a9K2HNY2ff\r\nAluLBtwXR7n6ZElBfV+pm6YRp/ln1F9NXKW99iYoBpsJZPm10Mn62xCVyyGY\r\nwvjiAavPIpt7XLn7U1QUT69Nj7vZpigA+k4Ya/HDHjeufitxA6DFQQz9cfEV\r\n0in5tRLUAsRkGtvx474IzELRhLipJtfgFqE=\r\n=Frrs\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.838cf4d_1657274745444_0.191470156472892"},"_hasShrinkwrap":false},"4.0.0-dev.06401c4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.06401c4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.06401c4","@ethereum-waffle/compiler":"4.0.0-dev.06401c4","@ethereum-waffle/mock-contract":"4.0.0-dev.06401c4","@ethereum-waffle/provider":"4.0.0-dev.06401c4","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.06401c4","_integrity":"sha512-VNNk7nbO6g1Se7hLXMl6YpnHvolDkt/x0t0RsoX8jSIUy0nfVocWNR7KheCmTToG67bzLZiC5lySUbOiumCqOg==","_resolved":"/tmp/f354ad29606f6fa2d58eceb37647f9b9/ethereum-waffle-4.0.0-dev.06401c4.tgz","_from":"file:ethereum-waffle-4.0.0-dev.06401c4.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-VNNk7nbO6g1Se7hLXMl6YpnHvolDkt/x0t0RsoX8jSIUy0nfVocWNR7KheCmTToG67bzLZiC5lySUbOiumCqOg==","shasum":"161de40399ddaa11da42ada180695c20a5f8adb7","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.06401c4.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtxNIkzddBs5uiwKWLGx8kZLXU/t/PpFFLuMuy8Iiu8gIgUPwd9jD3LephPjNyaUPQha8uW4ijlF0lDYf/jLroI9s="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizYC8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpMtxAAk6GzdWIlnNPvOR7G5vIYAjh2ek4mn4mt7hzmi5iAwxwA5SZX\r\n0//8nMGYliNJ1NWTX94xYEud95LI4ktMMwdE6DO9oH1V8tb0DTKxrjEx4PFt\r\nY4ksJ/DiLiRv6YTwrijo7tlLpJzrOlnR6so0rGC6jabXCQF3Dyt/tHJSBxS+\r\nzcOR3ZvDL/O7E1LBAR2inhl0PB1cc0jbyfxRmAl8wv0AmwZM6vNuAZmVLP87\r\nIplwxta7QqTAs4Vuf7Dcd7OZgjA9g8zCMtwS3s3pv0hqj4zBGJZ1fLdD/Pi7\r\nsz94NPu+DJm7hcpx9t1VdoysjuCS331sTn4xzI0cRzCXsdzfmvIAr8rlPEpU\r\ncLbTZfQUiUCnL8/es1DcY/Lpm8aoB2aZZBpFXIlUA7AkGBG63zDSC+Ofz1rk\r\nLfQA8+RaQYAqNQKqKvzxCvRNA+gh4t/qwWXyGMiUsIOoxUjU3+KE+MirtlkR\r\nMZ5uiJg8oYIzKzj+z3Xau5Tdhjuxh8mPYe1WC6z6TSclCIkJQ7h1ugSUZd+u\r\n9B1kL7AvLTC6xIluH537MG5DF1HWaApNWvcp5/UqNoC4O9zwdYNv54RoniFi\r\niyQ0xuI3sUiQOAvjAmwnEXlkd8/hVmEL6lK5/F9pNAhHCsX7Yf/228HWYYf7\r\nCpg2NIVnBbQ8fXNHlbsffQCInX1d82nIm5c=\r\n=NvMS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.06401c4_1657635004326_0.8893617908037443"},"_hasShrinkwrap":false},"4.0.0-dev.79d1c7b":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.79d1c7b","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.79d1c7b","@ethereum-waffle/compiler":"4.0.0-dev.79d1c7b","@ethereum-waffle/mock-contract":"4.0.0-dev.79d1c7b","@ethereum-waffle/provider":"4.0.0-dev.79d1c7b","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.79d1c7b","_integrity":"sha512-q29GXAaLO52VXFU6LcZevmz3ggr6KpgaOEa9xEkledfOmoez/FrSSh8VNtJxnv8CXvAgW4YNq+G6PC2UBzw2lw==","_resolved":"/tmp/37e1f9d802f562a82e543c4f47517b63/ethereum-waffle-4.0.0-dev.79d1c7b.tgz","_from":"file:ethereum-waffle-4.0.0-dev.79d1c7b.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-q29GXAaLO52VXFU6LcZevmz3ggr6KpgaOEa9xEkledfOmoez/FrSSh8VNtJxnv8CXvAgW4YNq+G6PC2UBzw2lw==","shasum":"bfe722fb4f797772df1d7d63de5c61cfc86a048a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.79d1c7b.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClY6ksVhefJP++4eGL4NjsDmcAj0aBNv7Km49lI+oLmwIgIBIKVZpndEuaA2uNTUQqkz0XC5QgC7mERnkIskboWLw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiztRIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/CBAAms0uSM3MXyzS4c33sWtZIFxlSiuDH/IlP20jwxvAm0Sit9bx\r\npfLnzWJy0HRj/aX2rsQFPkzxdkV5+/q5kQXXmSE0hw+htGDK3Eqm9Nd19VCZ\r\ntOuM1WwQ/TW7Nd1qQzHVcQK+q/CC449vhu6ZI4TUo+2nkqCnsRGGeLai38CX\r\nj8C2VumyutYaAAnzXQgtB5fCrt0wHkZPTKSKwFq2hYokr4fNuklXfhlCg3fa\r\nNJRGrRPA3zn9gRta7mJ40rBSUAo5Myr0g00AYGpKXyrbUiDTe9Gy/XVoqjnM\r\nhmo4GFappexNuQGOA6fYod1FtXfRwVyCuuNdMocoTOLGK9n//w3Q2I7Sx7YF\r\n3lJKdR0nAqr5hIoBB4X5VtH5kKgSeo14Yjt1h1G1PpvlBWGJcoSBLP8fbXHx\r\n/Sy+p+MZz0I/DwOlGLf+/UZB/LU9U9AM/gbrb7/M4y+CFcLYGOvtstqbCh39\r\nQGUC2mnxetv3Q16RFZ3xw/3TAnM/x5Mg+XBmc0CapmZh15t5teASWiUCjhml\r\n126MHvZiyYeVHScbqvPqVcMt7sF2sqyK9XZpuspSIyuVMA7BAtA45ji7FFgG\r\n7unSOqCuizhhmxkLOo80T5x7LwjetdXHmzN4GoW/nA+Qj/jAnj9IT7tnpsV3\r\nDUI0v6rsJO2bqfywsqnJnOvaxlDVKOzSmdE=\r\n=z63t\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.79d1c7b_1657721928051_0.0950608295715214"},"_hasShrinkwrap":false},"4.0.0-dev.5587e09":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.5587e09","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.5587e09","@ethereum-waffle/compiler":"4.0.0-dev.5587e09","@ethereum-waffle/mock-contract":"4.0.0-dev.5587e09","@ethereum-waffle/provider":"4.0.0-dev.5587e09","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.5587e09","_integrity":"sha512-HaN8IHq/WdoEVEFEL0zEl5bfaI15VT+Ta+ZKE+beRwIxfX3HZeGHCMaZWVEKgKGikhprIpGNcHjHBdLDO2NlCw==","_resolved":"/tmp/ec0ae2940c1cfcff9a6ee80196ad6a33/ethereum-waffle-4.0.0-dev.5587e09.tgz","_from":"file:ethereum-waffle-4.0.0-dev.5587e09.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-HaN8IHq/WdoEVEFEL0zEl5bfaI15VT+Ta+ZKE+beRwIxfX3HZeGHCMaZWVEKgKGikhprIpGNcHjHBdLDO2NlCw==","shasum":"782d5e8504b5301e56bfff4bde8f089bff79d82b","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.5587e09.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFBdcG26vjUmuBQHjSXmrGxPAjOL9JCy+6EziqZP8volAiEAkghcahX5YOJiSHcdK9p0Wc3vzwEbeOtv3os8T1CfwpY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1oJoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmphcRAAnaF82xtTP1U6hsGvJZH930qPUDl9q+A5Crm/qDkSXTXh6cNS\r\nTUrrUW91fg6GhjydFoZvtQHPc3KWE0MhjfuaD4GklyNCRNyYDb2EVVaLl/rV\r\nmetkYXN0N1UwO+TePgloSZNjxrA/BqgOgiuv4llqsFF7ERmU6gyKoBpJtwMC\r\nE3j+AaCq/jb0X5eVs21btfGxR7yN9ZQ4xCPHxnHX+ZrbAUZSS1/rKq5lmB0t\r\nrkJN5vS9avxz2tQ1RTOjRP35FzPWW8wXA39IvwZbQq/KfBfnPtVBDthYSnYa\r\n0XhjFA3kz3hnE/6FsCoCv0vjU4hJpo3d0fxdyQIDl3v39QeyRogpKE3T9ODC\r\nDbjEiTplp/gCFuW92eE/Gs8TkzlwMmOwM+pUtgOZeWoplTIRxKrWVJy1gCGq\r\nbn519EvY0A8Wf+C0lreB8/BJKJ7aRC/G5zYUBQhn9Qtq5Btsj5yuwvvdDu5R\r\nohi2qkUdHQu1BMMDpwntmAvlBRjIqcYBCGe+snUB499GZtXStpbKGfJA2lBS\r\nxsnJEd7ucs5YOMvBLc6eEljzvOLmCUv6Mpz47bp0Zemq9olXjgA/RBvAZQaU\r\nnPGBcbbHowPuH+qhnKeOQxF1nVIsTWX2V+Glz+NcFGC7mpTVNf9UEPK3EFsu\r\n9Uqz9kQe7WJUljQwbQCx5PuhEJHOGe2EwmQ=\r\n=p5Ie\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.5587e09_1658225256401_0.027583197049910968"},"_hasShrinkwrap":false},"4.0.0-alpha.27":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.27","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.27","@ethereum-waffle/compiler":"4.0.0-alpha.21","@ethereum-waffle/mock-contract":"4.0.0-alpha.21","@ethereum-waffle/provider":"4.0.0-alpha.25","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-alpha.27","_integrity":"sha512-4QeS4i8v1lBsF86AgWeLDqSXlArcqq6pfsfqV4rO2WfYIgSqw93C+av+Q16HBN286zDBI6bh6GjOkMVz6GnEQQ==","_resolved":"/tmp/91d2d86ab4e16009ab2e7e625b914223/ethereum-waffle-4.0.0-alpha.27.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.27.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-4QeS4i8v1lBsF86AgWeLDqSXlArcqq6pfsfqV4rO2WfYIgSqw93C+av+Q16HBN286zDBI6bh6GjOkMVz6GnEQQ==","shasum":"dbc97f2499806979ed6530f96fe96c97e95011d7","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.27.tgz","fileCount":20,"unpackedSize":24568,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYjEW7lrojC7/LWRX/df7fz2n6LQDUIyhNd4EgeSxgrAIgHS7Nm961XeXBIL1t8sf0zheBucium+Sl5EwWD1ae/m4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1oWpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmps1g//bX4EbqCMZbiBS+vZKa5goKy8WCnCLVpVwrz9ZwaFZqRBtFdZ\r\naOvw/Dmy2oZR0Q6uAXeKX0vR7TzdLdkQE3ENSzYQz6vSx8/XveeOXu+xDHzP\r\nneuxQ7rMPWl1Vo4A7v9hmPbHr/53liQAF1tpEA4bBnopCLvG6I7eV+qfyXWI\r\nVmxfeJCsvZZR73YpJBKop+3j7wIitcoaZeKOHhAIpKN3lihXsVCABJr68B1g\r\n788SMlCByP4sZTZw+It0bMEbxWUcu0+43/IeHOWiuw0nkVaP6jNiRD0PVbjM\r\nRSz8nzHDI4qTABlQlqQ9CXsxnNxlnlwwnfuJQgsZ+PiRQ9t+rKwujCY++cI9\r\nKinPdp73x7whq52KfAlBybrJtyLq+Hx0lU6gw5KfxOalHmJukCv2+LNeHkW7\r\nZDHP1mfvvIGuBzqHMDv9LI9T4whPvyzefhiLI5dxMRk0t3UlMgl5YnuDY7hF\r\nl0+C7Jw+Oglzr0wiaYqZ7yIvVqaUPbbQeEa2Dy5VRlOkTm0Qr2I6wFMeWunh\r\nRVqtIChvdiCv0rjedu704HrIhmTcCI4L1YwAX1zEdqTNAdA75AN0W2FN0zRY\r\n1UlkWE0/RNWRRnsMfWvFQxXpwyNbywEg/lGmuQs4MdLXotE5ImtZK40Jefx/\r\npaC9PeMBVPZRXgITVB0DHOCEwGpuVJnU0zk=\r\n=kk7b\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.27_1658226089174_0.16442571029316966"},"_hasShrinkwrap":false},"4.0.0-dev.5c29ca4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.5c29ca4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.5c29ca4","@ethereum-waffle/compiler":"4.0.0-dev.5c29ca4","@ethereum-waffle/mock-contract":"4.0.0-dev.5c29ca4","@ethereum-waffle/provider":"4.0.0-dev.5c29ca4","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.5c29ca4","_integrity":"sha512-QXL/zan6G8QvpcL8adoUmX5QfeSCqhZpyl4ZFsPd0VZI3UPF8P7boYU1CCDwg8yZZAG3s4OP0OIWQiSTMhgrig==","_resolved":"/tmp/bc0758d59ae011e46f87a149d55048f9/ethereum-waffle-4.0.0-dev.5c29ca4.tgz","_from":"file:ethereum-waffle-4.0.0-dev.5c29ca4.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-QXL/zan6G8QvpcL8adoUmX5QfeSCqhZpyl4ZFsPd0VZI3UPF8P7boYU1CCDwg8yZZAG3s4OP0OIWQiSTMhgrig==","shasum":"b6d48548e012fbd10835a23ac9c40e47fa3259c9","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.5c29ca4.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLO9F7illH8UQKq2NvFeUe78A7QX7zVqwxjkh4BRWTvgIhANxKgxF1ShfxVe/xgfk8ugRPxdupxdF8aY+FLSXDKd4y"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1oZKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZug/9EV9iRNgDViMdc9+fiPGpRtJL9+r/OmWCM9+sAmN5EyHuoEaH\r\nRfij6Pioc1ttuuG7XK9wM2wDXV1FdskEEKQSrPoXfU3ZNMZROc565OACrY3M\r\nBIDqQtunA65ZcOSruc/jRxz1wFP+FTXJvbT6rnvhuwK5KAu+j/RHqlkVJhyc\r\ncv8FNL0fYc3qbeoGShFsgkFasHOkysjo0JcqNAsGouKd5/PD2sbZJ8cmJ+y6\r\nDA25YbVXYk5e/dkwnP/CsfPFbGvXjgVZ4bN0AhKcydc/fxu81UHkHp59g0hX\r\nOZyG+QaRJTg16qVdiYEWVXdeHWWhJNwiGGVsYY3/VUaijt1O8GKPvaC5S8kW\r\nNePe6/SKilArxXygLn9J93GoK79fRnGIPxgo8VT5psP8M7NxwRaxSkj2Da88\r\nSF93smyvuXnGVMcxkPFUZ7gA3MWbZaYW84mArtuD8iai8hGvOgcQSrUxDoZl\r\nbn1/bcXIAPelHYHdqqxIDn0UWuWXcF5xpZ+iIPhAV78AMVFSAaKkAbi5DYfm\r\nMl3M0oU+5hkZz0MEYItxa8091PVQuGwUmujs8Q4S6FhRx+QfWz/O9isDhdWp\r\nMxvpxVxbNSm+XY7eYwR13GT07fHQ0O5HVTCQFH832WEvPH/o4L9+VXCGe3tr\r\n7BpqPExiwqr9sJidw4CMB2RW8iIyvmtOuYo=\r\n=LF1V\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.5c29ca4_1658226250356_0.24911989340202134"},"_hasShrinkwrap":false},"4.0.0-dev.4ce739d":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.4ce739d","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.4ce739d","@ethereum-waffle/compiler":"4.0.0-dev.4ce739d","@ethereum-waffle/mock-contract":"4.0.0-dev.4ce739d","@ethereum-waffle/provider":"4.0.0-dev.4ce739d","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.4ce739d","_integrity":"sha512-ykJCbym/OFchqFNtqEIJFclfudYF5zhqfizu02us03nJB2DPg620+WcMiRFW+dKwwcLrRudCpmbKzqIC905rNg==","_resolved":"/tmp/a49ef9c0cb5b9a69b59ea5e2a9e4277e/ethereum-waffle-4.0.0-dev.4ce739d.tgz","_from":"file:ethereum-waffle-4.0.0-dev.4ce739d.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-ykJCbym/OFchqFNtqEIJFclfudYF5zhqfizu02us03nJB2DPg620+WcMiRFW+dKwwcLrRudCpmbKzqIC905rNg==","shasum":"77d31b7b4c2ec49dc67a586ca790005a2ebfa06a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.4ce739d.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDXZNAAH5/hVT5rO6UoNtHJ8pqI/+3T2/u6A+9ghgF3XAiBUntIVw7eodn/pCC0r3OOvDxZszPQLyK7SzLTBI51z4g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2VKHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmobRg//ZfS+igudlnlL5xY6jJJLrojGgoVkkaauwayA36PNr8mFhsV3\r\ngDlRNNEQAE+d187ANDy3r21Pc77TTsnrGwsfeVCWlDT1CindrbyyNLpuf3iq\r\nkQDpdSYwPOPwSjjVrQLDXiHn4cjbIvpuMarcQCTef8HreIY0T3g3mN+mIrz/\r\njXtyPGgXx8/SuLstn3wI5GvOVMDqr//3UJv9HaYTKkzeqFwwJBdYZ9Yw7tK3\r\nlx1E0FdSNxZGrJhzQLYrlTs+ko2nmBIVH2BBrb9wvLOLr1LSjlq/LlopRhb8\r\nsyJEmpEcR9vrW1dwP4x0AKSnsa1+J93GNgWqTER/7Yw7QBTqg6DoXR/UrNEo\r\nAreQv5/tBV4N5cstX1C8+gqvOGO+Ho1SvxXV0Mh5VcypEXsp1YatdxXN3SWZ\r\nEL4SgakK8LzYDdn9QutfrOjYatVsjeM/1KAGruTwffn6XjgOZjN39o3tJtEx\r\nhywsl8h4zBL0Zclj+kpsrclG2q+3G5fbHETE5abA6FfqHMYQKhoXjfiDtb+E\r\nhTRQ02cz07UdjDeqKPv/efmG8QgrmmpQfOf2ZpahbCLCoqU1geEim8iWYU83\r\nJM4Wy//0up8HLg19eHqPD27Fsi1XZS91e74iPn9z+cp8nf8BIxNh/PvKFBpP\r\nNrF30HoE2v0rIIHLmf84nqL4u2jI2Pmgd8E=\r\n=Z4mr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.4ce739d_1658409607222_0.16982371507475547"},"_hasShrinkwrap":false},"4.0.0-dev.c98112a":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.c98112a","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.c98112a","@ethereum-waffle/compiler":"4.0.0-dev.c98112a","@ethereum-waffle/mock-contract":"4.0.0-dev.c98112a","@ethereum-waffle/provider":"4.0.0-dev.c98112a","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.c98112a","_integrity":"sha512-5d4+r0FNNQ/uHNFFZlk8DLckAlL7BPDoYRVYABb12/Tajiw9txlzGlowNmUFb4vY4g+/VS/zjNIIU5uyFdleJQ==","_resolved":"/tmp/9bc4f19b9ec3cadd1fea9dc69dda7e71/ethereum-waffle-4.0.0-dev.c98112a.tgz","_from":"file:ethereum-waffle-4.0.0-dev.c98112a.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-5d4+r0FNNQ/uHNFFZlk8DLckAlL7BPDoYRVYABb12/Tajiw9txlzGlowNmUFb4vY4g+/VS/zjNIIU5uyFdleJQ==","shasum":"79b7de49293b60bd375d12b72c9597ebfd4e9561","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.c98112a.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCve3vgguGTHGGxmAOBq1SgAE6inn2YdVQW/C/FBurqfAIhALxp6tnyQcarIePHUh7KWb7UURXLluGT98lxhMa+9Puu"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2WA3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq82g/8D9UKPykcLCbIzJ9i03MiQntsGZXfo9vaL8hIEtHEYSRaj4/Y\r\ndO6j5Fhwht/aFbj2CLRK2qnywcKJa6rhncSb90d9an+D2PJJ0r5E54pEmqb5\r\nBitWYK9RHOVYSgr3gcTXMuTMMWiYSfeHJwBQv2GjNY9zHftoJ0P/Jk50iqN8\r\nkVod/nO8XQYbtcIMwD5buWb7vTxQvGDXDMsUgCcyp242DDFG0ar3tHVYnMl1\r\nsr2d4XND1mLT2RV84lkyWp9bqMyDXKYHqLyNrbms5lErH6ygUltHDh3Y+6WG\r\nzs4y0wIt/1sTZptzkZ044H1sBxkMoaeETPj+wfHWJ9pYJYDF8e8B5z3Hl7ft\r\nzCWXxgLQuUf2YMKX1VOK/fDokBCKCe/IO/NNcZjXarxQG7D37Uzapc3t18yH\r\nQa/tGsF32PHHuXS1x6dCRN7zveplUQ/O0ayjpedMwUCo9DsYZoBtYPVR3wSS\r\nMAz2EgSI94I62OvvXw891rUoFv5nGLEDReekMTogU4p6F4vEWjc4/u6ASaD+\r\nBbbmXeQnyikH2cUDrI97gte5GVxea1xv7BbOzAC+FoAZJ2uEMSuggFC03xcM\r\nNa0bqyfFjy0lPoEDx2PqXpGba6qmmO1/vVHrwfZuK7E5voQK68p6cTZBcijW\r\n1u/5g022dT1AO2+Od8Zgb2mchjXV8exJlH0=\r\n=BReL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.c98112a_1658413110901_0.39189283533194175"},"_hasShrinkwrap":false},"4.0.0-alpha.28":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-alpha.28","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-alpha.28","@ethereum-waffle/compiler":"4.0.0-alpha.21","@ethereum-waffle/mock-contract":"4.0.0-alpha.21","@ethereum-waffle/provider":"4.0.0-alpha.25","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-alpha.28","_integrity":"sha512-H+O5Awz8XxEmnvC09c+NB9uQa8WCeYFUayzELmHB5EYUo5kewxZwdb4bvPe3n4/IeMimQtDwoLgCYAIwLSUmSw==","_resolved":"/tmp/7fc0cf89d4cc62b809bb0c5a94c7e93c/ethereum-waffle-4.0.0-alpha.28.tgz","_from":"file:ethereum-waffle-4.0.0-alpha.28.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-H+O5Awz8XxEmnvC09c+NB9uQa8WCeYFUayzELmHB5EYUo5kewxZwdb4bvPe3n4/IeMimQtDwoLgCYAIwLSUmSw==","shasum":"c3a04b3e130d2a62287b87d56718b7e9c9d151e5","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-alpha.28.tgz","fileCount":20,"unpackedSize":24568,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICPBX+4K7tNSMs9tK5TVcCQSCrBsm3TG6qsxLbROhm8eAiEAxcDyZ1g/aqu4kfNSLGKG5A61M8zNO/8JqnMPFx/deYc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2XfzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrc3A//YhM1Y3y5UFLVpC02m8QcDjL8BZRajf0QUYlR3lm5XRshuR76\r\nOkBANw704FHZZonrAvnZC3f0CkkWEbyCKqw9v5x5HimD9tc6CRVdz5Poav3A\r\n2eM7H92rRaexk0ZvLVp8MYUJQL/z5GMoKjTQ7QG74ie0ampL2CwVoCHJle9n\r\ncd7UVcpuYkz5xloZXsVrcYWQbGA800TV1lGtASyBjyXxHNHmADX3Pc+2DwNy\r\n8LhMINGMucA+g/DgkAB2yjijhbYJv6mS+DUa/XO5O0aNzDpCXt6/7T9x99Q+\r\ncWuO2ETgn1CtaKwXLHaPV08pp/zu5ycmoJDDsq1XDA1U33hhTj0kIXZ/86L8\r\nrh/zLepBXHOEaNapVLhzCmAuFPK9NdyviPoVcJerNpytPFtX7vFmYEzCJ52U\r\n48mGzsraBl/fhu6JbLyNZXDdnCCuWBdbkOqNmfw6NjXoZhzcz4kxxSt5Kbyg\r\ns1EQ0XGGnhM1mvFqE/JqUM78fq1ok2xa+Y55njBuDTUii8suuUJ/hvYdaA06\r\nLmqeLp2lICPXpbEuCe/MfQn3yeFgX+BHHpV+WYBQooDVWhkBI79q9eVRIMtD\r\nWm+XMsPCYBNiYJYNctGrfJtcWqEHRZlSmZGKksKfVAMDnZ2xBRfYN1WfDBCd\r\nx3tJsziQOlqJ2wzl7x/E1l7IkagwL5v7fEY=\r\n=mRD6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-alpha.28_1658419187169_0.5643884101115157"},"_hasShrinkwrap":false},"4.0.0-dev.b028d7f":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.0-dev.b028d7f","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.0-dev.b028d7f","@ethereum-waffle/compiler":"4.0.0-dev.b028d7f","@ethereum-waffle/mock-contract":"4.0.0-dev.b028d7f","@ethereum-waffle/provider":"4.0.0-dev.b028d7f","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.0-dev.b028d7f","_integrity":"sha512-B3sergPgtzDKwahByYnP5cXE8P92zJXJv2WXr0AsrZ8cLRCezojh7S9g9gWu7ZOiz5BD8c0uTvKxCbvwWC3igw==","_resolved":"/tmp/0d5ee70165de0f8aa62fc2756f9deba3/ethereum-waffle-4.0.0-dev.b028d7f.tgz","_from":"file:ethereum-waffle-4.0.0-dev.b028d7f.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-B3sergPgtzDKwahByYnP5cXE8P92zJXJv2WXr0AsrZ8cLRCezojh7S9g9gWu7ZOiz5BD8c0uTvKxCbvwWC3igw==","shasum":"dc284adabdc64f6d72a2626820695f0100b9e0d9","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.0-dev.b028d7f.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiTEtu/f2Ad94rG+eLFvtaz41iUxXmZbK/hhNQuBQO9wIhAKLsDKIEuZazfULe+xLZUE5//ANjuM0yrAwEU5yt0LGs"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2XiTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoDdA//etdkVL6aXsjZuD6oDLnP8Qu/xM2U9jzsIzOKMH8ST34S+jiM\r\n1ZGxQR1fxlPdKEr3FTDxKT/2gdAe9aG2U61CkJQcB0yh/rVKuAMtL447KCBP\r\npVFoV1q5zgSI10n7r903Go3xENSRcllFP+h5UuJ94enTEW0XZqCbz52SBA60\r\nWS7sBCWNWf8IweRIzkcPCWxBnPaO5xjqy8h0NSy7RHXnJiiVcZjr7gV6pEEn\r\nzViLuOZvpBIaPZzSTXpb4tKKO5GatPzpnUX700Q8Q2ZHd0HlHAI9ChXk7sRl\r\nsSGGpw/KmbFo7b2rLwolU24CgNZdhdwdgNV+FiyFjDg8TNQzT9j3B/qwrO96\r\nx4LEYr/c/5ibapSc3vKR6+o4AS60JLq9uvdYA3U515Gg/hom0t70v+lMCQw8\r\nTZ00a7iAkoP40N6DOg/X1gTu8n8UO4T98uoJYQOSNmZSQDhT3n/pTL3aUokk\r\n+EWTXviMWB3ZEsHQJtdcyI18OFuBQ/g8/GYEdFykz4AEjlcqc7ooQI4Enaqo\r\ntFZQO3bi+xOHWch/GhGI3zIc3iwWR73VeL70M5zqY/HTpW9xhbIGgdi/dD2x\r\nZ+r1bsNXhmg1F2FmQtuDIfmtMblLNnvywtGfy6f6D76Q2MrEoTc4haarU5vp\r\nwP5AgMdZlgoeis0GWnCWEhn3Jwf8CHkJvUA=\r\n=pqH2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.0-dev.b028d7f_1658419347523_0.30765001614584486"},"_hasShrinkwrap":false},"4.0.1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.1","@ethereum-waffle/compiler":"4.0.1","@ethereum-waffle/mock-contract":"4.0.1","@ethereum-waffle/provider":"4.0.1","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.1","_integrity":"sha512-V8DSEEUgPYqqQ/iJCDj1HwTlIbXPe06XHktqgftqnnF9EN4k6Z1q0ydkrdA0vRgu8ChFJBGPuYt+l0+1qXrCig==","_resolved":"/tmp/144145c91bd3ec7ea8a6beb8ed99fc86/ethereum-waffle-4.0.1.tgz","_from":"file:ethereum-waffle-4.0.1.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-V8DSEEUgPYqqQ/iJCDj1HwTlIbXPe06XHktqgftqnnF9EN4k6Z1q0ydkrdA0vRgu8ChFJBGPuYt+l0+1qXrCig==","shasum":"c33efa99976d4d65044bb1b2083f183c1b2e82f9","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.1.tgz","fileCount":20,"unpackedSize":24523,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBNri4wvySCaZYK5Y3QWEpvsmI3xKx/YdncPxH3/B6+IAiAbSoLqiRD4mxv5PNBZXQJiJ+s17ZBMjUdgT2JuNvI7WA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2m2uACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqhUg//VZ1teKcm4hGQMVQU1Zro1z1brTJTWX0Rjx+K6WYKBoIXngcI\r\nI5w7nnjdWm1IgVfzW+NuibUuyGMECCeHiH6FnqliyaHylMCrNS/KxpBxD60s\r\niwYUKy46SJDnzGIpufJunYPDGTVka/AbHOQTtbWECYIe2ydQOny++ONnI57T\r\nh7+F0QJXhmjqSpf1exCWS1pxQhyUVDoyRlv4bRjw9KWkAygDep31ygI/xN1F\r\nD540TTrh2NVZIp0ukR/5qJ4IglNBR7lD06x1v7zv/4vIaIsFnatiPfjRej5R\r\nwvRHk9tiC32Dr83/+5YdpDdx3Ikwy2Z56+PonNWTUhG+56Mb3P9aHJw+RshG\r\nU4X+14xwFXCy0AoONnRwxzp98XPbsWR4jZBsdumybs9hKxkR7LTFG2CAg6iM\r\njF2FnJX/h2xaZul7anRm75FHYuz4McdqrHlUugauG9h++/EfBfs49NWe9h4f\r\nD8VDU3OnRvvb7g/w9iiuiy6O5Ns3pmaFHm3pNt1jgCSRSKdeZJor7hCsEJiD\r\nVyQplSOhqeEAJvCrFsxu6oY0yc/w21zZ50yI9F3u5mSwBrMzd1AHar5xggyW\r\nPFF8oykwE1gDuRrSRd6WpPzTdckdqAv4T/dtAPuT3tRorwh8e96W1kJlRudP\r\n3W059ZCZVrJ1+MKvw2FE4OHirasCCoJiiZc=\r\n=6BIG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.1_1658482094257_0.9686686548591126"},"_hasShrinkwrap":false},"4.0.1-dev.37f589d":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.1-dev.37f589d","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.1-dev.37f589d","@ethereum-waffle/compiler":"4.0.1-dev.37f589d","@ethereum-waffle/mock-contract":"4.0.1-dev.37f589d","@ethereum-waffle/provider":"4.0.1-dev.37f589d","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.1-dev.37f589d","_integrity":"sha512-TWB0hFoV6GYhbKl0W2FdVfO9udIhZ4u+kegwBTWOK+jcpWn4VK+Ilj7LjFw2RV417iesK5O/JunQxCdIHa686Q==","_resolved":"/tmp/54638473593266bc6ddbdee88daea015/ethereum-waffle-4.0.1-dev.37f589d.tgz","_from":"file:ethereum-waffle-4.0.1-dev.37f589d.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-TWB0hFoV6GYhbKl0W2FdVfO9udIhZ4u+kegwBTWOK+jcpWn4VK+Ilj7LjFw2RV417iesK5O/JunQxCdIHa686Q==","shasum":"425b52a0059c6a9d2e42ff04c5435377b9e63dde","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.1-dev.37f589d.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDkKhYXT+RM4lU2+gQwNwNur4GojeeIp21rXxPUoJjuOAiEA4e/rPD2WoJDiSumEstkG46XlIC95VXQ2YsiEuhq3gQ0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2m5FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrRLg/+OzFfe4wQwEvQtFJshanYOmYOm3BkcvXcTy5FdscXexGGzR4f\r\nJej9Huhn+TMdyewkies4U7LB6B3fEMhk6WzIv0YR2bY70iqZ17jH/shxaT9u\r\n6w84Y6CuBCjzMbfEg0Qgs53RnKiZ3FVCc+BuuQcaq/AFItEhL/lsQGcUyMHD\r\noRfViPpCLMHnSoeyjgHk6UC9v8YrwPyTSY0VwjWxKxp09ercnUCKUgH43LBj\r\niBzncR2iGgTV8SEyXicHjuXvwmVU1yvbiLcGjv3HNrqpiP0Yhmt1itSQGf5N\r\n1LTpkWLNHgtl+uABqvihfZmcvkatFHuvDtuSCotc0TO3FWaQwcubje0jLJsO\r\nee0tx00YmuOelooJWYWyZXlYCLv/u05aD9NK6hoBERT8eZl/0bv0F36YVAji\r\ncs5wXCEaSiNSzp59Qg6CsW3aR6FWcJlR07kQl+VMLgFQIaTkdjuX1Frxo5Wu\r\nvlAoMr+rpJdtByva8LhuzanwDHdWUH0MOSVaW4FKfY6sl9VVlH4l3ho9l8BX\r\ntRKmTgqtg6hbvW9yiVjQJ0OkY8Kli9W4CugJdpKzNi5OLCtZclYuJ1o/qkdZ\r\nPKzEwyni45ixZPOqm75L+0m2i7yG2aTQZlZfgtmj85YSoK4YOETthEdbbEJo\r\n+3m+W/JQzFFyRFjxCBiX5bThvqFHyvaCaCM=\r\n=AeiY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.1-dev.37f589d_1658482244883_0.07965227195335434"},"_hasShrinkwrap":false},"4.0.1-dev.2e1837c":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.1-dev.2e1837c","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.1-dev.2e1837c","@ethereum-waffle/compiler":"4.0.1-dev.2e1837c","@ethereum-waffle/mock-contract":"4.0.1-dev.2e1837c","@ethereum-waffle/provider":"4.0.1-dev.2e1837c","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.1-dev.2e1837c","_integrity":"sha512-Sm/LAO/lW69VkYAtePvzz0OJu3l1DvjXkhlBxhpLTxgtqDhUj63+7vhedtZcvEm2Dv1v7XfbknyZ5WJYFyZhqA==","_resolved":"/tmp/4b74afbdefd84b972fa1d28f3b87e0b1/ethereum-waffle-4.0.1-dev.2e1837c.tgz","_from":"file:ethereum-waffle-4.0.1-dev.2e1837c.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-Sm/LAO/lW69VkYAtePvzz0OJu3l1DvjXkhlBxhpLTxgtqDhUj63+7vhedtZcvEm2Dv1v7XfbknyZ5WJYFyZhqA==","shasum":"506ff4b6c56d8fbb6f5139dcf0dde52ca22b8737","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.1-dev.2e1837c.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWA3rcfIIk4sGzZX7bp5vN3oWrZpA85oS/GELgtWxhTgIgSpRhMPnwKQytNkqCWXNlUDAFtVQOQoaLV/ZIO2kHZDk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3pgdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo5bw/+LpOn3rF8c5UB1GvLuY28eSuKYWmsZWG4BEBXSq1UmGfF+txz\r\ndhQhanULVuwQL/ekvpLHH1K2SQ6xqeRd0Ufas9xlHGtDhjKh3vKUgNnvq3V8\r\np+9QA27tu8XkPRB7QifRm9pvtrNYTfQqE7U6WfL4TWo+vOwirNmaq8gWypeC\r\ny+N8ky6vQq1zAGUxHKzoqq9xPybEFJg8NlI5xlSWD/ykPzl+8jqvDCIWj0HJ\r\n4pA1dtpPw4KkF5hRi1aqEKTUGzp0Cgf/lw56PApVV30bUhJjRk1BQGqC/JPX\r\n8xCIt1IdEK5B6GwjlFzPrXdYsMdLpB7/KXICAKRtWd3ukG9q1r36Q6c2+akV\r\n4ufJPrbEZL4bDPeOH4k2LK9jNgstgNxOCHxkHijrF2aHdzUUxLLskW+4ebbz\r\nMYs8C2/7KYpqHgI6pyXd00W50uZ9L9vou2rjowdLaiXDgY5P4TQzq4vUkKnm\r\nPirVZD1Fwa7M9loYLhYxULut/W6XP+AHtVWJ+yhRVsXxJnBOiW5xOfDwFvqj\r\nk7iUYLV4IWOlS5G375rSzbuZ15oSlxxw7hJURHI/N1gHzoh3gQHTeBTYa6ly\r\n0w3XU/DSYr0EkDHgFxRCbd2p1e63h7Ww/7f8o0tb4zS9sNA7EA3FUe8hEIGG\r\n45krXOGmTx777heJhy/9cuhBCZ201jcr4Ds=\r\n=4qWC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.1-dev.2e1837c_1658755101114_0.7059073040115202"},"_hasShrinkwrap":false},"4.0.2-dev.0a87072":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.2-dev.0a87072","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.2-dev.0a87072","@ethereum-waffle/compiler":"4.0.1-dev.0a87072","@ethereum-waffle/mock-contract":"4.0.1-dev.0a87072","@ethereum-waffle/provider":"4.0.2-dev.0a87072","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.2-dev.0a87072","_integrity":"sha512-4x0+OigKnE/1Gl57FEOil9nCofnVitSM3zSM2aFWu2I2adoUweuhncWjlERmGH+kyJzODiLqHpKnlTYtGtNrRg==","_resolved":"/tmp/ac623623064ec9948748aed18caec5ae/ethereum-waffle-4.0.2-dev.0a87072.tgz","_from":"file:ethereum-waffle-4.0.2-dev.0a87072.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-4x0+OigKnE/1Gl57FEOil9nCofnVitSM3zSM2aFWu2I2adoUweuhncWjlERmGH+kyJzODiLqHpKnlTYtGtNrRg==","shasum":"90f6693055f81e04c36cd76ef8706ea66c62148c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.2-dev.0a87072.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcqJD9a9wEkQuX/JLTYr3Hm5ifNahblxAsH05VVHs6PAIhAPsJ4p/5IO4f8+fDFU4bmbpHr/2OkSjTJRI8CUFtuis+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3/A2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0JA//bavGUzZ1qqEOc93UUPVPhqzHKhMbtfskW7PoQki/gwgkI/25\r\nw+TuV7v2rhZLFK0ZxSRA8tso4owsHymZPB+SLnfi8sUF86dnrcoEe7x/YXY9\r\nHc7coTR5oeV5B7UH2zTq+xe1eZtlJg6yaDFbh/SDo5HQ2A7zHHASBUuYCZaJ\r\n+WPax27VjktiUAHSfzLNlOvPu+qgIwgcCl7klWJIQgIJHRkTovcE9XVextoU\r\n3atppkwqWOPqIVFr/nnoGy+6WgM2u4P3tM/NntjaVyxi7QnwuEIybzj3AITM\r\n6tIupvQwrBWMZCrGLW8ekOn1MtC2+aNypqNzS+bNy+Z+koMc7S/P4/GtJKAj\r\nmHcxHqb1RWPw3zpMlRwLHAOJNmJPq5exv87+rkCMYnnk71U+uQcMgh3HML31\r\n5da/f7lUYqaRmKrKHBQghKabewPtAdBpo9zx1qRu5dgn4HFQGQ/+Y6s0cj7F\r\nvk7wtxk+cCpqFDOOVymNeZzcSjycEnXCGZFKeYIZSTZeMalHMp+Osw25aWOg\r\nmzhOqWWBtp/a+w1qhL2OIP4nEFU32VwcT58O+PhaIjaknHnHTND86FPoCxnM\r\nUs2uFMdSKmoGaIN1dv7W6kCZJ7suFxT1fIdZm/kNKUflUzgKwZRtfO3910Vc\r\nDb7VNtt4ecrXWsq23G27Ve4BbuSkkJAhBoM=\r\n=6V7+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.2-dev.0a87072_1658843189874_0.5115658076794736"},"_hasShrinkwrap":false},"4.0.2":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.2","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.2","@ethereum-waffle/compiler":"4.0.1","@ethereum-waffle/mock-contract":"4.0.1","@ethereum-waffle/provider":"4.0.2","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.2","_integrity":"sha512-E6B8pYQRtBpQSQLJZ94vNEv2vTBtjaJk0oRF9LocdyJEWwO4kMYyu48T1AJlwXsbHz30ooOaI1QKjk6AIwoiww==","_resolved":"/tmp/aae99d3f652cd5c5c9848465bd480d68/ethereum-waffle-4.0.2.tgz","_from":"file:ethereum-waffle-4.0.2.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-E6B8pYQRtBpQSQLJZ94vNEv2vTBtjaJk0oRF9LocdyJEWwO4kMYyu48T1AJlwXsbHz30ooOaI1QKjk6AIwoiww==","shasum":"29c495432d62a1475ad37eef16d21ae7005d4578","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.2.tgz","fileCount":20,"unpackedSize":24523,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHdMn/9FV4AnNWHiRXtWB4k4L+w+D2mKwDDZgexbcVl6AiEA5JWhUKCjRN8hagXRkZA1VbN7bIsDl7JrvAtFf8IidEU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3/YkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFnxAAgxb18WPo+aWrB+IuOecZOUzPcvqp3Ea7oqc/7FAyTDX13Oqs\r\nWPJSh/4GULeZr3jWVQwptANjBbLe0OX92t/LjKYpW1mJaabLB2hx4wL2v7O4\r\nXiN1ittbj+lM0EY0qaofvFmaSdFmhOVLfs2Tr/u0ivlp73yGzTJ7ee7iVXF3\r\naW8LmMB8++ggf/c/svSlD2Rqg7BfuatutekO7bFuhCLjhvDCmjrJaOtKvUcs\r\nr3NFpWX2ZyZaXru4BCRetuAZrQHsseCRch6nYp2H2yBHBcvFnKN+KOowPIf6\r\nP+i3cyl2r9sJJSxs6SPhSRUz3t3EJIDWvBIk7qT/20xlQOnTQmuEwKv6Opoe\r\nOPSjHoCtdc8zW1U8+7QGLqQgLEMAS5/ZJJbcF4sm9nNp21KyjGK04SGqjXCB\r\nXGpXDmKtlTRu7gWzkUyLcbW8ng5ISFJZ/SBvjHRwYeYNYUxe/v880sOB/nuU\r\n5yWMsmGrFLE8temHT9JhpqanO5EugITHD++AmnAWuFRL2MxgcLOc5OPLtPvD\r\n7R3NMrvwG7SQRekJJXPb0Z82/gaVE47+FkbLMNz6QelRyLTRIexj1GfHqL/2\r\ntZqJU1hYhCr7uqDsoenis7L0iahVqq7l+COyMsI82XgWZ7kYr19a/st2/fOA\r\nghGl/MlQxOqKZfWABZE4odygu/sokNi8n5M=\r\n=A2Nf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.2_1658844707933_0.37012161461268"},"_hasShrinkwrap":false},"4.0.2-dev.b329845":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.2-dev.b329845","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.2-dev.b329845","@ethereum-waffle/compiler":"4.0.1-dev.b329845","@ethereum-waffle/mock-contract":"4.0.1-dev.b329845","@ethereum-waffle/provider":"4.0.2-dev.b329845","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.2-dev.b329845","_integrity":"sha512-LwwIdZIe5ymk5EspY670Clfuy7DB2H6h2ty4lCGi10M1kYwnyRye1TxWPJ0PdyZXg4xC/VoXJ5MdyMeNoL41OA==","_resolved":"/tmp/38f2d7dcf8728de917769c6e24619af2/ethereum-waffle-4.0.2-dev.b329845.tgz","_from":"file:ethereum-waffle-4.0.2-dev.b329845.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-LwwIdZIe5ymk5EspY670Clfuy7DB2H6h2ty4lCGi10M1kYwnyRye1TxWPJ0PdyZXg4xC/VoXJ5MdyMeNoL41OA==","shasum":"ac51ea6d16f0a893065938d826dc40cee779fd55","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.2-dev.b329845.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsYTS8ktq2qAux103Vb8QWq95+t6JSyvZnnrCwqhMCGwIhAOGT//XW99OPriQTiCbelDJGSUyyASi1rJyG9qb78kL7"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3/brACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr37w/+OAr4yCRZuh7J53lGuJdkDvuxPHKsl4R+G7y/wfq4Aj8L+YdW\r\n/3C+eEetuzQcEin8W8faf7QmH6kn4IXZlmMe9PZLitCBR5NirwnttD38dHYv\r\n5AMcz6zyeOWSb/aKd7usTGLFch/jXZbPNLAUaiuX2f7adYShho7qsH+YficX\r\n3GCAYmRyxyN5vQF5hO/rHoYnco2T/zVtmrsTIyj4jOfF6IGpD4XeRpLemWlr\r\nsSlzw5TL/DQ/tS3nxGxYZhr7e097G7nOnLpN5kV59mxIcqIfXPOu9nn0WmjI\r\nHZFIr0ovh2Gibn/hPvpK7l0/ViaUTndTJqF57dt39179WW/ngZ6oBSDnpny2\r\n7jA3x6IipjMLf9y3qUnOXQqeaWV7Bd4n0foSzVLSpCgyLHHstRR9MLtElbpv\r\nikZXyyG4o6DMI+C48VIFORkGrHpzrxcnRIuQBfrd8AST63ll8350h84PfaJe\r\n9blGjA3uk9e+uw3W9777ail8/aWhUL1cLbnDan22I7lZ2zAZykpEA1DEx0ao\r\nH+0/LkrTg/wJ72wfw4m8mw9RULEpVAulyJuDtZgIEgIOk1YG8+Nj1gOaHSOJ\r\nrC0yqeY115eTorf8GLqS2RZfu725rf7EkU2EZ7UQLZbhtLTQuUCPDAvLB1GN\r\nVxIWxhyW0aWptOH0aMhhNyIuDH+nHDzOOx0=\r\n=7XPP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.2-dev.b329845_1658844906807_0.27916174795769866"},"_hasShrinkwrap":false},"4.0.2-dev.c513a49":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.2-dev.c513a49","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.2-dev.c513a49","@ethereum-waffle/compiler":"4.0.1-dev.c513a49","@ethereum-waffle/mock-contract":"4.0.1-dev.c513a49","@ethereum-waffle/provider":"4.0.2-dev.c513a49","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.2-dev.c513a49","_integrity":"sha512-/jSrL2lJupEnxiMjI5LjuHKLzJeIBSA4SZeNxQO/V41b4kg5lPo9nYjp1aRBOcMMFK8wrr8D9RU45Um9z1fDeg==","_resolved":"/tmp/20fb4ddb4f2ce7ab368a8b74e324035d/ethereum-waffle-4.0.2-dev.c513a49.tgz","_from":"file:ethereum-waffle-4.0.2-dev.c513a49.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-/jSrL2lJupEnxiMjI5LjuHKLzJeIBSA4SZeNxQO/V41b4kg5lPo9nYjp1aRBOcMMFK8wrr8D9RU45Um9z1fDeg==","shasum":"69f9a7dfd88d291f2402af8e2d5a2c25fa08242f","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.2-dev.c513a49.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwB6LttkZ+uwTzUL4Uryep1WsTclGGp09sWbRhRQ3URgIhAJPZXK1PICX4YsiQfld78WH7cYYeDiYtoqCQcsPVH/E3"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4oMUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrI/g/8Dp57iljv5SUl45HfgTk0X3E8iHpuvOMJxZ4+3j510pIK2ahf\r\nnxsjrUcwTZXK5pe6+XHtFJJSfBbfECKd909wQXo0SN6Ml2Sn08xyakJ70Uyw\r\n/JBryrp0i1hLPC+N9bEtyqsZ1oWVPpHNuoeKWZFZp12IoodtOwJjhO0TacU0\r\n8HTXiI+fNZZVPInDDyxCwmNPprc3WvjcN9aRANIT1dBI+zAe6ZPbGQuOKlcC\r\n8tXnTSuNWApVqFvPQ0HhrfDvVEGHiTpdBtmzCguOXt1V2Oavf6uqJSnU0Xmy\r\n55TxTENEcvuY1ieSJTmPPGcYdC18fziWRDB25kGIdOOAyWuCkCWOyLTU1Gd1\r\naUhdbV+rt5VdpEgSzUBgoSBx6QV4DdoXle89ALMXpBDP62KScF62tp+dTgy3\r\n4IM2LRoVLdOP1oH6reNJc4V7q8SQreex7K9rcUe/5kjuvLR/+/F5UGBoo20z\r\n4l76spFOSKfHqPlQOCinbFyBHRMmSetYTmAFMnT6RVsm/7ca0ZFALF+N7npO\r\nuFg5DDYF4YWggAPf9M4fgDxogHTjIOVMkReJPCBYBuXNVNRFFPRwNYbeWQOQ\r\n2ItW2P9O1TpxTEVx5svmiL7lV2e9dp1ynSaIMpuNprzLSjSQv6RTIUVo5gtN\r\nIvVKFx8GeRS501/JftvphM5Xtw1t6XARuhQ=\r\n=uG7f\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.2-dev.c513a49_1659011860084_0.35639315096355784"},"_hasShrinkwrap":false},"4.0.2-dev.382de5b":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.2-dev.382de5b","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.2-dev.382de5b","@ethereum-waffle/compiler":"4.0.1-dev.382de5b","@ethereum-waffle/mock-contract":"4.0.1-dev.382de5b","@ethereum-waffle/provider":"4.0.2-dev.382de5b","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.2-dev.382de5b","_integrity":"sha512-oe0DK9EtaN8dmRZR9Udk6MupIcg95aJAcdM9RW5ET2qMQPwejRqhZpMmIib5ZDtiFWRn9B3hbao3KXYUu66FjA==","_resolved":"/tmp/ed4564aefda6e2e5355e71694f20ebcc/ethereum-waffle-4.0.2-dev.382de5b.tgz","_from":"file:ethereum-waffle-4.0.2-dev.382de5b.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-oe0DK9EtaN8dmRZR9Udk6MupIcg95aJAcdM9RW5ET2qMQPwejRqhZpMmIib5ZDtiFWRn9B3hbao3KXYUu66FjA==","shasum":"249a8c5ede6d9da697b2c5b5602a0311c3e9de93","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.2-dev.382de5b.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDV/DnVOnEr1E9a6VUTm625qHD8acl8ru5oeY0MLqJZowIhAPKaJ/0bKcstpKzJZMlVtLgdkykQkQX0I2jLPmvMQmSw"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4pyUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrcLhAAinJnnIFAd9GWFgFWl6oPbl1kXFxBPjJHExwDDspc5VRnqIHk\r\nDrKuS+DAu5Zuu6LsCNOqtsvrJgJSRrqQTOhnldOZg5ullH2pHW/5d7hTExaB\r\nBNlBC42lwsMpEkWZoq4ctWGE+gOYyELNeoVbLJ86P91gHXrYVREBqMvdbzOu\r\nqUh4O++CDE0Baf/NijU9tw764Kitz36clqjHPkcUY6024EFqlcE2WrzwJCgt\r\nGP+rtVhfZbYSYc9C2PqaLWrkzE6WeHAnsDcgkNzCrMU5aPsoW9Oac92bHX0h\r\njB1P65qe39d6oex7K/gvJhXlPEE9of7GqVFrflZqfokVtvcNTN7lmfnePEqq\r\nm2uPrNZCuyC0pwLvMEJ0giTWaN5HiHOKXYi9sEKUxklMNgVMX4IiP/8TmoHs\r\nX6yZKR357lcGl49D+u0SHQiGLkKhFXQFLVdEGmenoz0cT/9ufgG7FKWBIrll\r\nOba66qHOH4YkeDbxh5QZenWhsAgbmDlG8YcnFxjLhyBsP/wRd6OWp/iNUlbz\r\nvYSRR/cDwwkXh/r9TBQGi1yv1sapRS09J+oPInrEzP910joIpgFpaew7pzz9\r\nOScLPWutClhJolaceGP3GC25iRNZsgmvNDF+eGGoZl/gJSlHC4NNkNkHyscX\r\njcLY3Jj4lr2AG12h5PjhR0yYvEZ7fDWYViU=\r\n=1NnU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.2-dev.382de5b_1659018388593_0.6724546560161164"},"_hasShrinkwrap":false},"4.0.2-dev.4e0598e":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.2-dev.4e0598e","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.2-dev.4e0598e","@ethereum-waffle/compiler":"4.0.1-dev.4e0598e","@ethereum-waffle/mock-contract":"4.0.1-dev.4e0598e","@ethereum-waffle/provider":"4.0.2-dev.4e0598e","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.2-dev.4e0598e","_integrity":"sha512-gt1NjFgHij+kuJcgN2IfW64V4dJJtssAc53/za+B+H4yAheJDbIQSJDy82DRXZB+D0jkCZNqhJFVQHYw0/qCaA==","_resolved":"/tmp/370fded203ba7fc30b6c9a7b688755aa/ethereum-waffle-4.0.2-dev.4e0598e.tgz","_from":"file:ethereum-waffle-4.0.2-dev.4e0598e.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-gt1NjFgHij+kuJcgN2IfW64V4dJJtssAc53/za+B+H4yAheJDbIQSJDy82DRXZB+D0jkCZNqhJFVQHYw0/qCaA==","shasum":"ed4f5161437a48f4358617209a3419c7803282bd","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.2-dev.4e0598e.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICLC90bdxbrxDbkWDEtPBhb7+i8k4GSqEHhFNNfRBPDCAiEAkpf+WKxFn283Uv1IQ69+Kqh//bbVjb8qG0vksmjVyMo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4qq7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqvgw//V3wMYOVA5ka9Aoelcg+SkrvphTBaaDOl591fCuGfex2/YVNj\r\nV+yMw+H35lw1Lr0X+SbFCafu3ChXF7SMRmi3G2v6ua2T3cvi6oZDPffelKTi\r\nGJioD6b24orJEtYjftuG9ZJhIGyFOlf2S+9UtjcZNzde8sekoF2qF6uSU7Dy\r\nXGvUDLSdyqOvsuU1mkhQbWl92AKbF/aw3lf7r6GgTHNnvLGm0PltlwqZT8LS\r\nDKRWLt8iPT0hWcrxdt/ihWvZy8cvZInkk2fQRLqUXErE2tNH/Swdown+rCKN\r\nUakuAmf5JFxuSIAClOep0b6KZUIVJZ4TFBYqTM5/gLhtHhg6Gm4faAs9VqFP\r\nKOg+uza0O6/dGmWlWVKBGNrYma0QkTjEkV4NeqOQVYo4s20W06b03OKSDNXe\r\nKDof5B/c8JT5Aym6ixLfLcWfbMM7ak/hUxHOcztiPISkOfjTKJeBuR0LmLhJ\r\n3BvG349vk8/FXmBNizGgRyO6PxhYXP69RScZyGYro+bMHj4EFllrhaY7jVyj\r\nQabEp6/U8ki/crLvjsXsSpJdqTnFF4ST6GpPFr7OhGOxe65quDJt93zZ0sQi\r\nNzSANBa/9ZJfyTRIgx8nZdXImBED4hb6u/z8ds5RIj8PgydQXBi87/0S4O89\r\n8ToPw3F2wv05UTGTSDPPm6Lwuh1aaUcnonc=\r\n=X0f6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.2-dev.4e0598e_1659022010779_0.9304365465757902"},"_hasShrinkwrap":false},"4.0.2-dev.1fe07bb":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.2-dev.1fe07bb","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.2-dev.1fe07bb","@ethereum-waffle/compiler":"4.0.1-dev.1fe07bb","@ethereum-waffle/mock-contract":"4.0.1-dev.1fe07bb","@ethereum-waffle/provider":"4.0.2-dev.1fe07bb","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.2-dev.1fe07bb","_integrity":"sha512-zb5Vtjk13+oFLs77x2gNokwAVJz7KbOiI+awXYOl2JQTEaY3O01OnF9H7H7qVj30i7vddmtKwZV+eW98w1loqQ==","_resolved":"/tmp/acf90c26230e7e07c2237f1cb046ee7e/ethereum-waffle-4.0.2-dev.1fe07bb.tgz","_from":"file:ethereum-waffle-4.0.2-dev.1fe07bb.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-zb5Vtjk13+oFLs77x2gNokwAVJz7KbOiI+awXYOl2JQTEaY3O01OnF9H7H7qVj30i7vddmtKwZV+eW98w1loqQ==","shasum":"1d7ff87997864d17c66dc927dc92b4fb47a49a23","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.2-dev.1fe07bb.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVqMk+ku4O0UKZ/VVeAq+xaZ+W0G3GrGswt24Et5lyhAIhAI3CK0lu8DZN4l6AXdUteWUyK5w4VynGgoCHyi8mWKSh"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi48itACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpD2BAAg7TZKqWSsqGqgYTleOWSZOOLQch319WSjhMLcdX0imDa4iqH\r\ndAPziUDcmpYy8c/p7JR3c33akJ1zsSNN+oZl5ci5Mc3iUBDRhLoFOULLuPkP\r\nmoMsN7czfHDa+Zq5XsRek3l3r0m6sxMByBhQu+FggYSb/oA9vuH/H0OWvN+Q\r\nTqX/FurZppqjut/xS5zJ73DBhn5yxQLF9Ioo3wzQ8pb2rEC4RINFQPImTh5u\r\nvCLc5bzEvbBLGeYmnnENDpIxNqanaTMDrNel335STsGGOQF1B39dP64nSBWO\r\nV6H9K9iE6yJA9E/OIf7d4Z/avF4phnhTfal4Ya7RAZrO78Hu4h1q0bVRmBUw\r\nJnA25N0vTE7SNIS0fKp/yGzPIfWAG/N356Sjz69MGbPlm4Y8UIiyGvMQ8Hey\r\nJSOpsZeLJNlpG+0hKkC72pdSMNgSxHah3AndmWO669qmF1QZ1q7yhXvF134A\r\n4JF0UMgGx80qHpwfm3bOY+HerdPwrs17FiseKjks7TWO3Sgi4LH9FDS9d0L+\r\nQgXA14nC1IeB7ribRZOqLUm2FgzSLZgCLacCPrCdGVUj6egpiMurRk9Hbd59\r\nwofQLLQKIaa5pYZbn5gWDEai2ZCgTt906P3BgGYt86GdX672WFkWdP23Spqi\r\nyjYUVNDtxMnhYtKYR3iEfVtJshiWyFi25j4=\r\n=eWKa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.2-dev.1fe07bb_1659095213316_0.06792475869549586"},"_hasShrinkwrap":false},"4.0.3-dev.bd741a4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.3-dev.bd741a4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.3-dev.bd741a4","@ethereum-waffle/compiler":"4.0.1-dev.bd741a4","@ethereum-waffle/mock-contract":"4.0.1-dev.bd741a4","@ethereum-waffle/provider":"4.0.3-dev.bd741a4","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.3-dev.bd741a4","_integrity":"sha512-og9QyLrKL9arjh9I5GmPxm51q+rfjvw4Ydj6/8VwGB5wLeapvLuednirIpbnkOXdb2SZl/64iUWmVdK5sfXfvw==","_resolved":"/tmp/92447f8daf1cc3252a2990a3e485448c/ethereum-waffle-4.0.3-dev.bd741a4.tgz","_from":"file:ethereum-waffle-4.0.3-dev.bd741a4.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-og9QyLrKL9arjh9I5GmPxm51q+rfjvw4Ydj6/8VwGB5wLeapvLuednirIpbnkOXdb2SZl/64iUWmVdK5sfXfvw==","shasum":"ba2bfb919b8097f1c838a3fdcb6be37223f22721","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.3-dev.bd741a4.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4T+W1upRzWCCY7+0bzzEw3P3F6Q92eMPPulIhZmrMGwIgQ53zicP/BsS4HKlz8eu3ff/8XW1sPQJHlqrvDJ5DPhk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4+aIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqrcw//UosY+HDEkbVSWQP7qEU5kuVhaWQgUlkPdNDdLKh1olZXvI72\r\nLaDIpiPGXyqxSQzXaT/NY4sBBzb4ZLAxr7XELyMbmItFl0RdvAkFErWhSPp3\r\noIl/1NkbZMSyBioakA2w+j1H01areQigGR39pxTzitmCrMZVYXGTagRJXUm6\r\nocQlbiP873UkbqSb/pz66yKgJFK7/MZeC3pHrhtL++sFAWPeOdrEbjlwXa7w\r\n6U6sbfIVj/LprxxFnnQRLHnz/xjhx4zLanTaezuwr3/5coeJ/xNwiXlFDQlX\r\nAtfLSzCOzlBJU1a2RDFP+5lSeRZRjmbKTQKKRnqeMz5xAU5ZNHzq3Y7yeBZg\r\n/VtuDGobxEEip+gks648TbMQ/1GdGSjwXcDzuI+WrPbiJHZuZ1tF40lgOupy\r\nD0XFbWslNuo4RgVsygkwOyAeXodUXnXgVuTgl9ED5CLz+WN4vsgD8vAoULEH\r\ncXR0PsicEgYSsCVVfL31iIX358qrAWyHGMyOOg9q/guc6AywVBGE7mYn1YBw\r\nH6D7CoxeCt9xgtmZctSFc+ipliz7vmByLGoxykbUqRUZo1WRIejwSSUou310\r\nEgQpqhCWsmViHHabbm5k8pQikncGDfqTB0FtD3y/vxcS7PCMQtyCc5jeGtVk\r\nB9Jg0BcAac27RUHKBVIdA7iqy2F1UNguxu4=\r\n=elTm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.3-dev.bd741a4_1659102856015_0.29556309657331137"},"_hasShrinkwrap":false},"4.0.3-dev.3b7020d":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.3-dev.3b7020d","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.3-dev.3b7020d","@ethereum-waffle/compiler":"4.0.1-dev.3b7020d","@ethereum-waffle/mock-contract":"4.0.1-dev.3b7020d","@ethereum-waffle/provider":"4.0.3-dev.3b7020d","ethers":"5.6.2","solc":"^0.6.3","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.3-dev.3b7020d","_integrity":"sha512-kWYe+y0jXgSPkpf7DqZxGALRLcLJ3+nsek8v0g5rWF3AS7GK/YJzuy3i/eUahwcsQO7SAgfqmDG08pLSjrYO/Q==","_resolved":"/tmp/47d497934702ceb9d296c1d051ce7358/ethereum-waffle-4.0.3-dev.3b7020d.tgz","_from":"file:ethereum-waffle-4.0.3-dev.3b7020d.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-kWYe+y0jXgSPkpf7DqZxGALRLcLJ3+nsek8v0g5rWF3AS7GK/YJzuy3i/eUahwcsQO7SAgfqmDG08pLSjrYO/Q==","shasum":"896ef5a6005134813a590340aff81977802d4e98","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.3-dev.3b7020d.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICIrkafM+LjA3/r/SzBnZkse6wzA2zraXfHnKYgs2MHGAiEAxnL6Jk4jDVbiFYcl/9J8eBc1DS5dtsqiM1Hvp8CHaXg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi546PACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0wxAAjZISMOWegee/4mCMM2tFghEaeX3VOe93gG24AGndUkD6nfeO\r\nmIZt2n3vVpEyZs6XNQtljELbyTJxOhf5gQeQiVIQM8qVdzNkMumBFtJhmFwA\r\nyNjhd2s0YaCrdKS3ItOmEEPjBVnaOlTawL/CJbQE1IvBIPwrn27oG4EaMbK/\r\nbP/4GtJbaBSN1L3AmLiMualuGaAdklkpmi2SY/zh6HKuzuhK3msgzBu51viK\r\nl2CMtS9c5BejJJntXxzD05iqFMA0uR6JSGV9oAbGUOA+ynKJdKaUgx6U/sP1\r\nQBmJaHhRaBOVcPuxugBRimQ1tuLATmwx5b0DUw98DEE390bRFfudxMh7YKfY\r\noozoahaftSbroiCCzVLh2v6GpGoKROY2ULbmJHQuEWf3Ho/nkUA5cvDVfSzV\r\nh251Bvxx38Mbmk1Q4eQcoFUAJBzPUZXFYDTjJ+aOYiw9axZKZLVXiE8j3LU6\r\nC5RqO2+qvuYmqN6UKdvRjqS2sbd/ioZ2nOQ05NGLv0HgBERJUZ8Z5ijyov9l\r\nc2JXI1QXVviF0l+RtVZ5zE0iZYuo4UMwvfjBcInjh57b64VFoIczPwQHIc9K\r\ngTaMsduNyvQhJofqreSM1DfzgClxMPan7LDtYhwS3qoyt5Ti0tPEhv2EcVT/\r\nqL3MZafzqMTxC/+E/cZ1NISmMtaijDiWdm0=\r\n=RRCf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.3-dev.3b7020d_1659342478954_0.6838491141770502"},"_hasShrinkwrap":false},"4.0.3-dev.0c13fb9":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.3-dev.0c13fb9","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.3-dev.0c13fb9","@ethereum-waffle/compiler":"4.0.2-dev.0c13fb9","@ethereum-waffle/mock-contract":"4.0.2-dev.0c13fb9","@ethereum-waffle/provider":"4.0.3-dev.0c13fb9","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.3-dev.0c13fb9","_integrity":"sha512-x1tMihDWi2qpgTsBaKCiLC0MWt6uR9lk4gg2XP8BdD7b0lcBdLJZyTDH7lZ8h+Q4SlBLTeVsF2+mcCLdNw6mOA==","_resolved":"/tmp/d163082c2f57fbee88bbbdef38627b4c/ethereum-waffle-4.0.3-dev.0c13fb9.tgz","_from":"file:ethereum-waffle-4.0.3-dev.0c13fb9.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-x1tMihDWi2qpgTsBaKCiLC0MWt6uR9lk4gg2XP8BdD7b0lcBdLJZyTDH7lZ8h+Q4SlBLTeVsF2+mcCLdNw6mOA==","shasum":"308c664ee23ed7f12f6c5ee3db6fa3ca1c5fa887","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.3-dev.0c13fb9.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHHIiE2OieDfirOxT+Zc6iMC2zHpXiAiyaGzaGIytRo7AiBHa9BhsrsAhSYUaNWycwt0GBZT9M/ZNDstZaPe5HFRNQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi55K1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBLRAAotOAvthYMxijvQ7jS5fBLj/FfhcD63q5KDOvp6JUTMpexSoX\r\nmU6ceI0Of0TyIm6pVAN9AzJaJmzU7Z3nZDBMnG4U2dPFB7+PwqE2WoHWx42P\r\nR5TonIZc7S+9HLl6VsWN/WQMw748S0qRr4BCh9bfSp81851Q+dG/zSa2xXjw\r\n9Kg72Tjdzy4E4UoTQx1wyK6GyoNW26np6fa7f+S9y5Wvw+WQ9oRklp4P+aLk\r\nroaMT13LRV+Vq81HEJqUcDxMoWR8OVbx58MP63eP9aK711pH0p9NvxvMwc82\r\npzgPtEWfeq5MBXaBY5RqQ1aJxeAAA4fk8PX2pq2jRRMsGcAxcu+IS2EwInhC\r\nbFxKydUpOWHMjV/B/QxFAKHyu1pO+I2Qq+vvJcjDNswr/vjfIINGvBkdyG0R\r\nMwUiHcpPlNFCxFfMLW6I9bNeE90oAUgxOKEyXIw2Id+Yd4tbPVneMn4MqzR7\r\nlLwjss87fC6JjT4NLXQVPKE72+g+UbLCo+cEKvMDnnNhCRD0U40EkSFQ3DH+\r\n1Sjr4zjYMNFbE+KrY7KYoqqvrEWy85PKTVTDXhNFFZQnYGGf6J+ofaxxg3Un\r\nqqSfrb7q95IH1TdRVR/MEXJdaJxs4zPk3UQW47ePM2T7CiGJlyfYQAc87tia\r\n4+hY9AgBCa73h4MlsN/1xho3/aR8QO7szhM=\r\n=hrv2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.3-dev.0c13fb9_1659343541187_0.9245317231457328"},"_hasShrinkwrap":false},"4.0.3-dev.0f5af9a":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.3-dev.0f5af9a","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.3-dev.0f5af9a","@ethereum-waffle/compiler":"4.0.2-dev.0f5af9a","@ethereum-waffle/mock-contract":"4.0.2-dev.0f5af9a","@ethereum-waffle/provider":"4.0.3-dev.0f5af9a","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.3-dev.0f5af9a","_integrity":"sha512-dnB836Fz9xewaGlBWHXDdEHQYvz8VtnzzVBcU1jbLFeuw94kwWrVZ3SbLnhdZkYUhbVPodvuug/MimZsp5SCug==","_resolved":"/tmp/4d7df500e8b71467e0b9737a52d6b152/ethereum-waffle-4.0.3-dev.0f5af9a.tgz","_from":"file:ethereum-waffle-4.0.3-dev.0f5af9a.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-dnB836Fz9xewaGlBWHXDdEHQYvz8VtnzzVBcU1jbLFeuw94kwWrVZ3SbLnhdZkYUhbVPodvuug/MimZsp5SCug==","shasum":"11b0b5cbf2efd0297d01ae0f545ec4f922812d56","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.3-dev.0f5af9a.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFTaEUDU8oBXqEkFiukptB9MwJ5CgIneUj0i0x1siWnBAiB32EOVSv9NyRpPSzj+wHPNJ/vLLb7USIuydWqv6bdc0Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi55rLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmotfhAAje6AkSP4774yOCFmFD/xd2oV+2Ba8LKYkqx6GIUvBhx+nI2F\r\nhWin0XcC1JxUPNielPipa5lGqWZk9RxL4ON8jcHGnwa6sOmWXtseODdaWPWr\r\nh84/xBOtXlpwA09ZCQbVvFN5O6Kd7we2Bundx5dm89TKQdftSrX5If6FxjrK\r\nPYNbfkgic63h+/KAa5X3+OCNywGNcqyLQI7RN7Bq1/5VaUkoQaDFR3X3c5Zk\r\n1C/AUd7soMJ32+bQ3XzG/XMgdlCZJxQrvz81O20wSxsf+aZlSJy7+NOJNivi\r\nZCj3dJd0g/pa3X/CmNpU7/Q4H1FCqglLn76OipWmpaUCR4msEYWDR2kNUJxv\r\nd96J9pcM9lczJ/QWKGXism7qRjX/yYxQenmjnNlIyE4JdQOEVdzf6lJA1vJS\r\njnJTowoBhiQaWn9AA/rDlKuC+La8q0ThEXuq/f4nsdH9nuLh3yexw09OtLRo\r\nKIJ9PbnZPAgPHPgVbFc5w6i+hIZfvz3Bkc/oKHjGUuuePcsK6cgc1N0RenDN\r\nnY6A/8oZDvwfoYyFhheReNL1oETNNnYVohnNshD8ALti7HjJZpeH1wzpaYmr\r\ndFn/jMscV/cpV1dR55dHkzENWgCmscITZlTJjMpG/E0IAeVRUtyrnv6WQr/B\r\n3tMLlSp3Fe2W4G+98AB+0CTaZ9IdyBy0RAo=\r\n=DRmf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.3-dev.0f5af9a_1659345611227_0.9007283331117293"},"_hasShrinkwrap":false},"4.0.3-dev.d1f8ca7":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.3-dev.d1f8ca7","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.3-dev.d1f8ca7","@ethereum-waffle/compiler":"4.0.2-dev.d1f8ca7","@ethereum-waffle/mock-contract":"4.0.2-dev.d1f8ca7","@ethereum-waffle/provider":"4.0.3-dev.d1f8ca7","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.3-dev.d1f8ca7","_integrity":"sha512-nwe/t1kkIOIYeioKDNB1CkiGWyyru4lOHEEdOldkIrst/SwiBU07QkbHVsB63DN9IKvmObwZ0xnIveMeTNq36Q==","_resolved":"/tmp/d361870fa56689fe24a0ba5b413ab000/ethereum-waffle-4.0.3-dev.d1f8ca7.tgz","_from":"file:ethereum-waffle-4.0.3-dev.d1f8ca7.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-nwe/t1kkIOIYeioKDNB1CkiGWyyru4lOHEEdOldkIrst/SwiBU07QkbHVsB63DN9IKvmObwZ0xnIveMeTNq36Q==","shasum":"b2322974eb3107ed916dfaa4c503fee61fb9285d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.3-dev.d1f8ca7.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIARy5HhgfCuRTkKR/68voMJwCHz/5jUBrPA8nHhRP2OPAiEAyIvzJTAGM3VL/WA/ecUDOwsPewGWTMnBtS6WZxibMxw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi59tLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo/ww/7BtPsZe1Sd/EVF9mynZodb8jAeGg9Gykk21HobfFi/tSuyxf+\r\nZWoujywDqAANaNdbL+wqZ4cw1GCYh/L1KTjCt87SbQsBhw4lz2dxWYzhSuGf\r\nzhyxZbRGy99/YGBXJ/FUkXXNnLiJdCYACRmNsr3bBHbPzgWEQg0mXtH1MyDB\r\njn6HMU+dcX214qWq3jJZMlrF4yw3hSBmYTK479m6lTHDSY40JOAYrnQLQ7KT\r\nJH5YjxpTbjrfdhvcwwxo/ILrFjFrDGCyqAPGhNaRaph3QKB5D6g0fCZihulI\r\n8dT7onD0iCl2yHNqj5PD3R0UCAPZDB3GpK1o4ZcYlkviKJ/2p14LBybA0d/I\r\nm9QlEZLKh/dx+f8jxxswoy30b0gli9NHpZ30U7KCF62gwBROu+feNfqd3Eb8\r\njwcqt9t3+5enKI0Q7r6zZci+oroOg+l/dcNept3hTEVLk9H/m6ouk46sTCZK\r\nkOAXTdhT8K6zXBDgVnsoq83wO5UggcIcBFJl3HM7r+Kps4neZZbfRuoWd6Ya\r\nFFF4bvClneNEWiK9tAWjd3xJ4GfkCYkK8uM+fwZiSYa+tSc/ZFAxvED6tgzA\r\nLenehHW7SD/TBHTfp0ceD7YtMbAMwYRicyGyhGZ9+ktZMLQRpWNyU5FoHbyu\r\nNtpjSl3KuBJEH4E32ViX6YJRQmGQZkFpRM0=\r\n=/VPL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.3-dev.d1f8ca7_1659362123381_0.7580292789973555"},"_hasShrinkwrap":false},"4.0.3":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.3","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.3","@ethereum-waffle/compiler":"4.0.2","@ethereum-waffle/mock-contract":"4.0.2","@ethereum-waffle/provider":"4.0.3","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.3","_integrity":"sha512-s44xMaA4TXvL2f2YhPz9rcLAeJbplMRJWrWxfAAwlGrzW0VQ/Bfaj4vKAGPc47qG7O4DwL//sPeZ3x03LLxdkw==","_resolved":"/tmp/2d15fd124513ce9bbf979526a0b7c92a/ethereum-waffle-4.0.3.tgz","_from":"file:ethereum-waffle-4.0.3.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-s44xMaA4TXvL2f2YhPz9rcLAeJbplMRJWrWxfAAwlGrzW0VQ/Bfaj4vKAGPc47qG7O4DwL//sPeZ3x03LLxdkw==","shasum":"d7fad42b91b8e5aeedf26b8ca19d2925972d9a2f","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.3.tgz","fileCount":20,"unpackedSize":24523,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFL4dzDF0vLhp50bk4jzY7whRzTzHCf5X2JW9SXWfmRiAiAIctRNTIWFMrhWY+Hjwnh6xh5fD8af4+uwWTUwne6H8Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6N9dACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqnsBAAnKOcfd2W7wQRxFtVjtTaYIlS6tosAjJppK0cvckQK24bcpZb\r\nSugDtBqa8qRCkN8VJJB8ozckDktyTRL7IKmgyCCZB6VPwSJCK9RyOSvtSRmz\r\nWNtbye8fGlscocs0pypzaJA1V24xDWZNr/drUR3RXFtb3BPvde6NfqNoGpve\r\n6swnixNd2pucUzhpPWGYpeKuAKjAGuELiPC8jBlEiYyoDgX3+n7zLaUMswQn\r\nZsh2QlnOEJgx3kYxpJqrNEV58kXY/l5+n6yBAKqLqrdZNVMLqjuBSQWmvFJM\r\ntUARLCZlN6bteN19Fc3mEfkykgDzxfYVdieTOTNro+/M0slnVZPwnkNFvk2l\r\njaHOnOrAf+0sowMM8OVp6o1oKdqRbrCIsQSX0/VNV1/vDKa0qk4mgDMRn4cz\r\ntczc+j2CFxTVGDmnYbQEkf4EOcDUD+aaivRHV9jPkF1xcEx4v/uSI0f4ErcD\r\nk66RjS15hJyLZPcOrHAYFLAjXgW3WYCrpVjn2KnU78R97Mc1bKm2asKK0gNT\r\n5Mj1/yiESsPDIt5Kmwhms8U4LMsKJFquc9rdJDN6cCHkuS1C3i5vJKeNm2mz\r\nZ44rfAmTxvD1pjnPXr7oSBS7RTm42ekLM+lu/Q8+HTBOxeyA7uZsvesAdVBK\r\ne1S+sUUmyaXWn+PqFBk/TwajYNlFvabdB/8=\r\n=OOo0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.3_1659428701308_0.18832276073435605"},"_hasShrinkwrap":false},"4.0.3-dev.cae5bac":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.3-dev.cae5bac","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.3-dev.cae5bac","@ethereum-waffle/compiler":"4.0.2-dev.cae5bac","@ethereum-waffle/mock-contract":"4.0.2-dev.cae5bac","@ethereum-waffle/provider":"4.0.3-dev.cae5bac","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.3-dev.cae5bac","_integrity":"sha512-daXSWbS/U9uOD8so0FDVWrUSjxR+Ifc6PU7f5diH64MNaQ/rWKKYPzhZpFzoXd2TJrQYC4LuGvRb0uxhw1G9wA==","_resolved":"/tmp/f28d2467489f7d23a3e81a6b0ba8101e/ethereum-waffle-4.0.3-dev.cae5bac.tgz","_from":"file:ethereum-waffle-4.0.3-dev.cae5bac.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-daXSWbS/U9uOD8so0FDVWrUSjxR+Ifc6PU7f5diH64MNaQ/rWKKYPzhZpFzoXd2TJrQYC4LuGvRb0uxhw1G9wA==","shasum":"bd207476065cc0fa496d9e1a6d7e0fbccf6ea34b","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.3-dev.cae5bac.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAT9+VOQ+0olvGDuToa4eF/Gkw5y4fs/3oKat4+Ii0AsAiEAhW0b9Luqgh/fVGZz/Yhvme52usMV3CoGFqUrHnNtTNc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6OAfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqiXA/9EioflZ/dyemliSqaSlOJR158jhTh7qC75Zyw41t1vV1PNjXE\r\naG/nSfpySf8Wmyet3i6JpGvCSmOFMcoy1Hz9i8b8BpzYPoL2/o+I72NJ3SOD\r\n2+0ORLCF2YQC+Sxv7iEETCiAmzA87nggUAPUVIZQ+9CDmqZ/nfRqiW1bD5K0\r\n20KJ2mhyw7unnQcKvckMicJSSsFBByCsKnv+ZDSkkrdH4l2n5J2Rf+fbYSv9\r\nC4lHlFnL6XniF3RDegINavMqiv/34RKbTEKEh9/BbkBiOB13b0Wx13aieVB9\r\n4W9paT82/CNkqsVXWEUFHxaH06Ur8Q3mO/7rxQpn0hRiqtm6KP5nvBs+n2x2\r\nHpGg6TSN0e2+WIGSCEu/W9yoqKu17zhfkhNQafeeYM4NF/ShU95gmGI7NweH\r\nNqLQ3vQ5GMdctCTqvPuMET/Hyl7VkweLuUCV2+VZO36gNErzsZqJFywQ7Q0t\r\nWDNo0cHBIjih/VC6q9ZYrj91UqMyF2fu4NXVpURFJrAZimmC/vwK/JJyHIEU\r\nrK3z9z5+W8tbifrjb0Q9xDImESQzICaQw7BNfUpqZrmscEWRvL6VJ1PwJRgE\r\ni8LqKUrSk/dlWO4rt2/3YeH37NT3fOeKQJa7SglLN2VQUrj6ZIh/xXTyta4F\r\nkbtfMwpOSYhF9ri1+TpzR7wZ5l/ikFv7qdk=\r\n=yfeB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.3-dev.cae5bac_1659428895374_0.7725990018059747"},"_hasShrinkwrap":false},"4.0.3-dev.41bc646":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.3-dev.41bc646","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.3-dev.41bc646","@ethereum-waffle/compiler":"4.0.2-dev.41bc646","@ethereum-waffle/mock-contract":"4.0.2-dev.41bc646","@ethereum-waffle/provider":"4.0.3-dev.41bc646","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.3-dev.41bc646","_integrity":"sha512-hECLUOzn1lxq2mjRk22Q5tNI+/s7C2v3mSTg+QQJ6yb2gFB5wJKYNugrB8acnVLczm+DassYsZ9/NJhUteTBuA==","_resolved":"/tmp/0c4c6a6f4a817534aef12948c5cf9e13/ethereum-waffle-4.0.3-dev.41bc646.tgz","_from":"file:ethereum-waffle-4.0.3-dev.41bc646.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-hECLUOzn1lxq2mjRk22Q5tNI+/s7C2v3mSTg+QQJ6yb2gFB5wJKYNugrB8acnVLczm+DassYsZ9/NJhUteTBuA==","shasum":"f234d167a27bd4ab94ffb41119a84d4796287c00","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.3-dev.41bc646.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBFDBxPpbb+h21v1xJkCq2H17quves/0kXQ4zn9eGnGlAiEAvlikKu2JpTeYrtiOgdIsqrGcU6Zz70wIXDnn5bs27cQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6kMyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpOOw//erQ7OHPjDApsfJRzadUKrxlyq6i4BPpKeB4c6iYNX2wdvYXn\r\nEGmw8jLYTQIHJ/hQTaZzNAdtGPft38UlI7Qd58VUlFTXnzruayGGYFZrP4DU\r\nlXgMiirtUpp5Z76Skj21Bdvmsm9ijkdcA98s569hfB5TZlNMuE2K6KJtB1JR\r\naaBUpkD+AxYHP1ZHpDNepfIad4aYLXPwCM/jRdl3m2G245GLa7shPtDZtXpJ\r\nwFqbvJPHn0DFfDbvOjphl4wms7vvcunRmgqbCcft9FyLXuCcTkKHp5FyWOdp\r\n+NerdvId84zYcQGy46xO9RHVGsM2pI+TcrPSXzvaB0jPpV6jOWufeG+azgIW\r\n9zrku/rMcp038/maRlXy7LH3pq8PLj6vBL8ssjwgsVaiJrczkKviIR8EWcn5\r\nJMe6yX5kTJhEcZNxZfTVwmbwdDTRioTvUTp68L9mJfpCGWDhLQzOei9upyRg\r\nM+C0zgN5hZnSVYO6Hlwg9vOtgcQcF9sGiYgrfCodZaeoYAo+k+d1SMMMUptq\r\nwG33XEyfrawDWKT4xA7L31kiiJ1kg1WOCCSYwRWVLRplCvfswkXhvZRKRDoG\r\nGRh5CPKJ4zgIFt4jMgxxuv6WEs2wZGUKeRCthXhcHKm0a/tVQNxCT/WGk/U4\r\nKhRguYtCks29xCkg8mJtC+mF2mhf4Zhu/cI=\r\n=NQ54\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.3-dev.41bc646_1659519794115_0.783993500117232"},"_hasShrinkwrap":false},"4.0.4-dev.18b219e":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.4-dev.18b219e","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.4-dev.18b219e","@ethereum-waffle/compiler":"4.0.2-dev.18b219e","@ethereum-waffle/mock-contract":"4.0.2-dev.18b219e","@ethereum-waffle/provider":"4.0.3-dev.18b219e","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.4-dev.18b219e","_integrity":"sha512-84xKyfFvrdqv7XEOtb3ny4B0c11PzB0a2hJRiNT3C8Gp4N1x4At2D+iZjMfjn1LPoPnqZtRCad4bX5is9lz0Zw==","_resolved":"/tmp/300042bf60e0e042f4395b1944dd6a2f/ethereum-waffle-4.0.4-dev.18b219e.tgz","_from":"file:ethereum-waffle-4.0.4-dev.18b219e.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-84xKyfFvrdqv7XEOtb3ny4B0c11PzB0a2hJRiNT3C8Gp4N1x4At2D+iZjMfjn1LPoPnqZtRCad4bX5is9lz0Zw==","shasum":"66816287aefc11a678ee76cd9da9a3aca99d5a50","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.4-dev.18b219e.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICJgn9IG1wHDcEZSe8565ousIvj/WYDyHa4jvhlf6YVNAiEAufYeZAxZkLIKDnUo5OxiHAWdKplSiOB/t5LKuyW5m/4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6kR8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoUNg//a7xTLpQIPJDcDwV7N4N6STaSJ4Fg3jFQaQ9tfSq/MJbmohGB\r\n7zs5ZAHWiAPkm5vpp69hf8pB7WU3OO0w/eexUbhhrAerXEx1CLiAGKuM+5Wf\r\ntGm0IxIrHC6ENo5IXf+aJewY8Zl1ODjbiqXwcQ6n33UgM8GLr2lK2ZyPLv41\r\nmx2nSzYIUhiBkT4/buzJLdcapeF5R1jQWEqAtSCu0s/MusatHunzlOBOA22R\r\ndhB2ypy9yEo3tqieueoqoyzwprsaiR/IwVYjdOvmoCQfw17kDedjeAhMHFzk\r\nhY4dd9E3GgFKbI/GEXjbriuIIOBzJvFECLLr6l+fyjvFqKYs7a3cplP3iXg1\r\nvROr3RRcvjie8fjNKf9TVl0oX+vs2Bq2WyrS1xdbbwO/Rp2Sy6OqTH8mvstd\r\nXwciP1QhFqrL+odTREAKA+mMk+oE4wCbj8GN6CautrS68De7xnksEriuv/kQ\r\nd34/+az/vIJUh8RW5s476CEW+NporvTblT5XtPkx0TGb/Pm/+JUOrBSoxVnR\r\nTNg6dFDQ5rXm3tlbO62EQSQrxu38iraElCEEWAGfPMei85aTiVKGYrbziW4K\r\nzJHYS5r0TVM6CW7vYoyFLI4DooDWf2tdiiyCHLDtLzjO+NGXJf4L0WM7vubS\r\nSYHBVS6GPFoqM8Ej9TSwEeMZvnsK2l6TRcY=\r\n=aMeS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.4-dev.18b219e_1659520123949_0.11990941316062043"},"_hasShrinkwrap":false},"4.0.4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.4","@ethereum-waffle/compiler":"4.0.2","@ethereum-waffle/mock-contract":"4.0.2","@ethereum-waffle/provider":"4.0.3","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.4","_integrity":"sha512-7e5/mDxxmVKOI8oy9KHTjO2k75klf97SxS7Pw6oO+NZ2K+QjygMxMolonkQg5CDFhD63WLm4dpiqqxzBcqFeuQ==","_resolved":"/tmp/11c82e9f73061fdc85533a9ced43fe57/ethereum-waffle-4.0.4.tgz","_from":"file:ethereum-waffle-4.0.4.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-7e5/mDxxmVKOI8oy9KHTjO2k75klf97SxS7Pw6oO+NZ2K+QjygMxMolonkQg5CDFhD63WLm4dpiqqxzBcqFeuQ==","shasum":"7d624f4d9f2896a2cb7c6169ba793eb0462f8806","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.4.tgz","fileCount":20,"unpackedSize":24523,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEVlwQ632Ug+5nkaWCTOMIdEy6u1W5M0OnSg7bDO3e8gIgX0XCSHwISrrGacQ60fgKJPKsQjTWDfKyfJFKQ43YMMg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6kcZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrm5BAAnWN+t4yPdcpt7pJVe747Nny6joMXIUIiMMdwp3AuRXO6IbnP\r\nmQUtz5xQhAX2mebyV8SrgbNO6vC3nbWNQ7tztBRWWVlDaB3YpxyJW5TPrRC5\r\nx6GAgPjavxu2UF8XjojvGiw4E+DHqP40hsaRKiL6W0RHq7KuZw4DyNoUdwT+\r\n65kl3yXetPJL3QL85/vgMyrkqP05H3QyrmyAn5O9bwvcpSzoLW8J8bGnTHQY\r\nBOe5572/Q9eW42vDxYdoP8O03CcIHh9e3atKj68JxUVceWNEPi6jglbnClgu\r\nooGB3bW/p0nVUAWh6HLz/V4p8zuj3lJgZcmHgrZRfsmK17A+Ad7pRRnU8SJq\r\nTpNBRf9XAwVCSb0T8NebynQokPZuKXXCuqnhRrguJB8WEdBb9XgaoHtxvK8Q\r\nEUIF8FIQUq1y6Z90XUVFUGQVlqTT30irzFlJrmGKCNn4p3qx4NpfdlvZ3aFu\r\nXCmKIMNpEfYfx5RU16Qiuto8NGgytYiwmDIo/nF1Vq69cciZflm5HgBjAOWr\r\nJZAczgipa1yIvSoa9j9+vUbmxzZHeMHHcdi0MTqGRuTELy958nj3/AhJFMv8\r\nnfUJYUlbXfnDRJUPOXCCqEuBByiibOM0owmsj4qS76fYX+rZSONOMvC5jELU\r\nFSwFZX9XDA3ZYHLjPWv/dfbhlM0oevJRd8o=\r\n=/lVK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.4_1659520793224_0.4763175747787911"},"_hasShrinkwrap":false},"4.0.4-dev.e7e18f6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.4-dev.e7e18f6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.4-dev.e7e18f6","@ethereum-waffle/compiler":"4.0.2-dev.e7e18f6","@ethereum-waffle/mock-contract":"4.0.2-dev.e7e18f6","@ethereum-waffle/provider":"4.0.3-dev.e7e18f6","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.4-dev.e7e18f6","_integrity":"sha512-bKOaXqTtsUcXnQ0qXj6+npDrRRgX8okax/pRUAUDh8W7MOLju2EkHZ1xnRXvVOUZdfE8WxdD1F0D4Zq3k76XXQ==","_resolved":"/tmp/fd6e3f7d7983f503f11bdcce6a0ea762/ethereum-waffle-4.0.4-dev.e7e18f6.tgz","_from":"file:ethereum-waffle-4.0.4-dev.e7e18f6.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-bKOaXqTtsUcXnQ0qXj6+npDrRRgX8okax/pRUAUDh8W7MOLju2EkHZ1xnRXvVOUZdfE8WxdD1F0D4Zq3k76XXQ==","shasum":"0a1afe8f9b85f8f85e5d9d1756baccda26bac74e","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.4-dev.e7e18f6.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMU6MWNs5My/15fr0RRzP9zECxHGxan4cI/0UBx9ysVgIhAJvACCL9TYWdy1o98Qyq4bGuQ+EpFMmlTqYZEFsD2oCQ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6kflACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmodxw/+IWfDmYPxhJ/QALVcQARBozm9UkZxM/N+06pQaStKJiV0NV1x\r\nf060GmTV7qBg7Y41PWHPg08AQRyoVvhU4DdsFmUlumMAbeMICvkllf4ubHsS\r\nEzrVMmvIt0xNCh7T1eiVVyGOh606+IP8/FygJUJM14VHzShd+BHshZi0OOG9\r\nY9G+xY+1mQRUPKsYEyrdww1eAJ9JJTray+LwHjrKEBr4tvEuC+//hozXF6au\r\nAzjvqXLajhKvlYCUpsTDHuek/It9LXSvrl4DJk6eANa4gllsa78CiTWCCHwp\r\nmfeBRkM/BRmzHuewDW45jtpcEAGZWgPFqoev9SqhmRorsLaQl8caaXFUcXxT\r\nDxG9f31CCXZzOZZ7NBG3FGEPQkZcbq/rL9E9gL9Skx5eJbjdWfUENOO2AUVF\r\n/CNkdhm0QpzPhZcVe6RW3BQ4/COUAvGsxZAPQCvoe+TcWuNc7oPTIpRaO14/\r\nBt3P7fjAVxhPFgkoT3c/ox/O5Xknu/Tf0aWRIF/gouGhJ6d7vYaQxsnZ5D9x\r\nFEOt1YRnMgN8Iw+DkX3ZWgGTTEIlsfLHlEuoE+9TMuF7ZzncM2lzsxtBr8Hi\r\n+xSTr9HnLdaQ2cMMzFE/Kr4L9F1yDoaP85MBDOIynfH6YWD8ocdNpFrpXjzB\r\nhjFe1bW3+hUkHk+5Xf6qlCqBFeCJetS99Ts=\r\n=f9dC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.4-dev.e7e18f6_1659520997500_0.5867853510113821"},"_hasShrinkwrap":false},"4.0.5-dev.8eb1578":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.5-dev.8eb1578","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.5-dev.8eb1578","@ethereum-waffle/compiler":"4.0.2-dev.8eb1578","@ethereum-waffle/mock-contract":"4.0.2-dev.8eb1578","@ethereum-waffle/provider":"4.0.4-dev.8eb1578","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.5-dev.8eb1578","_integrity":"sha512-lzTt/zmQiZEvkfabcNmv+B6otlweL1vpHZeGIfVo9MaQIfQkApA271gpN3GjscNj144Yg2OieaUSLNbxoAoD7w==","_resolved":"/tmp/d75f726b2ab353a15030e5f09d5f31de/ethereum-waffle-4.0.5-dev.8eb1578.tgz","_from":"file:ethereum-waffle-4.0.5-dev.8eb1578.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-lzTt/zmQiZEvkfabcNmv+B6otlweL1vpHZeGIfVo9MaQIfQkApA271gpN3GjscNj144Yg2OieaUSLNbxoAoD7w==","shasum":"5c1418e227916545426cd7efe1f3f457e1fbe74d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.5-dev.8eb1578.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFbiTiCklSTGvLTTcB+smloACyuRHRmyS9Ej7xMNk382AiA871OwA0rRvq0qC3fQ0721nabubkfhyIXJ+CpS6bt5gQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7PbDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/9w/8DnK9yS6TzbX8ha3LRGUENIzTpo7a/Io0xuB9/OsADW3VdFXo\r\nOL2ZE5oYjei1Hs5RgkYYMmm3WaXvY/OcrL5ScdL+0AKgDP7bIWkZAdLzEOY5\r\nEZT4Z7Fkd9J01BiXOIuAD2+r0YzdU4Jydgc3IJr/CFmxS5VXmtDNLrw6UN6g\r\nR+puwbt2TidjUlkqC8qCCZ5fDBLsYxxgTJ0TcZLMKcJJ/F+ZAesrJYOsrlR2\r\ndfBxHZcXoAMqpv6YyGz2xiGXXVHBFLhYFD+dwvhsWeYIfkAjbD1v0qfBbPIe\r\nS6sEaSoamuD8gKQ4NR3rM0/mjV1N0mHvDq1/LIVEsgvlKvQZKSya5Dqejb6m\r\nNX5RHku4Js+KLpT23T5Iw/SiQcEtnDL1rfoSuweRqWnP9FpKOE/KdaSjK543\r\nifrFw2qdS/mYVzG23X3IYOrf4vDtLlTNVfzfVQI9B/zMyWVCGigTPd3YqNnO\r\nkCjIHBiJlqFufHeT5xeskcrZrZQ4W7GBxRMgxbOtnEuyZqwTyjp6SJXKUSOH\r\navoDWsLVY/gPemsCAvjZUqRjDfwkyZ3mZTwrwMFw0cda+Av56sXhcSPJfeDy\r\nP8me1oaIe/TUEWYs+p6o5BWhxoXWXBl4UN/S0jYVdq7d9l7mg8XYeGusInKt\r\nxahLzMXjSYQgFjRCq80GqU+ybfIey11OBDM=\r\n=3yFR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.5-dev.8eb1578_1659696835488_0.31112764401961"},"_hasShrinkwrap":false},"4.0.5-dev.e22c4e6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.5-dev.e22c4e6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.5-dev.e22c4e6","@ethereum-waffle/compiler":"4.0.2-dev.e22c4e6","@ethereum-waffle/mock-contract":"4.0.2-dev.e22c4e6","@ethereum-waffle/provider":"4.0.4-dev.e22c4e6","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.5-dev.e22c4e6","_integrity":"sha512-h7oknol4Z0VABFd8z6f36ho/tbG5mph0LzmluXOuv3QwchSo3Yqfh5qCun5DpA4mNfVX76dr/kGHjUcsMOrB9w==","_resolved":"/tmp/e2ea1494214ec7ad11cb808f663699b0/ethereum-waffle-4.0.5-dev.e22c4e6.tgz","_from":"file:ethereum-waffle-4.0.5-dev.e22c4e6.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-h7oknol4Z0VABFd8z6f36ho/tbG5mph0LzmluXOuv3QwchSo3Yqfh5qCun5DpA4mNfVX76dr/kGHjUcsMOrB9w==","shasum":"ca60928fd42bf9558446ea536552f2914a1f4b6a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.5-dev.e22c4e6.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHqc+Hx65lWLazHMX8y1LV+OvZPOHNblutAncqjjJTfGAiBe6zoewsYW9xK0Mowto7WGmKSzEkahhH4+0Y5zu8GsVw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7RXoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqTbA/9HdQlzpdj371xgf5DoKj87f2JT3HfiAwXR5U9zfyX1D2r7uZX\r\n83fA6EjpFFdNfuFJQZYbILn2XE+Mk9kYm9APm8HLkftK4E3WLs1K+gLjq/oD\r\nH74++UaVmTa9xOKYTwZw0Lz0MOjlntKiC+DAZGVU45VEpa8zyiMI/ncJzGis\r\n143Fm344Pkz4Aj5yC8HIkSo+xvZslXjmGSrfr+q4tfaay2Kp73u8REdkcpEX\r\nRt3xHiuFyaBmQkgdMuPiwXlCFcaZT8fPcaLVnibwGfvDualHJlSuVTePVxUz\r\nx9b8PWz3NO65ntKkrlMChzC76/EI54ma09rDoJbo/1jCJ8gTZKSBn4azG3sj\r\nsqC+0KqodM72KdOXkeMdaWzIn6MZ65UTnO34sviu/TfspU1m58a4gmkWE7px\r\nAhrUpEf3R8xe1rCaQ/jVSxaO11Co6Natfm+ix0WMHOlaf7j4m2hdwbwUaFWR\r\nZInTtv9uTecOSKAsx0gho0AEGelp229QD5sb0zHnFuM+nY6pyisnkhjAsrY3\r\nmtV8VR3C3My0LyFlw1c3H2iQdNeXG5EkCEWNJMmNqOUzbJ0hV1WPt8Ya3CG4\r\nEg3mgpZkMuyeNYGvyzbi1L7wBtL4PBbgPXjMKSeLjm5HHo7AzvfzIkyjivvB\r\nvlfdnlta+zPhBuvC0hf+KkJQB2JPniky3QU=\r\n=xArP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.5-dev.e22c4e6_1659704808457_0.8854186018513122"},"_hasShrinkwrap":false},"4.0.5-dev.89498ae":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.5-dev.89498ae","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.5-dev.89498ae","@ethereum-waffle/compiler":"4.0.2-dev.89498ae","@ethereum-waffle/mock-contract":"4.0.2-dev.89498ae","@ethereum-waffle/provider":"4.0.4-dev.89498ae","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.5-dev.89498ae","_integrity":"sha512-Ph6eHtBDAx2dYUbqDFdvG+TZ48SVMuZpadf24dz5OK2Z72rODnuV8iC+TDqAmayCUZhTt3iWVGU6IAEpJ+/ksg==","_resolved":"/tmp/9e5ddd309e3ead4eec83243a1428ffaa/ethereum-waffle-4.0.5-dev.89498ae.tgz","_from":"file:ethereum-waffle-4.0.5-dev.89498ae.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-Ph6eHtBDAx2dYUbqDFdvG+TZ48SVMuZpadf24dz5OK2Z72rODnuV8iC+TDqAmayCUZhTt3iWVGU6IAEpJ+/ksg==","shasum":"5ba40eca0d210abaafafc91ea83e352189d73792","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.5-dev.89498ae.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQG2n3yCn81GfDxF04XRFsokiDrZLdzw0NvvprQ8f+qgIgHKzmndXP/gxL3yQAOYBLQCo2W66J5AGGTTCGjUfRnRs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi84acACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpbZg/8C3UDyaB0XJTx9/9qb3cJvEnd3XkC1tmfNJB0s4FXAwgHLxSa\r\nzPymm9ARXmopLQrYQKQBAvjoamrNMnJeaLbwy2uSiSqR4VyVTSleEGuTSsvR\r\nbCsb+A0N8DeMmQLjZegb111iUYNs2+fvoKxA7hVTNv8vvAGgbYC60JUivqIf\r\ns0F6gYO56WWPLGaQVIFbMmO0/67/xe4KgQ2S73DBnAqJ5HcHrCJWwWH8ieYZ\r\nU65YZF2WCOr5Bxxv2HWVlfLYlNVf/8jEWv6N3nziMSTIRKzgLKswH07FD9UE\r\neBv4UCspqPcvbXJhF2jD/DhhsQM70dVKeuQqlOfa72gDY4vplArsZH6fbTVb\r\n9ENnQBKCwPIOzCmOQD66s7y0PDZZVn/1HIAzd+WeFo8or8R1lFOqAEETvifb\r\nh+MltFxXaR8DDLD/f+1x8liEULB8jwsawAx27F/I3L2B0cryPb6DGysvTRQK\r\nCBIhgfQmyCJexJ+plk3iBelSElDbezDhpIK+v1CMrJ0ZohTMQuAhXV0+SdDH\r\nCIymzi3GKCGY5j+ryRpgK7neqsGOdc0nY4Z7I8Jm4KDDDmXnvQfosw3DP/Ys\r\nfYQmO7Y9J1TZ22lq+q+ohfsGIUQd9hSDZPL2QORt52Q+xuQHb/SgqO4/01mi\r\n2MkQUmDSZ0WIAZvtGikNGDJEkN6RVQwLPGk=\r\n=IbyG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.5-dev.89498ae_1660126876690_0.049359383370419785"},"_hasShrinkwrap":false},"4.0.5-dev.71e4b73":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.5-dev.71e4b73","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.5-dev.71e4b73","@ethereum-waffle/compiler":"4.0.2-dev.71e4b73","@ethereum-waffle/mock-contract":"4.0.2-dev.71e4b73","@ethereum-waffle/provider":"4.0.4-dev.71e4b73","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.5-dev.71e4b73","_integrity":"sha512-H2DGuJbFgCWLvoFqpn7QuFfC48IiTl6ZX7OXmasItnNK6UU1lp9LPHkNKmXZ8VmS3EhUz4BCayqNhOlvsvaC1w==","_resolved":"/tmp/92d8ffe44a26697fd98312bda6c4803a/ethereum-waffle-4.0.5-dev.71e4b73.tgz","_from":"file:ethereum-waffle-4.0.5-dev.71e4b73.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-H2DGuJbFgCWLvoFqpn7QuFfC48IiTl6ZX7OXmasItnNK6UU1lp9LPHkNKmXZ8VmS3EhUz4BCayqNhOlvsvaC1w==","shasum":"b9a3e9061969bb693ee118e65f282c9bf444c9f3","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.5-dev.71e4b73.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmKMJuq3i3uCwEBC2ew1OEAmOpj8XsEdwA++6zT6926gIgCQx6XfntcfeNZr4oW3EWbaLYp2y3wCftAPL22/B3qbs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/2aHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqmfA//XQesB51xeHRPz6B2KKTPqNgjhM2SivAuWs4ztbtKchUenuLx\r\neIBnSeclDKQV2yz74XwJsQeJvxz3l8mSNDuAlfxP25t8A/U8cfqSpnjbZall\r\nA1/WBH0DMO4x1+CUnshNJ5fkYwlKh+qkXa08G0E7nR7voZG9W4N/7TGIyxsy\r\n8e8aul35zfuRrpJjX+q+UjN8VWJPr/6/QHzv02azGqWz464eDen2/9jJXqfd\r\ndgQCWeDFn25DkGqe4VyqKvp0axudtSeCXD9tK/vg1kEGoQDYINkGN/xjPaIx\r\nfXhCsFk3tt7HG6jNEtMcZ5g+Y6I7ROqO24XTqTO/0pQo7wxfpIm82m4wB5I5\r\nNOMez8XUafDtL2caSG0XKN6Hwv8qz3kJfniNSY6HHI1YTcDPMXjI86wuAQ7h\r\nlsiK8735WVXdxDQBhBRDQxSYNx2AaKkz4zDXPHTM3o9W4xHsg1bh4YT/WEGA\r\nvyhMck4fn9TnbTlwUq8sSe7QrXEbW+I1otcmXcEdJ4CPsYOsXszb58VUOIMl\r\n4NHXyNIuL107P2QhsUV/vV+yPr0GC9aX3mau4r6YnHvZK53pZkVmY46lvSDt\r\nlDhUoTBk5MSBJhFH9Cn0BGjJ3QG8ercAYkds4XKcoySig0xIh4vz4HDreTq5\r\nXQayDDO6p5imX7KSGuDfl22O30/tqc7tBC0=\r\n=0H0Y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.5-dev.71e4b73_1660905095418_0.25606869644646024"},"_hasShrinkwrap":false},"4.0.5":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.5","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.5","@ethereum-waffle/compiler":"4.0.2","@ethereum-waffle/mock-contract":"4.0.2","@ethereum-waffle/provider":"4.0.4","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.5","_integrity":"sha512-av55Tmd8hEdW0E2DKE9NPGNuFL24QnRODU1g4WUYwoXhp+ZLe654Np9iw/ImAYW7BPxKTdZFaV6gDXJBCxQExw==","_resolved":"/tmp/05d03ebd4d4246b7d2ef74e56167667b/ethereum-waffle-4.0.5.tgz","_from":"file:ethereum-waffle-4.0.5.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-av55Tmd8hEdW0E2DKE9NPGNuFL24QnRODU1g4WUYwoXhp+ZLe654Np9iw/ImAYW7BPxKTdZFaV6gDXJBCxQExw==","shasum":"0bb278a59b88796b437db743dd7bb273cad4bf8a","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.5.tgz","fileCount":20,"unpackedSize":24523,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPum3A7ZOBSxDN5cHl5Yjd6BQu1AMm7+hURcDkICC5OAiEAyXbgsOyosxa4zv6X6OswzFi4Lj3hvSvAUe0y0z3lfzQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/3f5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/SBAAmE7Xd7Y2zgAPY7J93SBFcHt/XDn0YPcE2Y1tWZuvFpmH+ZVI\r\nACCFk/LZXpSFvuD+1i+9D92cY529a1F18Gbe5Ck4MX3+a4IXnTYlMmKBTOhw\r\nUSsU3b1zEdPrjvenF8RI3+PrR2S9x4R1UZVCgNoftC4T1D8g9G5QCm713wz5\r\npYz0TXFdblhWqRTFBcQFQxrwjKeEtHfSQZ8Fbft41UXShFJ55qAwnHBdtlIw\r\nz/CpvaDxbpau/gJ2injcCnuL/PcGbIvZmOFH1EsWl0qkkSipFnD8mQjLMCmD\r\nR4hkpVrOadTlku27UqajEUhiXkqKk8RzLkQSipn3+88fbS9qicIIQLPWzKt/\r\n3TD4bir/W5BJBBdKdvWH62cPiV+FcFAcbXkDm4Mx7UpCFsL45gHMiEuOjJZc\r\ncYsNBCKiOLJdFX/Lg3oQc0tHmRJHlQqf3X5azOei1XCsw9m44l5J0u/fANY7\r\nz1abfxIBAjDzKvp5O75AMw609BWc75EVH0xKh+eoZmdh3fQq4gwYkg02dYk/\r\naXRfrV0TqCRJtm09nH5SV94f3JSPiBopO82GE7H5HD/vwok7Gt1NdVuCPQYm\r\nf6Ougk58Bln5A/bVvZ2vYd4zvSKyiL1Icd75HYrTrbYd+snoEzZyJZXV42d8\r\nWM9SAfwRRrabDCp7pjr45Hdu51krOv6BBUw=\r\n=HtFi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.5_1660909560940_0.00861845588631649"},"_hasShrinkwrap":false},"4.0.5-dev.2f8bbd1":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.5-dev.2f8bbd1","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.5-dev.2f8bbd1","@ethereum-waffle/compiler":"4.0.2-dev.2f8bbd1","@ethereum-waffle/mock-contract":"4.0.2-dev.2f8bbd1","@ethereum-waffle/provider":"4.0.4-dev.2f8bbd1","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.5-dev.2f8bbd1","_integrity":"sha512-Jucr8i7Q+E8ZguISKRBpEW8fbVzIzI21yoQozEflE4hroV7lHcjM7iw9gUxNHvWDR+ocyu9uWK7bB1VB3GeNtA==","_resolved":"/tmp/633ed0e9c7b931ac473d7e70446282ec/ethereum-waffle-4.0.5-dev.2f8bbd1.tgz","_from":"file:ethereum-waffle-4.0.5-dev.2f8bbd1.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-Jucr8i7Q+E8ZguISKRBpEW8fbVzIzI21yoQozEflE4hroV7lHcjM7iw9gUxNHvWDR+ocyu9uWK7bB1VB3GeNtA==","shasum":"3cf4eb09b9c5c8648ad95cb0fe60b9c33f4741df","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.5-dev.2f8bbd1.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDww5BvmeC11CO6Q5CYTPmI0lFIIUoFbzEV09/+szAEywIhAIc7evIVtYtXHGVJ3WxUlpjBITE7T5kVcOFNlkUPbPKD"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/3ioACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQyw//cmMJXub09bm3OVmJGwzLjaqoimKYGSYacoMAYP18Jz0T9FHB\r\nr5T8aENdh7hARtZv9ri9s7+znWGAldsMjyzyvXNhoA9ZPWsTOLrPLwgOnYWv\r\ntjosPGeBjjFIGfRJU4RZF0BtK2f5mY1K4apJfYSffWVaoK9BcEKfcAo+AnOT\r\nB6balQRm14j/Vx8ZWLTjoAk94QQ3tXvRln31rRT0MG40U88vXX5hsmlS6DOL\r\nNK8/4omnVA8Rezl25L+EZg0aRf1qIBcguqSJQQE6bDD9U++hGi8c+SKnJWlY\r\nL70J4D5oodboCyKppyH9ENOX9vTqpMgkHlprOlkzDQ2j3dzikZUMXZejAGge\r\na+wcUhdu5qSpMbJU1lt7sl9Pm+LBQsC1EGu4iGXoHJgp/JGDtQGsWp7wXmQ2\r\njMFrfIbD/Z8gn6/bkl46ErRcYXcINzQqNMt+4xQquMpNzeEhnFRmdpwDSmNU\r\nim2d5SwA8ObyB+DDnrIIo3J2ErOBmrcx0FLUvKJfzbfqWZnFFwRgm1JCYuGz\r\nFaX2DdZ40ecZoF0mGhSe3PVpCz2HPgixG8uBK1uCpP5yLmWqGxJBgqqRPwO/\r\nIMPEqj7VHhUjGAg0po0z0LIhrXtfCYdoCtl1hEuuqJxZ4mUYJWnSBcsns9d5\r\n+BtdM4KOq960ce08OzVChjc6B+hR044Zw80=\r\n=6NPj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.5-dev.2f8bbd1_1660909736684_0.655745273750266"},"_hasShrinkwrap":false},"4.0.5-dev.b96f0af":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.5-dev.b96f0af","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.5-dev.b96f0af","@ethereum-waffle/compiler":"4.0.2-dev.b96f0af","@ethereum-waffle/mock-contract":"4.0.2-dev.b96f0af","@ethereum-waffle/provider":"4.0.4-dev.b96f0af","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.5-dev.b96f0af","_integrity":"sha512-QYrCkbhdF5hB3iLJA3Tq4zwStqzYr4mqADRFqEJ96dselMunYaYqQvTfx2He8TR8L3I8IbK7ko3zmaeLYJIA/w==","_resolved":"/tmp/60537f4a22f51d04f3ef33bed1e94d50/ethereum-waffle-4.0.5-dev.b96f0af.tgz","_from":"file:ethereum-waffle-4.0.5-dev.b96f0af.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-QYrCkbhdF5hB3iLJA3Tq4zwStqzYr4mqADRFqEJ96dselMunYaYqQvTfx2He8TR8L3I8IbK7ko3zmaeLYJIA/w==","shasum":"1616c07636ee58b0c803253eb3ac7ba0e859c681","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.5-dev.b96f0af.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsN0u5Z2At/I6C9XbFNsSLTdBead6xbBQoa2PqMqJY5AIhAOSYyG8jBcuqb66Kd9kcyUL/CsPnM9tsS4TgZ/SJb7XK"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDcn5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2Zg//boAoWECcgp2RMaywWm6O+ZoJSIbYEN3hDq7/qNEp9yLUTgSJ\r\nl9fYq0alA/7eum9btWzw8QwM22TbwNDn+pN5aiwwQaHaAyjK9KndvA4kjXWd\r\nK1VOnLSyGLn6Mz5ioyie5VBzlmqY0b2Nz+kdnNkz1G7Il84wkmmHDHTa+m8N\r\nuKRZQxk13tt5fvxbvYGhIw6nO5txXWBfaIxLBDQW5nBgfzlF7nyP2TTJIPZL\r\ntv09/028uCd1rSnIxUqoDGpPdDFB7GD6okN0KIcoVThNolICUCmseGo1Kk2S\r\n9F8U44n2f5gu/KI9Pzjr5ASCOfZzTN/5iYwFp2KQ3zDLYTcYpY00lUjaKFyt\r\nr+QAffmG28jcpy12uSuxKsIxkEOB5lwBt0N8zIbMIcJz9CsWIVgvfvLiM9oZ\r\nENAUi/yMCNhwySQ72cR/i8kxR8055Ue4HhGqCIgyIgkfNmZPssB1WKnuQl1T\r\nkBZCo336iG3klZ+naifRlxvhL9gth7wFnC4xhr1rf8N1jiKJ+wOzKaMSaORx\r\njOM6JMzuD6GnJiS1RRVUL0qy1XT2JzGLJGfO6N2vZBIx4qoleekBO03Lpctp\r\n5Zld4vqzjkp0IM5inVMR0y7RayJxzlNUwFeWCwafT+oDYBDVakq65/WglMHc\r\nqWkJGgD1QKfKpvmkMwicgzVgIOpsmPAZcA4=\r\n=YY2b\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.5-dev.b96f0af_1661848057527_0.6636964909567009"},"_hasShrinkwrap":false},"4.0.6-dev.f0bea18":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.6-dev.f0bea18","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.6-dev.f0bea18","@ethereum-waffle/compiler":"4.0.2-dev.f0bea18","@ethereum-waffle/mock-contract":"4.0.2-dev.f0bea18","@ethereum-waffle/provider":"4.0.4-dev.f0bea18","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.6-dev.f0bea18","_integrity":"sha512-YehIYWNUx21ldf//f+nRj+kdsDWTz8hfMmwdIqPoLwcX5tS+cBgrUdzxUKKmRscIQILkoNLyuUaIZK1z+jlH8g==","_resolved":"/tmp/35ec2e385d748dc77341c88e3194b969/ethereum-waffle-4.0.6-dev.f0bea18.tgz","_from":"file:ethereum-waffle-4.0.6-dev.f0bea18.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-YehIYWNUx21ldf//f+nRj+kdsDWTz8hfMmwdIqPoLwcX5tS+cBgrUdzxUKKmRscIQILkoNLyuUaIZK1z+jlH8g==","shasum":"a2a6c42daf6cb5a6099a00fb6062439e47fed575","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.6-dev.f0bea18.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGFwDsxbF4q8lXL7Ka9extv6VY8mGnbzN2nVQ1tUUxCAiAZsv1+CBoQjkUG0aI14mETdFXTStvl7AA3d6asUAAPyg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDfBuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrUUQ/6AomfdGmS9NxMW+R2KtVFyQMUIoTvSHgUfhgNUX3phzDz5oaE\r\nu+W1M7zGsI+b72lgBYVpAYWKSOjxFmgwYOQ3+CZ3l/UVAwMS+5yo6/WCTC76\r\nopEcZavwUJJyB9mUTZJ4k1CHqZ244KN13nlWIzdcC3OAIAR0NACfGsxI8Ghj\r\nkUHPDTFzXZi3O1AyJryLJTSyHHGc8voTsa3el96aa7NlTZVUrWKADaMTlads\r\neJnO7BApy9nTB85srpUOdWBmm6FEYaD8Dyz8qN4P+ubs9cNJm3wCiCmTqSzT\r\nMoIKv9OiNho1jvRpJ4zByz8J14vg0m9UHJgdBYONpolt40WIZy7SEGi1FGq4\r\n46kezUdqxrKR/iTmxy0otTn7H82JehvcDLSNvJV1tXFKU8jKpHxK5+JEKiRk\r\nkUAsi96CKdEdI8OOnCZZWoPgKMmSe9BwWJ+oh4+keanIPQuhKp6hKX6GrJJA\r\n+4H/D7G3/wXyldrTlSMJYAQkD03Q+ynpkcBGw2Ntfq2qduo6jTInNnyZTiQ2\r\nYVha9Lj2yN1z4eUs0k/4Awi0R1e2kWB7hWlJPxken6mwaUBqF7PyI3dKkXZn\r\nzWdgmJCLMIo9bXyR+PEAgKpQHOk3xFTK2kafwdZMsEYwhLNUnbgFGlnrT96x\r\na7MK+nCPMiCyJULeXEI6eLmtYa08eanEm6k=\r\n=6Er8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.6-dev.f0bea18_1661857902060_0.41869035293582324"},"_hasShrinkwrap":false},"4.0.6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.6","@ethereum-waffle/compiler":"4.0.2","@ethereum-waffle/mock-contract":"4.0.2","@ethereum-waffle/provider":"4.0.4","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.6","_integrity":"sha512-QitXdVCDRoEs/uvOf6Jbiq3BctQMimHr84B1rnalcz70335aTUSmE3teA18x9z3iJ6n6k9MLHelY/mSs47s5jQ==","_resolved":"/tmp/a714a38f761e3b38c6e8175cf8b7aa34/ethereum-waffle-4.0.6.tgz","_from":"file:ethereum-waffle-4.0.6.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-QitXdVCDRoEs/uvOf6Jbiq3BctQMimHr84B1rnalcz70335aTUSmE3teA18x9z3iJ6n6k9MLHelY/mSs47s5jQ==","shasum":"40102501ce94bde1a675840631a2bc561cee44ee","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.6.tgz","fileCount":20,"unpackedSize":24523,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZAjCg5/BLK9kiP6a1IucZtdSoe+rO1ozEeQ3lb2472gIhAIhVJkD8+1O0xaEr4qM/ubPWvCzRxN77w5EOEKeeZLKy"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDfUsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqzGw//VCVJAEIu9RSTK3TmkXoX5nN8s4uNEHTka2vwqCyoyt/Sq37D\r\n5yhMu+7m/nw9HOymbtXFSJSwAeLay/nUM2P99iFyQlc3j1kxruaSX5Avmek8\r\nZY1+HiZV5sFdK9bYR7Yvx6w1h9a/1QZsF7dtqCrNazaXScGx993dszQ3PuMS\r\nWvCyrCkl+gZol3zJ6Ss0BJAgmebrnk2jxwJGyFdg2cA5ySV2uGTSZA4ZTGVT\r\nQ+leiEzg932LZm3T1+bQEkYhRUWTpoKizRw4Qf6XOuMaQW1B91BsVQI2Hvoc\r\nnYUKkk6v/JVzeEVeyGZuhWdBzENj7egpRi5PUuGiZFBwxdLBPzTAb9fTmXZW\r\nW/aeiVEvlrOZOPsJZ9Q0YoRtvv3LmGglYd6i7EuFZbndKvyG5dd73+SFifDl\r\nFQV284DQP8J27Jqw4b5P/rxbNL7ZhHeTodZpTsGawC1YlHKq8maBVQehg6ML\r\nQDndZrgQl79kRLckLXfQakAdKXVwDG15OHYjOzOYGJCOSV3TcPImn7PFyArs\r\n+TU4QW+Dsms9jur1kNE+w6/FTDJrH6xbU6r+RTqo8MOlZVAxg14kN4H0rHln\r\nVpubWEud9tErJNcAKtsdJO0hzHLWFgbm1YaStdYvjChtQykFGOsENhRO2Duz\r\nlJcbP8lgDzIOv+0TYjLcKDfTj/F+hGQx10U=\r\n=ZLbE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.6_1661859116097_0.9308865601063614"},"_hasShrinkwrap":false},"4.0.6-dev.6f16299":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.6-dev.6f16299","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.6-dev.6f16299","@ethereum-waffle/compiler":"4.0.2-dev.6f16299","@ethereum-waffle/mock-contract":"4.0.2-dev.6f16299","@ethereum-waffle/provider":"4.0.4-dev.6f16299","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.6-dev.6f16299","_integrity":"sha512-DqpYPhSuxti0niutvNOBOeMHpPCYOELX5YWtq8bNN7+TBDK+tI3cvqO9ObZAdanfwe0lCQ3wkDeL7owVzjiTKw==","_resolved":"/tmp/128128e325e59b92acd0485da23f065f/ethereum-waffle-4.0.6-dev.6f16299.tgz","_from":"file:ethereum-waffle-4.0.6-dev.6f16299.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-DqpYPhSuxti0niutvNOBOeMHpPCYOELX5YWtq8bNN7+TBDK+tI3cvqO9ObZAdanfwe0lCQ3wkDeL7owVzjiTKw==","shasum":"84360983c3018e9411a0115c0cdea67dcb3c5203","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.6-dev.6f16299.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPyxPT8KYbLdC0mE+5ZJUA9B7nnFMXnyJ4hSKFBvXQ4QIhAL0F8h+2AeRUOsUl75vdq56EnG+ZN/eeSYhjTIOoibuW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDfXXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmppoxAAjvbK6NJrJDSixSj4leXQqGg3wCOO5RH69KTPBkRW4FG/Qa89\r\nnmkh0J7Gbg//HWDGwlnT6uG8Fnrwx23PDlvRGf6n08+rHTRJX6LvP0WSa9e/\r\nsBIW3QrL4l34OVfRYZwyMCTm9wlT9t153UNi2N7xOcqaQUPCXsC45IAo2z9b\r\nd5jN02qzLN6u5WWmJoEGBiNQzSAseTiy6y5oIpb+BD8fpzb8rwzH7XBttN9B\r\ni5Gw7NKR/m0PepxewEeU66eOCiA3bgYVLix4UCN2NFBifv4A68d6fxkbF6J9\r\n1IV3VDX7qy+lSaS8aCReIt9lmBdkaHSUW8S6CbGMRHxAIFrsPiTvFmIDLWYg\r\nGscKz7eZJ+J8VX04D3eah4bKo2s6jPbTLhu2Gyv0BLCMAmkQ/m3gcbAsb0rD\r\nL5yjaL4CzQPF0zWS14NJmw4d8rOARKOMCi88mNeDLQoa9gC7qCR29XXDiuk+\r\nm3UELb03C9Hm3pYjq/4nEVa8oDvVGKDDGOA47WpK7KKZ+Rd60Vc0sXpmAT0M\r\nKO+8dSaxZnJXlxRUijus3zTNx7ml/0vUfCOJ166PTHJ7D9X51HyzRsLelBU2\r\nCixQQllGock/itU7qJpgkgNfqQWaFAoi2+dkjNkGM7ILpixNsFSx4CZl46jD\r\n7C07hPayk9EappKmE2DAKIqK2ZHsELSKAi0=\r\n=5X+b\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.6-dev.6f16299_1661859287054_0.24030722827238415"},"_hasShrinkwrap":false},"4.0.7-dev.60ae4b4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.7-dev.60ae4b4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.7-dev.60ae4b4","@ethereum-waffle/compiler":"4.0.2-dev.60ae4b4","@ethereum-waffle/mock-contract":"4.0.2-dev.60ae4b4","@ethereum-waffle/provider":"4.0.4-dev.60ae4b4","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.7-dev.60ae4b4","_integrity":"sha512-HDXj35kkcHt/pXIek5IDnrZqDF3GvaPnBQmxww9d+4Z8M+fUgTy1BLz6jMH+qvHfjsn1Bo+/ixCSi0sLrJxmRw==","_resolved":"/tmp/f41b8d64ea8ddf202383fa6316ee7213/ethereum-waffle-4.0.7-dev.60ae4b4.tgz","_from":"file:ethereum-waffle-4.0.7-dev.60ae4b4.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-HDXj35kkcHt/pXIek5IDnrZqDF3GvaPnBQmxww9d+4Z8M+fUgTy1BLz6jMH+qvHfjsn1Bo+/ixCSi0sLrJxmRw==","shasum":"2c76c47043121a07f0042ddf5dfb94a9967ec6a8","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.7-dev.60ae4b4.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQ+tcQqP2jmSx5ZLIeocdS0J+8HMYyQ7Ji9D4Btdez0AIhAMeo+yfezmLP2X5grZFI+c9UlKNGMcPm9FHGh/yQT88z"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJHzmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqohg/+KYrx36UUncmlNWIOJZdFc0yhMhm8AmLrhTLElHS3/F11S272\r\nNyZLPqgH5OJJJpol8DzVaEjtbenBBmzrqtg+NarJ8NzvsPCzQ/GExjL+PnG9\r\ncQwbHHv1To7kRrkkGrGthcKt7tLjoU/6Z4IeQwWeQcUOwGYpqLs/cKL0PM4R\r\nCJiGZL7IPS3pf2L4nWE/I/cSmdBK6wzpDdVI/U0ITl1IhmTW2Y5wOrksPZoj\r\nbGGyWloncJs/oR4im8197on4csmC4fBSVSlC6R+pRGXHOW4nzI6Z4Z3GBI6N\r\n8egvq6HWd4EBzR3qaidUL0rmW3Pq7wY9LFqY03T71jaVtLDhWWpbYyx+ZhIn\r\nnWq+wjFn9QZbubNyGMo6Dc1RbGGpbNRGrA2dCw46rY0RtlAMKZDTz3764/pF\r\nul3y+4wt8prXIAqwtwknpNQ6M47+cG1xt0IpbD2+uQR4iLVYoLzsIdoAoD9D\r\nrYXvmL2I403FDPGjyv32faAXe8uHm/VOE8YSsF/fdVnyiZFkI6MOHOvvUjS7\r\nbW9gYr8Nf861G2Xqss1TMJO4V6wH3PsRm8LBYXWFTpC/0htX76dzq03u0GrY\r\npuECGyywqEHv1rqrqZjr8oW0ROXpJXe1Ctjx1iKcnRXCEW4WnlRBO/HTqx2M\r\nTYA7rPlrf3nn8ux95EShXyQzQfDgcN6ANSY=\r\n=Oq4/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.7-dev.60ae4b4_1663335654147_0.8971993751040099"},"_hasShrinkwrap":false},"4.0.7":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.7","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"alpha"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.7","@ethereum-waffle/compiler":"4.0.2","@ethereum-waffle/mock-contract":"4.0.2","@ethereum-waffle/provider":"4.0.4","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.7","_integrity":"sha512-bs0dHJEZhFwRwZ8FXRpPdFe1qjwsqO/8L4fhueUxrCIZCcvO9Reh1/MPTq2hX5y2KD5bUxtFeaWkqmcr/MeI+A==","_resolved":"/tmp/f69431cc8ee26ec9dd6095cc0099b8a8/ethereum-waffle-4.0.7.tgz","_from":"file:ethereum-waffle-4.0.7.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-bs0dHJEZhFwRwZ8FXRpPdFe1qjwsqO/8L4fhueUxrCIZCcvO9Reh1/MPTq2hX5y2KD5bUxtFeaWkqmcr/MeI+A==","shasum":"75cffdec1b4ba56d57d17575878f63be6480fea5","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.7.tgz","fileCount":20,"unpackedSize":24523,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBps/HiUCeI5+auM7MHpq/FSlCi9K92LImvmihCFDNISAiAD/PHCs+MUr47Owo+eXiKnjl10PiuD2IPVGe0q+84/bw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJH1CACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYOBAAoYGH0TVajs+4jLyRphlYy9ika4jx4kVCDwZv/1JsVmeX9uNe\r\n5X9quFdYYs9yootZsncteQzifNeF8HNx6RkK6alzbWdW6/B2RX3WtxAAbHd2\r\nFOuuFQBJq6FEHyenaWjacv+njPmzenVYTlQjAcBXRkfMMtyjobScEBMK64rr\r\n/H+lWHEaOOuemW2N0N4OuSTB8uVN35wzQ+3tYKvqA8yI39fbIkNoFbIfAFEo\r\nOu5E3dErkPg2ZgVdysZ3eHPVxAH0Pyyg5745+VQ3BJY/Z2zyO4N7TwDPAt9C\r\n8p4Ts8RFsEQIqIpfC+43L8tsRZJs/RAoAGIBR7jYiCQGWmT/nlx5YOLECEHf\r\nMfZs2nV3SyMMViFWVla/MroMZKt3+1cVHEQZLL51gJzkPBAN3UN0otnHAJWk\r\nNAkSb6weZz753h+ubLN5YVS/tbc744ilUPChfqyOyz0PEHgnnnA+SUhRvwMC\r\nAqLsvlaBXwxkezevzXC81WCLnhgD8T4WrO0d4sZDK7Kv04e97pwolEgltTSJ\r\nGd2M5OppL4OAQsaOrJh/MJ9P9i5fBRZwQbWlLxMe3ygE1qeamk4aImbB7SqA\r\nhZ5PJ1YN4tQ0oTOrX1xZKnFvx/xRaa+ZYnaiipM1DcziKAi+NrSATCO1xyr/\r\ndKHW5HLwEzy88p9fvX5g9b/J76o1wvRnEls=\r\n=0RBO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.7_1663335746159_0.9833617734133009"},"_hasShrinkwrap":false},"4.0.7-dev.2d19dde":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.7-dev.2d19dde","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.7-dev.2d19dde","@ethereum-waffle/compiler":"4.0.2-dev.2d19dde","@ethereum-waffle/mock-contract":"4.0.2-dev.2d19dde","@ethereum-waffle/provider":"4.0.4-dev.2d19dde","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.7-dev.2d19dde","_integrity":"sha512-b+toHauQbOT32ZRkk5E+3kXosePlM8VtkTYSfGJSCw03Luo6SZ3ocoqgyTj6UNqeOsp7UhCzksjmeL6IGcCyQg==","_resolved":"/tmp/d483ad4273a4c62afad025c8bdc2e76d/ethereum-waffle-4.0.7-dev.2d19dde.tgz","_from":"file:ethereum-waffle-4.0.7-dev.2d19dde.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-b+toHauQbOT32ZRkk5E+3kXosePlM8VtkTYSfGJSCw03Luo6SZ3ocoqgyTj6UNqeOsp7UhCzksjmeL6IGcCyQg==","shasum":"c88afb5e9a735af678cf78c6231ceac1e1b35211","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.7-dev.2d19dde.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3WLDh3xzx89WTcWZa5YpuQYF42uqyZqW3qILs/8gRLAIgMdUclpQNccZvG5cCuY2FHXicopJYWsYBQjm0jjqSIkQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJH3xACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr3AA/8CVZxCU3209KMdhhFwdue8AF+y5HqV9kr/z+O+lWwKR1+07eb\r\nIn7oLnO+ZA9qoDCGUuqMvNycHbXOr/YqKaoXGUpb04sIaTlbzvxhKv8WBaSd\r\nE6j/brGLpgIu9bRykkS3Y2dHSm2L300Qh3e73Npcv/gmdr7tXYnHcVAWVXlD\r\n1ArpExem/p6Mw3wMegwZW7iW+NsrxNyA2TObwXIJuCvy2fz16fqe+d9g/4At\r\nkbh9oEboAoORVRdyT8aIHC0XqAOH9t8WADugooQFm03I1UCWW30UPMCyZCHQ\r\nm4FAIk1ZBxz+hasH/qSzMj1ReHKNmrlJkmbhDX6j48iMh2SvA5XHtfmLD7T+\r\n2Lsd2QJbuDVv+ckpTlFK8I6aHps9qsZd5HjbJ6dWCoEw0sxPVV8u5G/zguFN\r\nd37D9q4IkASPTyjPYuzxGSJQbPWXneH1XQ9B924nyTSCbt+0KKKDFhmn0vI3\r\nEhjioy51wPPquYrXFUdUofC1R9N0tlZzbX7KpTpfauFQXEcCkzbT3hWUO3tK\r\ngEtE3d2V17if7vs/sQGW9+pi6e7hRmvBWyZj+meOwp5O/rSo3KGp5YIZ50BG\r\nG9eTiQSOdUZX4Xf/81xXSRWlQPMQWjEas+h/qK+Rsxz++wBNZTsJnF7EtFox\r\nl7vTmdk0ecFneWD/H7Jem1fcazFKEC6vMOg=\r\n=E15g\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.7-dev.2d19dde_1663335921547_0.34804913646345614"},"_hasShrinkwrap":false},"4.0.7-dev.dd21fb0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.7-dev.dd21fb0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.7-dev.dd21fb0","@ethereum-waffle/compiler":"4.0.2-dev.dd21fb0","@ethereum-waffle/mock-contract":"4.0.2-dev.dd21fb0","@ethereum-waffle/provider":"4.0.4-dev.dd21fb0","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.7-dev.dd21fb0","_integrity":"sha512-Tr4sd8VaBch1EXsfd6DAVokkZ10DC2agu0JzyKy+SFc4ScGZXq3pu4pD2MEEdGqJN6Y07IFP9NkSDCnf2dkr/w==","_resolved":"/tmp/10b512e69af733cf1b99d836e2ce4361/ethereum-waffle-4.0.7-dev.dd21fb0.tgz","_from":"file:ethereum-waffle-4.0.7-dev.dd21fb0.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-Tr4sd8VaBch1EXsfd6DAVokkZ10DC2agu0JzyKy+SFc4ScGZXq3pu4pD2MEEdGqJN6Y07IFP9NkSDCnf2dkr/w==","shasum":"ed777ccdb12d480805c7df39674abbd3b5289d12","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.7-dev.dd21fb0.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9iCRsyiVChICJFBE6e09ohNACs5GLZrMJrI7BFQ/C/AiEAzhDrLqEMxmeoKruhkHTs+Tx4JqU92rsMnJGLZVExGpw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJJebACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoiBw//Wc0J3oEQDtJ7e2TJSMjmIEgvJFNF3ssA9pQi41ksemSSD507\r\ngA67Ffrq2+c2l+J6XGZ4TvdbMyGyvOGNvcEWxNBqCquKSmUSu3ABuyfGqCOS\r\ngi9DgeJF/SVghRne/AusvoqO/gRTF5OwPapiJxL88CeTzir8OHmbzYwiOSOd\r\nVq79Kbm7UqaBsqZuh5CsclBt5L5mLLUOqiBzjngkzf9r6dO8MMANIkw+HyKP\r\nWMGVLG4Mm8P2OqshHh1G3Vbg0LSRN9B6oF32BSkpxgKH5Rb7wxTWrlggNKdm\r\nKnojjH5xtT6NAmB3DBvxOEWq876DQUsM29X4+03HkJWZyVz2T96k0luG/mID\r\nzlBwIbx9XfrCqFjWs6wFlVaUY7ahvSADZFI/o60dpctEP6nsHtc2OF2PSwac\r\nMYPoLMR6pkoE+pM7q1AfvEq2xqcNbT83Yu0HW6DAJS71ajynm7EAd2p59Wwq\r\nKk/SG+/o7WtIXG+5XcJUHbSje9aEDrQd9cbdyjhgiernyesG/a1jZlIhgDEE\r\nWKlSh4lx5EvCAyMNiGP122dxmyZiVsTuiz7x+Q0gIz6ZM8yJtv/7DAdnzKzd\r\nF+L/2uoSCAW8iY+iSGVmayRumfLP6/29Xd+VOFLE2oXlKL2WVdsky3yfw00n\r\ne7nyVZdfoslHruRDHUvxANBi/Eo+3zjrziE=\r\n=3osH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.7-dev.dd21fb0_1663342491027_0.5285469896421593"},"_hasShrinkwrap":false},"4.0.8-dev.cc2dc55":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.cc2dc55","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/index.js","module":"dist/esm/index.ts","types":"dist/esm/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.cc2dc55","@ethereum-waffle/compiler":"4.0.2-dev.cc2dc55","@ethereum-waffle/mock-contract":"4.0.2-dev.cc2dc55","@ethereum-waffle/provider":"4.0.4-dev.cc2dc55","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs --declaration false","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.cc2dc55","_integrity":"sha512-1KTFUVgebUevxZGTDDI1BAZIDIZl+V2o8hPMcLDGqSIolZX1qH9ygSiWCDviIrrbdK56MKez3vNp98XL/21bBA==","_resolved":"/tmp/5ec8920a6d9418b085cecf6f5816297c/ethereum-waffle-4.0.8-dev.cc2dc55.tgz","_from":"file:ethereum-waffle-4.0.8-dev.cc2dc55.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-1KTFUVgebUevxZGTDDI1BAZIDIZl+V2o8hPMcLDGqSIolZX1qH9ygSiWCDviIrrbdK56MKez3vNp98XL/21bBA==","shasum":"ec1ce7627a60c6f3a6f631c68764e718cef94981","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.cc2dc55.tgz","fileCount":20,"unpackedSize":24581,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC89BFaKgGvVlwPPLNQ2ko7f0bD3j4XeMtqA2Y/x4MZRwIgd3/Y2t2RmHxEan59YIfVJddEODB4KFdAAwZYcaHtZ0Q="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJJ5sACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpFXg/9G9m/kDKuUOn4dhSJ6LU+kCtHx1cylMTV2cwyMeASjR1CuZ3g\r\nMrjWsBwGi8Ot+5bJGF4uIOu1LwTZl4J1e6u0tV24QlS95V47I2uYEH0Pa+iT\r\n17ZOjiJ5K+fmgBWAULZDLVRG8eAU+g44n9mSoX6vFsh6couehPNvUnvNSx2K\r\ntNmXF4LxMn2LEtuzZa4Y27Rgt7xtBOBe2V10ctiE1or/2C15JM/KI5iCSi8S\r\naWFBYU024mHnoQOz0ftwDpeqFKpcdgXFoC3hEZQtMkz3wdrj7IGWgqonfUXU\r\nxm9tk2I9F4P9bEEtjFh1bP02ek1IeargFkd9aUk6PLBv59ePWDnRERqscCKJ\r\nHgtJFFXDEhmIOYM2EhA3/i1rK9SGKHeBEDtUtLFiJLN1p9lEpP5vxtJgTQcn\r\n0KLX8Qb91MDnBjutOtwzYJxynpeR5Siojmmn0lBFND3TcgFESiSclH9CvRw5\r\nA8tyQbFQmRZJEyxTJuOkcx8H3U8HfXgGHZgFGQJQCLGsbjiesxlF4NPtvWU9\r\nK77HscHhGcX4tCeuf3ut0pCTYlS6WTgvWrRZaQYScLdrCNP1s43eTXazcF+S\r\nW1ulw/U32wuY2BPvekLNE8mHhiq5d136TzmacZCvvw6brSLNAYDMvv/C7QVP\r\nhj7NBwaxYirLqlNkUctjWqwrhmMi9VXF9Jk=\r\n=wYH4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.cc2dc55_1663344236100_0.05965300254728101"},"_hasShrinkwrap":false},"4.0.8-dev.cf5427e":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.cf5427e","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.cf5427e","@ethereum-waffle/compiler":"4.0.2-dev.cf5427e","@ethereum-waffle/mock-contract":"4.0.2-dev.cf5427e","@ethereum-waffle/provider":"4.0.4-dev.cf5427e","ethers":"5.6.2","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.cf5427e","_integrity":"sha512-XUlcjI70GJyB7wTCMFDVtd5yqAiyUYUv26F7Nr59IsXRSooEQmMzItMF8p2SuUbUrR3755rE2lH+35QqL+Tq5w==","_resolved":"/tmp/bd881368b9283df855ece59fff0c9d3b/ethereum-waffle-4.0.8-dev.cf5427e.tgz","_from":"file:ethereum-waffle-4.0.8-dev.cf5427e.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-XUlcjI70GJyB7wTCMFDVtd5yqAiyUYUv26F7Nr59IsXRSooEQmMzItMF8p2SuUbUrR3755rE2lH+35QqL+Tq5w==","shasum":"9d7b9f2096866ebfcf226d2948e79a337bc32d14","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.cf5427e.tgz","fileCount":42,"unpackedSize":197261,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeYsVFI+ZCKBs4WLhxstr6sMZvrrZ4EW238klAL6WoGwIhAI9DyshtAIfJpb7rlBSobBo0E2ph6AyK6ZT05Dibi1v8"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJKn7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr1cQ//RIX8Eoq93/wyBOrPzVTHvHdFgXaDQnQmgePT3qdUdl1iy6Sl\r\ne7NMJfkWIT55viMelt7mvfQPYSy2zxYoF9jHUAMOU14GmO3n/SRzQTp1zNsO\r\nx3Y3uCaoCln3MdxndgRpCbIeT1FxzdLtOc6rwZa/DnSrFSZbpF5LN1SjX5Z1\r\nvSxRMabYtt7VOjqgE8OM/yrDgJe3IUuEOCv/w/x+vrqDtkaY+H0omIQPbjSi\r\nzZ1jJH6S9mEWCGq0aTXjlsPSUU0FMSIAX4PYOirkQjEm2JGiFxJqa79ICXjJ\r\nPCd7K67f2mB3MBV4hfw8etQW0yNwIVLhbr3vLaY1ejivGI6FBGEBtjIUGl9V\r\nFa5uh2PMOAW/ENbdFTa+fLGVUnFTTXqJYjJwBdoGGgtS586/c8+AZoHUtok3\r\nkNoOnoSzdLZUrhkW8/xONkCOYerVR2r+xm8cYCLNmjQ4I/fGcvGbePGhiVTP\r\nSlITGTMF9Q5APPWYFJS/+AVYk5fz9Vf5G5dZAX6DRuUworaXgQlllDEObPh5\r\nu/9hTH39VOQJLdrD9HnvnEYzop7/sbnmd05jlXz1IIZhloU4hhWpsYsf9qVC\r\nhxUpY4tes17ilP/snhMJoayBgKgMlV7glr3tZTSKJzi6rqMn4k4fQFCTLOLi\r\nw9XYLlzWQl4BLX86yPQ+2o3KAxqzxn1Dbz8=\r\n=TqZm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.cf5427e_1663347194803_0.47816612516522516"},"_hasShrinkwrap":false},"4.0.8-dev.d863d0a":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.d863d0a","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.d863d0a","@ethereum-waffle/compiler":"4.0.3-dev.d863d0a","@ethereum-waffle/mock-contract":"4.0.3-dev.d863d0a","@ethereum-waffle/provider":"4.0.5-dev.d863d0a","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.d863d0a","_integrity":"sha512-2/GFZQKFmKMf8UV+DxHu4HJTqkX7gkJpnTlSLwpEfiuIOf/P2Jkgv7S5jduNvxOsELUUCW1DXKARo8Gn8vYAQg==","_resolved":"/tmp/ded1a1c27be1dc0e3731d45a3361111d/ethereum-waffle-4.0.8-dev.d863d0a.tgz","_from":"file:ethereum-waffle-4.0.8-dev.d863d0a.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-2/GFZQKFmKMf8UV+DxHu4HJTqkX7gkJpnTlSLwpEfiuIOf/P2Jkgv7S5jduNvxOsELUUCW1DXKARo8Gn8vYAQg==","shasum":"c9c1940f2bc68a9a69dbf7a9f4dffbd773fa9db4","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.d863d0a.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsJWmjxDeCTNem+LWVQzKwki1xI4xna1t/pZyKPCLHrwIhANl50YePPpGUCrswnFBPboXHcfIijyp8Dq0gCp/DML9W"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKEfBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmodGRAAkKlklAugfNqRWQMoAtSozntO8q46rW5nzklkapA0hwm3mN7i\r\niOtF3GGR2bQ9noZfzT51YWHKQ9AhCTrxhLnKi4EOqNgHWhbcHyGiCiy0uG6N\r\nlhKKrWOZMLiiLOc/4/XWoUDwyou70V1qrDSJzzUY78qIQWKwLkYn3nsagVfa\r\nDLRDFOEACYrQpvSS/P+zFLiwSG9KePE/plk0CqkyONwyn2x1fVhupLJWuUCk\r\neVgs2R9RriF+TifZgsa2ZTc46gYciA42MKz6uXU+Pv3kx7t67l93OvN/ETJa\r\n6TmDfPH8sqioP9jfZbfsBBLGJBRkww1PIrokfapsOIEJc1BhQZfRsJRFl54E\r\nDQugXt0eqi6G1wgFl8OXsIxXjA+qWgN9bwSX4dWuxnMcKOaP7MYctK9eTIIG\r\n2+8GkSHZw9WAsu4WH1Yr8zv46dFLCqgJFqwkT/4HgA6RAz3k4aY8ZCFLLxOo\r\nPUJMxVqxjd66d9eLcoH3/z7CeTXqzHkFdetyx6CyvkORSGnQOkMPeZx1QlP/\r\n8wPacIAo342kyJ9PGb4e1MWa2xPhg484kQ3KZRl7fbdPHU6aR9+fDtSEZyF+\r\ndTI5ivQRL6wnJER/6/o2Mo9mvjIjgFHeVkSMYDQWw5hUuhzMeXkbXhRpxJHw\r\nxNiFX8WO+Ou/SnkowqpK5nMjMCBqOwhsQWI=\r\n=0AoS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.d863d0a_1663584193623_0.39648330823165323"},"_hasShrinkwrap":false},"4.0.8-dev.0c72c63":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.0c72c63","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.0c72c63","@ethereum-waffle/compiler":"4.0.3-dev.0c72c63","@ethereum-waffle/mock-contract":"4.0.3-dev.0c72c63","@ethereum-waffle/provider":"4.0.5-dev.0c72c63","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.0c72c63","_integrity":"sha512-FgGqeCutr0bXv8PrOR21sh6vM85/V+LF4+AOaciPyeBQbSsY45UdZ+kBBtegMkIWlT5QblLbWA3EOXGRxFSaUw==","_resolved":"/tmp/1910aca8d1d002567559864385cef018/ethereum-waffle-4.0.8-dev.0c72c63.tgz","_from":"file:ethereum-waffle-4.0.8-dev.0c72c63.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-FgGqeCutr0bXv8PrOR21sh6vM85/V+LF4+AOaciPyeBQbSsY45UdZ+kBBtegMkIWlT5QblLbWA3EOXGRxFSaUw==","shasum":"5dcd0694718b98499fea066cbbfde028638a35a4","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.0c72c63.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCD0n5O6EIwXCRUZWTKMl3Lw4akPo3vZBn2zuxHQ5eS9wIhAKIvEnyFo9idpNeDkod6gITwUEpOcI5dKmCXELbcWUpn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMYpeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqgTA//Z35C/EKGf16Ix7uQ/dqgg95RTzJBF+Rn5xRdxayNqAf800DA\r\nihJ9lSylpX5a0ULbZgtPRvGMkuLooXYAlkeOeM2WBdeiuAOhnfYuO7yvfO6T\r\nxwu6tNKhAUont3iujvacFfntsvM5VRRKrjRqVOsOq/muOsnuoS00RJdjbXUF\r\nhd41xgonRR7csPpGGnzye1DAf9qSkRbS0G0JqXNFZ1KaPdNZm1zyZ4jVTGav\r\nST+RIMmliR/HKtXnht56YZzpZNNUP++NzeST7vpvrX088mN3trpfeWNUF9dh\r\nXz1WfHlnG20jmsPECfveInJsPM3C7sQEBzbxVCdL7kJT34DsAt+K3aBRHzU2\r\nQBaozUXkiiyYhlKdQb5vYpkSWycn+eBhbpDN0Mu5fd8C/KInbVoz84ceHB6j\r\nkjGLfIvYJIq9m8QbmoM0Mw9dYDIFs+Sdscn3wyhxnXkiGlGJt6R9p04LXwUt\r\nRrguS6exSGxeee1wToyZgbCTLp7zLrs0cg0+ASJh9EshATlZrNcUK/exPAOg\r\nSlOMdhuPp1dRGG2ZP0ctJA021ZxRjmB0Xf+NdPGR/FQ+YN3o3aknXW1SsfW6\r\ndo7mK3yEj/Bg40aH8K6mVqWuOb8eUqAPpOiWwRM3d1aXwn15uv2kmmf0JpxC\r\nspxzFHhxlSyy15Ot/lZlRnaR66zFH/scTjg=\r\n=LRHo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.0c72c63_1664191070606_0.38943824359394164"},"_hasShrinkwrap":false},"4.0.8-dev.f3d5029":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.f3d5029","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.f3d5029","@ethereum-waffle/compiler":"4.0.3-dev.f3d5029","@ethereum-waffle/mock-contract":"4.0.3-dev.f3d5029","@ethereum-waffle/provider":"4.0.5-dev.f3d5029","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.f3d5029","_integrity":"sha512-RyQr+Ajgr2e2b6ZCgSzBdLCBPBEJRYn/wj1SVitKSINV9HPYRzyDQ9DeOdnHPk5fxjLpNAB3fQ7MwqKxYfq/lw==","_resolved":"/tmp/d8ef03c607559f53a113e57cda1271c1/ethereum-waffle-4.0.8-dev.f3d5029.tgz","_from":"file:ethereum-waffle-4.0.8-dev.f3d5029.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-RyQr+Ajgr2e2b6ZCgSzBdLCBPBEJRYn/wj1SVitKSINV9HPYRzyDQ9DeOdnHPk5fxjLpNAB3fQ7MwqKxYfq/lw==","shasum":"07040206751fa0dad516a56fbbb8cca3318803e7","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.f3d5029.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDFLw0HVA5PQaA6AVc4SjcUCWWGTxCKkMU7VVDTMowXaAiEA5/v2FLkzCxwNLW73l10K7zfKyz2ljqCcm30XSoHb8R4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMsVCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoX2xAAi3r9WSVJeC6jQSfU5SqUXIerj5/wXpjLXVl38/bTe595nl1z\r\nUB1eIXH3FiKwT4SRpwJqmIYZ+RuAxWLGuDBhxISFKzk3oocLfdy8JvFloE7A\r\nUmBIQ7lPJSXtORzSZ4D6FqSqvBUSFXrtc0oqhLR7Hm6NqgKw7PEMLHgWUNQu\r\nEgpCtMZbFALADHmH3J+sdVwephd//YPJLXe2CL24xsSYGo4ZqrEFeIzCCnWd\r\nwJOIVsJFPh6teRPRGqq0Wk/qoCSb7mMLBnPbtXVjl5+ApKYUOY0wVYUyMJ2a\r\nqUluDRO3LBHYHBzhudj3hlJUBgtNdkwXLXp8c7H8SklsW33NGTG9Yb7Kvf+P\r\nnnLuz0h1c6ifHxjHv2owl0et6qygco/1jGa/l9xd+K7TRuJUXc8zzGoCyFPL\r\nyBGond9Q94TlNeq5G/Kx0vAQTHwLUl5fLiN6DjMeM9v3RtedaOfooIkdYG8R\r\npMip7MPC2Ce5/eOW4ZiVNaGoZJgIeuTU8BKIMkBCLEFIe7quGAywm8LWEjS0\r\nYfZmOvZaenZ/znwMieAuRDJ9byBwoYPuz1ALm44TvvHpBGkQUfqj7zSaAEje\r\nEnJ8LCG0gGih6cYq5PvkstWQ0Q5/kU5m0/p/6OiVMCbix6Advxb5Yr6U1XhC\r\nkTW7Nxj2Llj/c7Hcn864vuB+OyZrSAzxaf4=\r\n=t1mP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.f3d5029_1664271681987_0.10167021412486732"},"_hasShrinkwrap":false},"4.0.8-dev.379ba2f":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.379ba2f","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.379ba2f","@ethereum-waffle/compiler":"4.0.3-dev.379ba2f","@ethereum-waffle/mock-contract":"4.0.3-dev.379ba2f","@ethereum-waffle/provider":"4.0.5-dev.379ba2f","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.379ba2f","_integrity":"sha512-0Nm3glX7TabXq/SyT7DaME8T0DNEGsPxvp+OjkgGe5xfhzDnlbqpZ5d55n/ehsFqQkx63/Vdckn53chJN1c29w==","_resolved":"/tmp/83efa3efaabcf3392fa1301d28f3355e/ethereum-waffle-4.0.8-dev.379ba2f.tgz","_from":"file:ethereum-waffle-4.0.8-dev.379ba2f.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-0Nm3glX7TabXq/SyT7DaME8T0DNEGsPxvp+OjkgGe5xfhzDnlbqpZ5d55n/ehsFqQkx63/Vdckn53chJN1c29w==","shasum":"751fadd91c09e0aea853a948bc68bd639de2add9","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.379ba2f.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEwnM/V4Ou0qMyeyRnrHs730PAM2zKtUai6WaZ9T7TM/AiEAst2C9g4B7ucY6kn+O4R/4Mmz+lz/gLjvd+FqKTlLZ58="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMsx2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoOlRAAnvqmgZrNYZuT7vzyuHld+14Xbfq6WtpMk5nv/YK4t0SYP4vf\r\nfRuljj5O30SDTfW5+dpP7cReMcg1oCFGY6bBdz7pewLPy4IH+K8b2ScgYBg9\r\nBbolF1fGmrtd1X/qWupv/SNdBKc0Mt0We6SzzUYmtBmE+tyoYrlG74Pua2OF\r\nEVeKbaxuAvogmkeZufQtY897j5cbvrVHKVktq3YkDRYbEQWQSTlf/6gBK8lc\r\nJJvvHp5hYQH0zNnsLbr1SpUKFt/17BXPlsgb5eeStbjw2Q+FJOeXakrc+9sf\r\nMj1bYF1Ne3tqf8vbZaYcLb5SmdNMcRV5/09pB7ChG4JL2ScMsIMfLhc+9f6S\r\n6fzwxhle9vKjXBy/9sGVdaQhSo7GY8imlFoLesceyylxcQ4smukR41Or/pi+\r\nzbhoKr0lPlFRTwZzIGAGom/q0i76foEAYcb0hRwyXvYsRaxwvAZ7COpDLt6o\r\nSzPnOFTMlgJpg7JVRajdbJGj+dTQ7YD2QoHTlLnGtgi3fVADtYqwU6v/6x+D\r\nePTDNh3kGr8UQnY+MngdwnaDuaCR+xrVYX666KOn6yNSKBjE/U94+G1L0TmY\r\nRbBjh50mR0MpkDhtLLV1Iiq7r0y64HkktZong/JayfOzvHuN2TjImhyDpetv\r\nZtGdvUPQL9A10xhUjvilTNvyNVQyH6cwAIo=\r\n=h24W\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.379ba2f_1664273526259_0.29464002688654056"},"_hasShrinkwrap":false},"4.0.8-dev.9bdd800":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.9bdd800","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.9bdd800","@ethereum-waffle/compiler":"4.0.3-dev.9bdd800","@ethereum-waffle/mock-contract":"4.0.3-dev.9bdd800","@ethereum-waffle/provider":"4.0.5-dev.9bdd800","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.9bdd800","_integrity":"sha512-SvASmPnih0rwckkKx800dJ7bvbRSExrvjHWi9a8dN/XUnfwd0r0L1H6vh18waXCYEt28K31J7ahR2LYz6JKETQ==","_resolved":"/tmp/39643a83e80ad9a7f5f82bbed226ec63/ethereum-waffle-4.0.8-dev.9bdd800.tgz","_from":"file:ethereum-waffle-4.0.8-dev.9bdd800.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-SvASmPnih0rwckkKx800dJ7bvbRSExrvjHWi9a8dN/XUnfwd0r0L1H6vh18waXCYEt28K31J7ahR2LYz6JKETQ==","shasum":"731f7d87d1dc66b39eec75376c97432892029868","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.9bdd800.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDM84SVP1C3x8lkeaMMP9hmmhTpxQeg8tU3WGq/voIkQgIgT7DBiHDaPA/c4+1OqSsi/X1RPEkDxzEZvmvBKmbicvo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjOtPkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrbdw//WmWbvAoYwWo3VayAYjMccNsg3ZPUvMTv+LS+cdSTMyYQjvMv\r\nGUGpbVgGEXozrYLQieiI8An6o31D0L2Gb2zV7qa4UtDElt34/2U2F4dwcp9y\r\n5oCIuDdtQHnZzAKbU3xtAuW+Fh3zNSdwyYTxXHYkUChgxvQ4fps5tdvMUwo7\r\n+wcty/Mq0YR0nKv/ejED4bgVtjygot+Mg8Qo5kt9UUn3xms4TXZ2X3yoHYC6\r\nnLKDqNcyrTjeDIQCB4QzolyyvOt+tuF9C/8rzh4nNBBy/6Nb3jZ+CnNNygKr\r\nGEOlInDn7FdQkbSDl+zexX4p5gOBsleYxAuRDhLTbxbrEHFz7xlTr9TJr3we\r\nCGGM9JXe/TjlNT4CKnJzWoDDCHKUE/MGxHVzirjTeTRW/hG4MLGPXM906EWp\r\n2kF7OSnCROZIdNxVJDB/jtP8ZW3FriJ9znfdEBrsGrHRcCZoIeXVMs6rgfEz\r\nVZuwP7CFparuLAyBGEyFWLrN2+Dh1+alBcGS4bwzDwE/2Lj/bAPMGfFtMToG\r\nvNfqi3myMn0JbK5+YYYG/uQ7gSfUSGnyElNoSsGticB85obfny0Ffbzxthnu\r\nl1W3RsCgXrDWnem2u+anrwc+qKJCBMshmKm7ZqnCG59CFnfNLkImhusKF1J9\r\nmqpKf4ty3cS8+uiRbwTJVy/Dgei+v8tATR0=\r\n=of+1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.9bdd800_1664799716279_0.18209274044785428"},"_hasShrinkwrap":false},"4.0.8-dev.06c4b26":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.06c4b26","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.06c4b26","@ethereum-waffle/compiler":"4.0.3-dev.06c4b26","@ethereum-waffle/mock-contract":"4.0.3-dev.06c4b26","@ethereum-waffle/provider":"4.0.5-dev.06c4b26","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.06c4b26","_integrity":"sha512-NGfaP2voMRbQHCqA2wk9xx43dhCIl/k/h4+bAPGMBMsnZmwKcDMJ9rfs9NAYJ3gEuH3CS8xsaHH2Ic8hLCdaRw==","_resolved":"/tmp/a9f553a22387804e7e3d12a8e8e54f41/ethereum-waffle-4.0.8-dev.06c4b26.tgz","_from":"file:ethereum-waffle-4.0.8-dev.06c4b26.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-NGfaP2voMRbQHCqA2wk9xx43dhCIl/k/h4+bAPGMBMsnZmwKcDMJ9rfs9NAYJ3gEuH3CS8xsaHH2Ic8hLCdaRw==","shasum":"82585ceb147d414d003d85d00446fb2e93f659ee","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.06c4b26.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqsjACkg39tAJbHMNc8DEBkdGwjtEKkXfH/cP0PhRrUAiEA0bABu5WEPq8ayXomzoddXSDSKFjGHbrqkdbveyNWqVg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPB+3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq7/Q//axefYeg+Fr30TmEAkzCSycuEpXzRScvaj1Dm7z/chY8vLUqh\r\nBK5NBZ1OORxul97WxeyFupzmznDVcJFJaNHBIEk+QIMduPT+pNKRiEnkHm83\r\negSIGJHQeKwZqp7HV8dZpQ+UoFHaKJ9hrv6OT/UTDmfVi9lcnZHO0AHMF95V\r\n3l2U0bkOT41DBeN632yJfmp60hxuYnPgp3HfBYSjc5cTler+xnCvRHHBS5Ma\r\nMCgXqtT9wDAD+Lrfq9OR37zwz2eIzeq8bbeHNGaJeTQguxe8luENMGLbgXqk\r\n8aTRES/HERBGmEnGMACrk/oCXPbh7ay9Arr9/vZ1LOde6jYMD6SPVxk43dPT\r\n5y5qdo+eO36j+65Rlr/OKKks0pRWfNBs4BWPmPO/MJ4t5qUCcApcfvLyMe8B\r\nC+OqH2qp6bPBCmrIDfTjY0xSAupkcI6UOb3G+PfduwBZXktbVTcJEimy4nIO\r\nDBvcMLGRR8Fzm8/LPqpNsgYZugXEJowU73kqXvypOaYr8hYSG2djWfq4rlPl\r\nfnQvAm2QoL9jM01P/OCHCJSoCjT65CWQdf42/3FcCWLt5TvHR7KoD1Z58QLp\r\nSLG48e3SnTZEViyBIxRHX0VyI1rizMsyB5tDTd2ka74WBsBXYgpoM80BOdnC\r\nr+mj/YxKpiyhUEuJOY/k7iOrqj8fR0BATn8=\r\n=karv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.06c4b26_1664884663079_0.7914946662827311"},"_hasShrinkwrap":false},"4.0.8-dev.90390a9":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.90390a9","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.90390a9","@ethereum-waffle/compiler":"4.0.3-dev.90390a9","@ethereum-waffle/mock-contract":"4.0.3-dev.90390a9","@ethereum-waffle/provider":"4.0.5-dev.90390a9","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.90390a9","_integrity":"sha512-XvpBgUHldCvIEcfwZ5dB9iA0/4YJoEDKj3b3gGiK2Kw6yvhFNQkt2KyDB1xS+ogYadJeuvycXw6Fx4vMOryNEA==","_resolved":"/tmp/6eba5afb9901cadcc57cc536edf1362d/ethereum-waffle-4.0.8-dev.90390a9.tgz","_from":"file:ethereum-waffle-4.0.8-dev.90390a9.tgz","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-XvpBgUHldCvIEcfwZ5dB9iA0/4YJoEDKj3b3gGiK2Kw6yvhFNQkt2KyDB1xS+ogYadJeuvycXw6Fx4vMOryNEA==","shasum":"6414552519b0f538fc7540e441c41d3ee2ff716f","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.90390a9.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6z5xQQUPLNjog1PmK9+0QQHQ03Q8SeSrI3UXRfEdveQIgCh8/OSpVxoV0lNF5nD/wycl9gEsnbxT0gs4N1re0UKo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPFNjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr5rRAAg7Z59pEZ4jiWsiXK7App+3RM0Y4yiFONmCrGWjvVRIqDTogM\r\nNH3uKUbG3SPhZ/hq6aa66s2VW1T1orD3OpzMPI7t5RbjGUEjOmWZGAVUv0Qu\r\noHC4wmO03R/MvN/69QRvATW5bQPgoP+dLvBrzjPJlNuy/X54D9SnpIdaR2nO\r\nz95VnP/TXZCaI2oAY7qq2L4BfsoI7fNecdTZdqCtfCRFqXX9jOLfXN5F6AoA\r\nRV5/ADav+99YNQArA/6iL2XntrY1vP3zrTq1Tb/sd8DKYNHMPsiYkRELHeii\r\nU+/5CE6GTK2vKMocRJwMeJnao9Q6JpD8uqd219X4JbUHO7bv/Not9F9FoaDG\r\nRCbqAqmG/U2ffZ5RrjIS+EfWDh9hnLvQEyNTGVgbfR7IEuy6vHbdpRVG7d7S\r\nqTYx83S5jrw+Fl4fISUruGkTa21nbPsXvhVdozEKMvh4IM3LhnzOkwMgjrOY\r\nbceJ7zmGg/z21Yp6mjO3d1uyBtx0Gn8NYJw5zQA7NL0OuvQAjQwTeFF8eVOb\r\ndD2Vf1rdKXhUUywGefnlVEMzucKRlEr+5w5SRKWZ7pemrUqeOS1Ui41ki2o4\r\nK43UOKvPANtFVUn9hv6f/gSyoMxP7lSULMSubN2jMsJjlL56uJFRKDHmmihi\r\nXjrzfA0KLU7Sx1Jd9F9McjSSWMOIIzzXwbc=\r\n=tokz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.90390a9_1664897891264_0.5403984523826855"},"_hasShrinkwrap":false},"4.0.8-dev.cf42065":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.cf42065","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.cf42065","@ethereum-waffle/compiler":"4.0.3-dev.cf42065","@ethereum-waffle/mock-contract":"4.0.3-dev.cf42065","@ethereum-waffle/provider":"4.0.5-dev.cf42065","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.cf42065","_integrity":"sha512-+yb/nSNSWEYsILRtQ7JiQd2hNqt22ja7HYSlpmh6ucjqzva0KKf5GFeZ4CC0lD1mVDKjVjC5Aix0NsGYkQvijg==","_resolved":"/tmp/38692d043a8a14f1b534b59a7c7473a6/ethereum-waffle-4.0.8-dev.cf42065.tgz","_from":"file:ethereum-waffle-4.0.8-dev.cf42065.tgz","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-+yb/nSNSWEYsILRtQ7JiQd2hNqt22ja7HYSlpmh6ucjqzva0KKf5GFeZ4CC0lD1mVDKjVjC5Aix0NsGYkQvijg==","shasum":"f54cfe86ffb6a56a54865fbd08d7570112ac152f","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.cf42065.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVUvF6bs4Atm2R64iNuF0H5Z/F8iSs6n8QXZeco+RPqwIgPAnuZ2esU+FQkfx80x1NDBe/fQLKsuUddx/6F7XIIDM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjX6blACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqEVg/+ITYF0KG8rLkGqGpTiY+v3p4QGn+k8pKGshm4qm/dozCPiwU0\r\ndGSd7m3EjSYGy4rjEmNIThRitZKMzi4RFofZVVAr9lvd0IY4nzdq0f4yVCGn\r\neGL6DDDLgeA/DkF1hxu+PqQvsqSwyhIErtDM29TskGdEnHADMu9J1gX0bJpT\r\nZ6vtH4kBCsNfsHCifGhrTX4Mk7fAUBraZtzxPw5lut/F7Nq6Fl2PQ1jhe5E4\r\nvew3JVodvw/Nw8N6N65NGjXC/9hNds4ud2Ed/2wUk63XlAoFy+6fD4ZBDapX\r\nKauPxrIfspRNP88tboBQC9Qy6PApEjBwyirWQOyBG/fSxdrf00gQFK1+J6EO\r\nbEIrM/urprOit+9KEgCdEeZCf4TszKRTdvtrM7Hop6TJTYVCqdMPmTa02UG2\r\n3xJZwKBghZGlscuNfl5WGBJeyAy7cB69wx05zIaSqpzHmDgLww++3b2h+r3e\r\nWajtM2gpO0/y1ZR04Lwk0sXDwiZgqTSq8tvQmsQRep8ng+MBkT5o3lbJxQCA\r\nRvbiZKy0sQId4WOm5qSezbUBI+YArlE/WifSBuqN+UGowIrqJnWfSEtGRTSN\r\nyywgG+RGZHuEA4cqK2VEd1fmI4bnwrUby/XzrfYRIdGnhLqKvK2heP4iyJS1\r\n35X1NNHenA2z8CHcSrDfdLN9298fmqX0rCU=\r\n=Pi7H\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.cf42065_1667213029439_0.251632562203302"},"_hasShrinkwrap":false},"4.0.8-dev.8671be4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.8671be4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.8671be4","@ethereum-waffle/compiler":"4.0.3-dev.8671be4","@ethereum-waffle/mock-contract":"4.0.3-dev.8671be4","@ethereum-waffle/provider":"4.0.5-dev.8671be4","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.8671be4","_integrity":"sha512-DpMrdqvWwntg3vYuTSssBgqUx5ch2kD7wmdkeBSNayBfLlh2ejZkA061fYuPEmBKJJhMu74nTRfuDgLE8zOubA==","_resolved":"/tmp/212a915ad9f43c78d762f9f717509fa7/ethereum-waffle-4.0.8-dev.8671be4.tgz","_from":"file:ethereum-waffle-4.0.8-dev.8671be4.tgz","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-DpMrdqvWwntg3vYuTSssBgqUx5ch2kD7wmdkeBSNayBfLlh2ejZkA061fYuPEmBKJJhMu74nTRfuDgLE8zOubA==","shasum":"68f4e11437ff0b8d27d9565889e20349eb1154f4","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.8671be4.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcDj+uwJ/gx7+xjOruBosN9QkrfZOfnNsgBvDrfuIfaQIhAMmT4HCoZJY3I2NoZ/WOoVbs/3BUzFo8McTccyyuZ7xm"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjX9x0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJphAAn+4+wUO59plOLS3Sg0vEH7Zrd8kCQReKWmZATVfAubT41s3+\r\nRaNHnCm1k2WpAK4tYIIY8XKtpW+MKUYlrmFnM9nkIEiIArxYuRx8/tEE82kP\r\nbTd2OkcMgq/df8JocjF+aItK1irVZk16SFCTOJkDyuIUtT1pvzkWzOe36uCf\r\nZ8Dy905qomoToKvX/mi3eK5j0jg/MJ56uV3oRLMuffUgV4c4metfallHMKXZ\r\nIvI3I0mY1CI960yzUQPTlfgQ3M3IatA8jMSIj3yzq+VYvWlqx9W5bZeDNvMQ\r\nzuiCEM4rEmWdEKPZBFCIDzHlq8aw9VnEV6mOeF8KalmRIYPhduM+iIGZp9n+\r\nk3v6M8kT5btH99FBMwO9kwQv857Igih1F6KFUlryDTEg1xsf00Dvc/Zlc3eV\r\noqu7AVr2EXO8CkRmBdVye2//hic7JV3ZQkkNoln5NR1NBBH12Ss2f617/+Sn\r\nMwFDmZKzeyKYDG9M04s4bE70EvQlYUwG+yX/0Y7wJ2Ys6ci7M1F1+/J19AO+\r\ng/ORPNdSNBf6sOvISMf+ckhxTofUUvj+I7kjv0EHaz/Ot4tc4MPtppCo188F\r\nI3d5BXVzb0jBreY0ZpHqTQQ+XOZa+wGxJn+0DAjKmzydBUDjGrtRnTXgtjXF\r\nok+c6UmavxF8Q3hO4SgCzYCit5F3XBkY400=\r\n=MoMc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.8671be4_1667226740323_0.08021755301384514"},"_hasShrinkwrap":false},"4.0.8-dev.4541f86":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.4541f86","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.4541f86","@ethereum-waffle/compiler":"4.0.3-dev.4541f86","@ethereum-waffle/mock-contract":"4.0.3-dev.4541f86","@ethereum-waffle/provider":"4.0.5-dev.4541f86","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install following dependencies with to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convinience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.4541f86","_integrity":"sha512-hjXv0y3io8xnrm9RxB91B2CQcmnM0pUBwWdfYRZ0KxlEWAJbba8HTU7elSuqUScvWR/DgKrmcw8pEqqAycu7zA==","_resolved":"/tmp/65d9e030c29ad3ae89fe0b70bfc1dba0/ethereum-waffle-4.0.8-dev.4541f86.tgz","_from":"file:ethereum-waffle-4.0.8-dev.4541f86.tgz","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-hjXv0y3io8xnrm9RxB91B2CQcmnM0pUBwWdfYRZ0KxlEWAJbba8HTU7elSuqUScvWR/DgKrmcw8pEqqAycu7zA==","shasum":"e0923888e1d80932b319a316b7e98ab1fd4d8f1b","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.4541f86.tgz","fileCount":42,"unpackedSize":197710,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxMMoQLun0Pp2ogAIX1Xrzirad2N7uSam624wd+sUhWwIgRPnbIDRgaJEOLtDgvGbnXZUM+XOAJitUtroxmu18dlQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjX+2eACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLtQ//Y1ZoG6zfUhHQYzbmLvInt1KwprlyKWgAOhEkOD70YlhaFBfb\r\nU/CBfRZw2Pw54KOZt9qBfAoUfeUMGIPER+wVSuGE+ay507p9h9sBL8jfJQsy\r\n2PGLhe93+ecye2TLVNp6pispsVU9r81ZrcJvgtF2SiBR6m4TldnwUZpFXj7B\r\nFV4qSACf/O8ENnAZdNkDzYl6m+C9bd4dTgoUU6aULYtpBO9ONX5jrpQjOuIK\r\nMonfIhWhUCTbFNBO4zpbfXnt3p7HH4C3eaWtxXjGbIkyKbAdI4XYImAfKbvH\r\nUUo1lYDdksul4ZCFDXr8Wxt5bpUPpSSEVHikiULX29NOiJrRaftSFL2hyfXN\r\nSsd8ynqJusG412mO/jfmfUC/m3kse07LmcgmclkpNvszbuLqhvrvN7r6YA78\r\n5CJ2gX0sedu7Q5HBlgEtn4PbDAdzq2fpEHG2s0uejWbMuNAGS/oTBcJGV/DY\r\n/Mi1Ub3/JIEWpUYvoZdHKGbMuQNQJnjUK60S0bR7rYQfkCfB28H7WeNaSBBI\r\nxwKITwqV5GiLtsA+O72fEsInZsWH8u/PR9RQ51VaEdwdq945gYUwmiPUBQ/H\r\nBhsuQQ9Ho8bb15HThCwTMcIyf+CU5ataAdPgUJqVMAVGUbUOCRNmLVe9Imvf\r\ng1mUhEarmaWfG5t4POplKO/spIcMS5wki+c=\r\n=3Vvm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.4541f86_1667231134614_0.9226019312410199"},"_hasShrinkwrap":false},"4.0.8-dev.4946c9b":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.4946c9b","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.4946c9b","@ethereum-waffle/compiler":"4.0.3-dev.4946c9b","@ethereum-waffle/mock-contract":"4.0.3-dev.4946c9b","@ethereum-waffle/provider":"4.0.5-dev.4946c9b","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.4946c9b","_integrity":"sha512-SuV7eeJvaC2SV4La3bvkRWC7SqPfjQZ/BUt2+tCwu03YWfiKYgxMHyFmmXUeVKe+zmH55K4i7M7aBP8ClgSOtw==","_resolved":"/tmp/4d0365be27bb30acc28e36caeee48eb2/ethereum-waffle-4.0.8-dev.4946c9b.tgz","_from":"file:ethereum-waffle-4.0.8-dev.4946c9b.tgz","_nodeVersion":"16.18.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-SuV7eeJvaC2SV4La3bvkRWC7SqPfjQZ/BUt2+tCwu03YWfiKYgxMHyFmmXUeVKe+zmH55K4i7M7aBP8ClgSOtw==","shasum":"be2f3d53a791fbe1011f8b960cec291741fd9cb3","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.4946c9b.tgz","fileCount":42,"unpackedSize":197709,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHOfm802/W3LmonSWApYEQvAteL7Qv5r6nFd0ORCR62AAiB/qcWvSC+lNyh9WZJLKmba2Xv5P+tVbGUqFqrJlmnDWw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjbRIJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/rRAAi14RUkrZ1ddSk/2vi1Y2k072Yttt+4OM4DNmKUoSRqR7QUoA\r\nwbPBuWWhkvx6ECFqbCzLrsxWOuFIzeiQLR5xsVBgHR+y3e40lZ8hIPPS7RKO\r\neEibn/qRDsCkS0vaYLBHOwVeEg2m0b/SamRspr2eaAjRwqoCJQjq72zmGFAS\r\nZo0In2bRfTlW9kw2SyuFToUaHzSdgvngN77qhRo092dplq4YmYRjhpr0NmCz\r\nQ4o+qQyqBds6+BTOexEB/l7t3qafBTvZ7WaQJIx/KN+ADLdzDLNsXyBPBAb/\r\nbxDNdMDirmhbiOyCjda0N5fFmw7rtvYGHpdyyC2uFfUWAT24MImL5kQim+JH\r\nWh79nccAGD+xMrqQ8Z+XgR1Rn6jXbunHiJDVIKqfpz4oAprMN6atKkzWUIfi\r\nPh2TMfjVdcnUShZyvVV5K9lI+LDtnCfoFki2JIvJ+ZsS3LiQjwkll5CD6S+b\r\nvpsWp5RDZn5nht2Ye15oSxDBAr6WkzIZa5bm9gIXnWbEbreRN+caBHIMAgPe\r\nRVikXPnhnu6DrRFnXccOz7uDf2qfuq1gNZp3MWwDJ7JuzIYrkeAXqV8l6hQw\r\nygfIIUl+1Tq1a0eC9ShGhGIsGWP2vDQ1FAD5j5iXpVteXu1Dq4jL88A6NwGn\r\npt6ESzkaU0NMo+uVNJlQYU+Wo+YHN5ktS9Y=\r\n=Bv07\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.4946c9b_1668092424974_0.036842464084642756"},"_hasShrinkwrap":false},"4.0.8-dev.edcb2d5":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.edcb2d5","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.edcb2d5","@ethereum-waffle/compiler":"4.0.3-dev.edcb2d5","@ethereum-waffle/mock-contract":"4.0.3-dev.edcb2d5","@ethereum-waffle/provider":"4.0.5-dev.edcb2d5","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.edcb2d5","_integrity":"sha512-ySsw5zDOEDdcujNQKO+bLt///dgFRiGKBZVIw8YKB3fH3vo1c8Nx0eE01j5mYvQhvTkb+PXyxSX3s21YZg2mOg==","_resolved":"/tmp/1aff53850d763e1c2f668d06536fb984/ethereum-waffle-4.0.8-dev.edcb2d5.tgz","_from":"file:ethereum-waffle-4.0.8-dev.edcb2d5.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ySsw5zDOEDdcujNQKO+bLt///dgFRiGKBZVIw8YKB3fH3vo1c8Nx0eE01j5mYvQhvTkb+PXyxSX3s21YZg2mOg==","shasum":"177e4c1603d66a989b0822230d1a37a9f20393ce","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.edcb2d5.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDX0anHlTlcJqQuI4keAY78/qNGM0fwzCj3PNLSSXJRZQIgdy4SYIAIsa75FbDnrnToOI24QX198clH1yPBQptwGMA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhMCvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqp3A//TzE3XhKwk+kEgTR7Xv7TafAxTJkmS79uUPWRMAaVCWdA4twi\r\nJlbarYETqq6UvLsSM7qrUbEfgLS4jUZFeOXA1JGEhT+1Jf0Z8Cv/YttwSWaO\r\nIX1id+J54/uZRp6hqDs7B4fKMpqXbryL4T+YCwYc6sQG22Eh1NDuPjUV+tfm\r\nBfPV5AX6JsZ1tQFJebtOgPZsrq0t0LpbF+WBrVjJEoaz8YdU16PcxD+029rT\r\n1JzfBJj1y5CWzUFFmrvtp5EK2VEQNuXT2X9Zia30IyILZad4XZQlzv9rXYsF\r\nwm6fqsyizkgnriLSjdwtQzg5NeVDJHI+HhHojk2t79TxKzaTAwbFgXXx38EZ\r\ntvJegU71ek68ZAePBXPS/CqLk0M1HRE/Z+ChYVYTjqEuImgxIv08Bb6hTQ4O\r\nfUZ6cs5N7En2XNDOOG11oR8bWGNCZKC6u+3sGksc/7Yao+fpcBnLgMxqv6Cf\r\n7U/B1dAFcciCOJa7njUndLwar1+MChDTxXAYbPlk6VfQcPw0cuqZRALVbfJb\r\nCw4l+T8ztlzsP1IJMdwbk3wCQlu42/3Iu8Ji7GRq0P+xhleh4ZeOJYz/dQqS\r\n2/+ube4i4aqg0D/p52qCsA6eh0DMqUwmrOSRzFaIVu7U7gOLTHrGBjljeTq4\r\nwIgS4L8qB4K781O7Oh8WihgLR7x6xpFCzok=\r\n=BvJG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.edcb2d5_1669644463520_0.9207333484218752"},"_hasShrinkwrap":false},"4.0.8-dev.4557ff9":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.4557ff9","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.4557ff9","@ethereum-waffle/compiler":"4.0.3-dev.4557ff9","@ethereum-waffle/mock-contract":"4.0.3-dev.4557ff9","@ethereum-waffle/provider":"4.0.5-dev.4557ff9","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.4557ff9","_integrity":"sha512-iYF8iy8PAdIDJvUrPzq9+8Uvoyf2EvTK4IB103r2l0TjdvYIbFWgzbD9qwJDc1MGxTx2tCog15MTlq6jZTEGEQ==","_resolved":"/tmp/08d38cd528d205d651444be09b48c8e2/ethereum-waffle-4.0.8-dev.4557ff9.tgz","_from":"file:ethereum-waffle-4.0.8-dev.4557ff9.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-iYF8iy8PAdIDJvUrPzq9+8Uvoyf2EvTK4IB103r2l0TjdvYIbFWgzbD9qwJDc1MGxTx2tCog15MTlq6jZTEGEQ==","shasum":"ef8a0ad89cbfc20e35afc999bc550f31072eeb3f","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.4557ff9.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+svGXglqYm6eZykqeoGoRrQqUN8qcxVHn0NZaPMAtvQIhAKKV5ymfPh/T1hnfYVpCSBbhJBAHllCjbQG0qyVUpOik"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtE8fACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpYgw/9HHA9X57Zj/pyKeZaad29Xk2TKhkdDrAKf2RTmkjXeNb5Gnhp\r\nokhjkWaKyuW5HLsG/ikx7yehL7jFJ5wsRCf6ZlL1cZSShlpEq03RB+gyOTqZ\r\nFOzvD/iA5Eo183CDa36YwrCDI5v8zXa+y4osToELHBmEkr6zdvqoI39BnWdG\r\nKU/O9u7lLUsNQ0FKTLGsikCaNzPyTZYp/dQJ3eKvDa5wxGZI9eXURuzOZYpI\r\nNYO7GUjNmP1wuAmrQMlsSU2yth/1AdsfmYOSea+l6Rbrx7KPW10Eaa/UASd9\r\nTmT0HzmIudYMbKXEPwA/DtQpa7MLRM23dPOy0yO2DAoxizLOxMKZWgC5lZHn\r\nn1UoA1sW25S6wkaB7V1W7YoRw8PfU2LIu2h/jOT3EvZ3dMvI3K2txzLU0P52\r\nEAZDOsbObq+ORVMw+a93JKQLHbdMr31+KMrNIjDOimYtHH+5iHfeeCw1RRse\r\nSnC2egsdOB4D1WOmzVr2mhPA9LYWzgjvGXTbQO61Si/91Ks9uu3OYTBoEHpD\r\nl11MDHrhHIFpgJdXdRU7GeAbm+g7uOBN1pcdaJVW69g8jseckJpOh6yAW7KW\r\noOqRpxhRKdP6oK62FjVEHAsm5+FlMlkSpjte9v6sK5mcyFpKHjoLl0uBbWj2\r\nhCKX7OHpvuKKYpR079s8rGLxrAV5UXXEKEE=\r\n=r2hC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.4557ff9_1672761119619_0.3040420752376889"},"_hasShrinkwrap":false},"4.0.8-dev.d4cc0eb":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.d4cc0eb","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.d4cc0eb","@ethereum-waffle/compiler":"4.0.3-dev.d4cc0eb","@ethereum-waffle/mock-contract":"4.0.3-dev.d4cc0eb","@ethereum-waffle/provider":"4.0.5-dev.d4cc0eb","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.d4cc0eb","_integrity":"sha512-nEE8vcZ6/a5KGuifD031wSI/8kwapftQC6fBgALYax4vh7zZ5nZ4eci5yrdOvJafrSS8vaxyc17bIkq4BiWUIg==","_resolved":"/tmp/a294fc8108770733bee847d6a743d9d3/ethereum-waffle-4.0.8-dev.d4cc0eb.tgz","_from":"file:ethereum-waffle-4.0.8-dev.d4cc0eb.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-nEE8vcZ6/a5KGuifD031wSI/8kwapftQC6fBgALYax4vh7zZ5nZ4eci5yrdOvJafrSS8vaxyc17bIkq4BiWUIg==","shasum":"da0532df46613abe8f4353a339f898aab449d18e","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.d4cc0eb.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaTup7RyEiPVDP18Op7NNBaUMrRJsb2UZcGVSG9pSPYQIgQ47oF94a/kKyHciqg0sLew8eTAuJnETbD/u2azMH7nY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvV3FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqydBAAmpzj9fpLmocnnPpwaGatzwvjxU29MfKTQGoqgVaePRme9u+e\r\nsJ2Qp7XVY410fDjXWPXQJ/8FL0e1XogNNgU0N41ZYMh6zWy3hZRZVGCd7YTV\r\nv5LP4H5rtBzWgauVACL6BlwkMtov5zNYodfrlJNvn4CeYewXQQTx1QI9W0ir\r\nplvaH88FO1WgCfu8Vcbli562NvOrlMpydscTTaNki7RGbaXKQrMAF0/gBO3i\r\n2J3lJKYBvrZWUz9w7kpSyz9NxjB9MXjWEzwt0NAtpjcdfrB4RwJYzIEmM6ix\r\nVNmsuGAq2i+bmNLiqSVVBk/NAq0NtUWOFMbBkrJa0x3UQxWwOKNchoJxoOg/\r\n3DP5Q5Kw+RjdRo6eHWjb12ZHL0SFXA88k4Q1GI19X2Ii/TT3e/hGBzK7QPCz\r\ngJszJCgyZng7ZNdr29zDnPlmfaUyzXMalN2+2vFjhiCHzRWLJkcf8D/vAc6Y\r\nUxAzx9ywqp4k3BJc3QPIiLSPbRydcZkgkevuP3Q5hhYA08Mc0zlYUVgBm2aF\r\n+Ah3R0vC7GG+FYQjviI6v4OId0VREXlHoNR2FUIXjQ5yrJiiXz/l/TVHATtx\r\nLqk1zeKN5h7Rr51NpEtlpVVR9BH1Aps2uL5b3XpUJ/7j8ViaR6s+YtlKzUOl\r\nYbis1DpKVibwN0OAgbkfBeIrm/4gM3JRwdg=\r\n=v9kh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.d4cc0eb_1673354693167_0.7817159628647068"},"_hasShrinkwrap":false},"4.0.8-dev.e1d3ccd":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.e1d3ccd","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.e1d3ccd","@ethereum-waffle/compiler":"4.0.3-dev.e1d3ccd","@ethereum-waffle/mock-contract":"4.0.3-dev.e1d3ccd","@ethereum-waffle/provider":"4.0.5-dev.e1d3ccd","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.e1d3ccd","_integrity":"sha512-6oYGJ1mIdnZ2mKM5r3lnuxYiHYRp66WswvY78mXvRSlB9bnunNmuRd2Ez/3XWBIDNgPHHP4dtJtvetZ2zV1jkQ==","_resolved":"/tmp/a4cd06d51da710b67eb9c45ce6453a10/ethereum-waffle-4.0.8-dev.e1d3ccd.tgz","_from":"file:ethereum-waffle-4.0.8-dev.e1d3ccd.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-6oYGJ1mIdnZ2mKM5r3lnuxYiHYRp66WswvY78mXvRSlB9bnunNmuRd2Ez/3XWBIDNgPHHP4dtJtvetZ2zV1jkQ==","shasum":"18028802a0040a9bb0b0a44b26ea8ba6bcd5a490","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.e1d3ccd.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEPxG16D5+G0CBl97bMmJvVKkvb+P2GJopkbEEVm0SfmAiAXQcl2NyRQCVcTgueIS9ZYulna2T7HWUhcWVbE5zrDWg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvp+FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrTMw/+NZiBvr1HWk83cbkyjF8kCALWlgCmZ+p7q1PQJ2tCrMsd9zt4\r\nGR79dCPQ1OG/Vtrfvfb3slKtyU8krETDjFvh4yqaAbxVL30+mhBqaKNwYFlC\r\nWa71JhzMeqtkMCy2PU6wqHDa9byLo++gLk2bLiyErHukBMQEmYtkSZqWCZGm\r\noG/zslPESsDovqn4KS6/jOjsbMCK14SqRFyfMgLWzyH+iZD9nN2SWPWvWJIz\r\nom3ppZaz5wqxHNbboS7aiXBk7TfssXVxYO3wK7wUOl+fSpagksA0xFWlZMGc\r\n7Bufh4TuH/BDiF73VKOdtaZ2z5QQOsye4MYSDNiZU/1oa8n6kcAAx+Zq5Crn\r\n8cHRHbMr8hQMKTROJleGCyYQIEYDogRf1BnRY8MXcDpF81vBkqIiRP7qPeiO\r\nH/9NXRSFyC1byXUuN8zTkHFUxUMQLcs0nSlzwqbSD0VaOLvrohGlvLDwLLkX\r\nWWcHa6+ybrVss6h1fjzC1bAOUijq3byoIg/dQqq2RDZQ4MKAELvd/eGp7KVr\r\nNvaVgFGLI8pui/tSy5kyB766FqVEyzEtiH2f5DmMdgC2FCoOMuP+k991tJAU\r\nRq45+ezE8RIuV94yGrERQMtw/cEjFIZuW3zeHGUJzGPMvjai2a6QkM0k4U8U\r\nm/jhJhqD+Qf1mroctNRDtyuPDDbzouRHP7A=\r\n=TmqP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.e1d3ccd_1673437060907_0.9325852910770784"},"_hasShrinkwrap":false},"4.0.8-dev.4d27a34":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.4d27a34","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.4d27a34","@ethereum-waffle/compiler":"4.0.3-dev.4d27a34","@ethereum-waffle/mock-contract":"4.0.3-dev.4d27a34","@ethereum-waffle/provider":"4.0.5-dev.4d27a34","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.4d27a34","_integrity":"sha512-XUxym6BXoMlXhyNdu9AtRLm4oDYmiTmWHuZ7hdvom+2A1pPj70AbmR02yLk/WpdJWaY85vMifAH7fwSIt+wQhQ==","_resolved":"/tmp/0495aae4aeef827e51e437443797e000/ethereum-waffle-4.0.8-dev.4d27a34.tgz","_from":"file:ethereum-waffle-4.0.8-dev.4d27a34.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-XUxym6BXoMlXhyNdu9AtRLm4oDYmiTmWHuZ7hdvom+2A1pPj70AbmR02yLk/WpdJWaY85vMifAH7fwSIt+wQhQ==","shasum":"9718b68f333323c22cb5f56b350359d1de9acff3","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.4d27a34.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbjjg8BC34m95UAIHYM7I+LBRDZS8X2uhaInndohYMhwIgbPOs2xx/mynF8TxN7sWFuzHrxAZuNEamoJM4G2V8vOc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjzqcLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoPOhAAgLabcoOuRyJdaayvPzEXOOOtZZ5VLUCVWN5zztdiqGm6D24g\r\navmLQ4si5KVd+PTsnqv18ld3gcrZ2ar3R/shInRDKfGBCP0cs4a4ZRjS0IQd\r\nJRRXQQ3kKaWRyx2MGAFiPwBhtwgWZgaBvYEkdvhg+qceRPtkd4qEdVcC43ei\r\nwKrjoh1SAT7rYaIYoqe1sRPfU6wcN6NCQRY2mMzO3OLzFhvnO9t3CyYhXWfa\r\nDyGvbjhatc/heipCSVE/KyDO4uYccdTkF0D/GgXUVg7cSvonEIj++MC51qL5\r\nZKf+dDu/ayJvBqsvTUlJzJjWhlGzei6Mt/triyUhrT8vSiTix1XvDtoJdpYB\r\nYKi1ia9bqqLFNnYGZ1GGOsHp6GQmpyS+dlZ27xNYZ/VeMbclZi7ZJTi9llmH\r\nM5WIiRrZMUUgPP2c6AlcimY5Qalhe/VjOro7e5txjwmHTpgyt0xmu/hK5V2S\r\nNF1HhcE5iwur1+kKBQg0TvSsQRfua8gJgGrsQp7PUmGO7IU+6ENXb7AcKjVw\r\nSyInc2H43nWOb+mn1jQEyhQPQAmUKO4LCf+/n5SCN1TKuDfV+lFxg9pq7HZa\r\n6RxAQE/KkXNc6nTj+yYmZsRQmP1SP042cDh/djNVMhRffgenkO3Gn9f4aB0H\r\n5WGAs3NWy+mgEJuuEBUTxsCAkeT+8mODLJA=\r\n=38AU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.4d27a34_1674487563354_0.5110128649585426"},"_hasShrinkwrap":false},"4.0.8-dev.a50814e":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.a50814e","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.a50814e","@ethereum-waffle/compiler":"4.0.3-dev.a50814e","@ethereum-waffle/mock-contract":"4.0.3-dev.a50814e","@ethereum-waffle/provider":"4.0.5-dev.a50814e","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.a50814e","_integrity":"sha512-RJeiynjsePEBd0RYAj1I5OLQLHp/PSicWCYQX5ESFC1XNeex0bg/ypzK7uXHxR2G+NlPI4RDLIMZk2tu85BLAg==","_resolved":"/tmp/a9d9442298e340a8259abce9ac35255f/ethereum-waffle-4.0.8-dev.a50814e.tgz","_from":"file:ethereum-waffle-4.0.8-dev.a50814e.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-RJeiynjsePEBd0RYAj1I5OLQLHp/PSicWCYQX5ESFC1XNeex0bg/ypzK7uXHxR2G+NlPI4RDLIMZk2tu85BLAg==","shasum":"71e0c57515a90143a12b4adcce81e00435bf1928","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.a50814e.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0Q4EOru5imMtH/diJTZ+tNUj8T3QQh6PRHxqforDYkAiEA6Ke3OB1txaLzIi0Qpv9VmbQfjqlUyMKjm1JlDEfqXM4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjz/pFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoE0g//aHt3Z78CWnrl0qyzfkav+fvVx3ClXHueiHEmOf69/6537bYO\r\nZ6qxJZ/AK2+YVFNU/eCZXVqQztGv0qeHFy+YCdyMkK7kNul24Z9kvzQH7SN8\r\n0rxlW/nVd5veB2BGiqX/pyaDTHqxOtTXFhmWC6gWIG/spIybtq/2oBgOgNid\r\nebRka+/kiFuoCSOQVrJBDz81ddDwfcWsxPwCK4EeI/+/anlY82EWTo8Xogqt\r\n7hqV8fi0oeAfLae1WcIwbkeeMljzkurOb4MxA+fe/J5IdLPbL6GxLTzlPjaS\r\nNd+D+ZQYLbUJjVT4NXLHLSHa+xVTKnn+PXMShnMY+LPzG7PFmPd3FRU1nTJy\r\nR+54BWkfAoUSObwQODTOQs5/dAYcKEPig1zuqn+yr2gct8DDANuvLluNRfix\r\nVzDnroXQwZWD2JX/0BNxHQI2Etw5Z76WZ0lR2zP1nZCo5IEQNLJPcEPVTEzX\r\nsDiCZRC6qNhqHVsM+gY37sLsJ0aBLYFYToibvFvsvSVzggcFDwA1IL1RkCyV\r\nkKL+SwhxToShWEul8ZEg3gMXTZ+S/f3c0L43ZnhLQpYBR+2QdlmqdbMHkISi\r\nYn1eTGhVYeerVl5pnAjCa4VQ7Rr+H0uqy68WEz4blRoHO23TY3VFAHE4eXTx\r\nFzvnz0HiemoZ7Z4iPNKgcWeuue58v3p77kY=\r\n=OOQs\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.a50814e_1674574405648_0.6134128732789479"},"_hasShrinkwrap":false},"4.0.8-dev.166b72c":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.166b72c","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.166b72c","@ethereum-waffle/compiler":"4.0.3-dev.166b72c","@ethereum-waffle/mock-contract":"4.0.3-dev.166b72c","@ethereum-waffle/provider":"4.0.5-dev.166b72c","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.166b72c","_integrity":"sha512-3LU7iri65ArrO6rn0H2v9E+2CBM63SPqSpe1FNqNp5lWF5S/Zvs6N26/tq5bbbbVkSFTA1eAyX6gRjLYPhz9BQ==","_resolved":"/tmp/4727f5eecd6ff8aee2efbde5a62508d5/ethereum-waffle-4.0.8-dev.166b72c.tgz","_from":"file:ethereum-waffle-4.0.8-dev.166b72c.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-3LU7iri65ArrO6rn0H2v9E+2CBM63SPqSpe1FNqNp5lWF5S/Zvs6N26/tq5bbbbVkSFTA1eAyX6gRjLYPhz9BQ==","shasum":"d17d9eadad951d8391a375132c3d4d9a3007104d","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.166b72c.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6IJnHijhjmtw0DcIAq71em0BFef6JUlBA1oGSt/dwQAiAGh+D6j+KoXjD7OjeYnbpny7TiBU602sJPLNQhmgP4Lw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0l4IACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrcmw/8DHiL2k/wfndTKLahCg/VL4vF7lEi9kBxOF8LQkLBaDQWV6YA\r\ngnpAh779jxDk69ta6eX7vdWsAJPaZFIKAcVcV3uXIE1jdPeX5J7A+ExZQNLk\r\nzx0VpDndtV+rYxiGA0nR65+uXHW1HKTVZGBqRToSkCJmygh4/k0p7/E9+oTq\r\np2hI60xRoUIhl2A3S2QVI0F4iWf+DB9AJcXJFoVn3VxuIlEi7/kewv/mhzAA\r\n8AbNjHIaH5oriWw2WWuQ17nVEFEIyJlqlES9vFzhb1hjf3PAZxP0KJE3Z9b8\r\nM3RHteKcXHoTgvt+oRaFaGSntGisuxlvC70FvLTMcpvIVkiR+aKzHsHt3Jsv\r\nm7sG71VkCWcRWF5auHvj4GjZysQmNPIHPuUtYVaaC4v06GCThROkoKasU8Z7\r\nXux48CNSLITE28rqrgzrCq21VLTvCcmff2Q0jIqkgdgM+8sO6jsUeiOclTwE\r\nsCQoLMhG4Qj22C53We8/EdCi9swlEfHNO4QEjf7MaPWjbDTREmIqPF/CCNAj\r\n8NhxLlkAJ4VDdI7hqys9PSNdAVlUVMhCFdxIWwASmWVucWHtdTr9GiNDJyxF\r\nD8t02EoF3/oI4AslsHewObmelbyjANgG20x23l9E577QwFJ6BRiXmeuUInNe\r\n1YXuttCDEef6BxTYj83/WQQCSUeFRKiM+YU=\r\n=30Yo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.166b72c_1674731015915_0.6534993785520768"},"_hasShrinkwrap":false},"4.0.8-dev.0bc9af4":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.0bc9af4","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.0bc9af4","@ethereum-waffle/compiler":"4.0.3-dev.0bc9af4","@ethereum-waffle/mock-contract":"4.0.3-dev.0bc9af4","@ethereum-waffle/provider":"4.0.5-dev.0bc9af4","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.0bc9af4","_integrity":"sha512-+079coNM8DJPEGXgBDLgDjngDrKch310ehKm8qEqXiS1hyWgfO9Mr6oLVD3ilzPA36y/qHCvvfLuLNoWB8565A==","_resolved":"/tmp/4e172511e24ffe8be31a3dcb110490d2/ethereum-waffle-4.0.8-dev.0bc9af4.tgz","_from":"file:ethereum-waffle-4.0.8-dev.0bc9af4.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-+079coNM8DJPEGXgBDLgDjngDrKch310ehKm8qEqXiS1hyWgfO9Mr6oLVD3ilzPA36y/qHCvvfLuLNoWB8565A==","shasum":"16a766be109e84d1b1bc63dd32db30dc372dc09e","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.0bc9af4.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGRCwmWG3vSAU8JpV58ZNPcSEcvUG1Xlov7cbWlYfg8hAiAIVwyGVciBRS8QX+WvcU4ZQUinOBNAccQCMbCTddJ7SQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0nnIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpunhAAhJRZfYLqf5j5ySkLXiJi/idBeSSR/RWKrEWisnI6b6OCdXlc\r\n93NObu+tGR/771r/D3zpyODciynK6o36io1xtMPRsMtosN6YCn3lx7DotuC3\r\nJ9Pki9rnZE1gxJ4ans1N0GLpYiFVAHpGzqzQgJIDcnqHvCH8qwgjUOIqnECT\r\naWejlYAK5xdXExZe3UXgj8ZJqxve8M00AQu4y/rNYhY4b+QfkNoNM2bgqBLd\r\nQmS3mtou7RoERCavijZvDlP+HnzCPeGwdKFRVE9mbKZZpmz0FNZ8cnZzeDas\r\nmDHK6tsKEvacaU6qB+BPAfrcOZ1huSwqODz4elUNKLFxKT0nXfXdEhDYrh1R\r\ne0lXZwPyp+9cU70QP+oF8v4hrblDA4JOx6b/uWDdOJg/jRkCob7PJWx2UbsF\r\nZVnzRm/1dD4orIpejrDJJ3Mlb7LWvf843ZjMc4km2qeFtJqGA3zbEpWig/hX\r\nC/9NkAx4BohzidXny+8QET7mLktRBAdhv5Fur/rtWrS6ZK0tGFn95kx0BuaZ\r\n7eI2y5mni/mfWjRsyoqv1fQ8D0CmxeJ34kbpDFPhe6xYOKvTEx2QmxOqhQsu\r\nIzK6zy2FRIY4keQy0jVm9B3C2eldGeQkULREw6CT1RvWEcEtI5yBo9asF83a\r\nqBW7diZlD0J4tN+PwviGKc3TlDU7ecmqFB0=\r\n=U3Pn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.0bc9af4_1674738119951_0.9040613205390979"},"_hasShrinkwrap":false},"4.0.8":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8","@ethereum-waffle/compiler":"4.0.3","@ethereum-waffle/mock-contract":"4.0.3","@ethereum-waffle/provider":"4.0.5","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.8","_integrity":"sha512-OngSdzpFa0vnRbFhsVNiNX4Q+LtFaiWF2RyFofyFL85mCI9HBFzfTwFd/LL8F6avJOglm+0b9nHhiOPQMmvAyw==","_resolved":"/tmp/65e173c7aeaa257b553538747e3344c2/ethereum-waffle-4.0.8.tgz","_from":"file:ethereum-waffle-4.0.8.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-OngSdzpFa0vnRbFhsVNiNX4Q+LtFaiWF2RyFofyFL85mCI9HBFzfTwFd/LL8F6avJOglm+0b9nHhiOPQMmvAyw==","shasum":"06a61486a7f328d9f990c02eb48ec2105c18dbca","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8.tgz","fileCount":42,"unpackedSize":197303,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDA79KtScMmhUDCL1wzihn+yC7VtO+s2aLkjnNoWqAwlgIhAMQUAix306+ndC+/l6DDNNHh+xWBfcTqXYT2JyLzcn4n"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0oLRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2+RAAiNyoxOM+RygUc9za8uonpF6uyPwlVYyk6ZeocSfCuZkaLGPM\r\nP8/jq6k5bXBP1EplUKS9v4UplBuryIL43ZHdk78D/mG4n+iGWxatouGAxTPh\r\n5QkS8WlCfby7upHhtTLauYrRUudvsKv+BWeDjh+TkHH4coVG5hpwgh9CAuUS\r\nEAmu4JIaOwChrZ489q+Dw/mb3KHMFdl1MXPK5eYLD+5679xy6ZUhU/pzt9Fy\r\ny1QVnkD7P/p9uHL8OLRD5w40f9fLui7SzZVvYG8DUH6TcHgfxXNGlF7X2sQq\r\n1JhdHRfZ+wh5/GdP6xWrDJ/B5t3zcOFzHDJ+xfS99ilgpcANiHNfn8EdRcSA\r\n7HbivrUvbSnvmmJrePYfLDjqhGbkjTNLNOFC+M6HJNcgejaj31ZXjlCiw/9C\r\ngAH4QbfE4cUYVXRwQTs/ufHis3IFHmvJ0ilgI2Xdey3x16BCDankMcsdxXdM\r\nEv1cQGGsWQGd2M3Kd8FhmJVJLuUMXPKcyzU5Qm0yBUI8CxNyq8hwpxkdWk7t\r\nX9XUUrMNOdHeYdtjAkudNkH98S339rAzHpq81wDw5xRTS12pzjBG5J4vfwaL\r\nMSB6vEV4aROlafZVrnvGHD4LHTiyJ3iFINcA+gsaLP43hSEV91NEvxNqKbh4\r\nh6Av5SlqU5AVkAFPM1Ql1Oaz3cDCfgFuc90=\r\n=a4fG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8_1674740433103_0.7165963327463662"},"_hasShrinkwrap":false},"4.0.8-dev.13d1af0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.8-dev.13d1af0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.8-dev.13d1af0","@ethereum-waffle/compiler":"4.0.3-dev.13d1af0","@ethereum-waffle/mock-contract":"4.0.3-dev.13d1af0","@ethereum-waffle/provider":"4.0.5-dev.13d1af0","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.8-dev.13d1af0","_integrity":"sha512-2W4vNRuaFGXxonmjkyJCQM1b7VCQiV6eQQi96vkDMioijMP0wy3KDTN+jItwfuKEx2vQvmG39TZDYYGCJGl4uw==","_resolved":"/tmp/1f50c5ca46bd5301fa60293ea81cf00b/ethereum-waffle-4.0.8-dev.13d1af0.tgz","_from":"file:ethereum-waffle-4.0.8-dev.13d1af0.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-2W4vNRuaFGXxonmjkyJCQM1b7VCQiV6eQQi96vkDMioijMP0wy3KDTN+jItwfuKEx2vQvmG39TZDYYGCJGl4uw==","shasum":"cd83d9387e98df6af5d53272257e9e3a39fef77b","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.8-dev.13d1af0.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBE9+qa9tWqMqPkKJ1VZzo4zl4p3UClKIBsDoLTfsTuTAiEA9XX5PlyCA1DxzYdrRnNZB/hzUTRdgzESXhYGTdFXjg0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0oPBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpcQg/8DDA1VX0IGu1BzDBiHKGtL4rg8waagMDxA0LivcRykZCi22WL\r\n0m88l8crhyWrxyxoApDMAjtr75J6acE2kCxkxMYVWAHAGx0i6iIh8M6qjAO8\r\nP+h3nCmVyLIht/c+1jFr4utsheYEk2L+EvxzyMWVdv4DbSF7IBlUHTbi7uP/\r\n95+l2I5VCP1+qUoa82vPWQRl+i9pJAP44VLZd+zNXXHvHsNjAWPdD3sokHea\r\nR9kyv4HKynk4mR+HaioOACOTpMSudlMWXpcW7GInyf65N3m5qWcsWqRsggrF\r\nphUXvgipwwRb+MPNwyZr2lYlSA/BVfuDeqad9342ZDQGbGojwCk5hji0+ufw\r\nO04tEg7gahr/PI8Yllj2HmuIOGLon8VSaG/na6S9nk89DuM6XIABaR7KClxp\r\n12BZx0ahQpfkSpTifeocxNwj5R4YVwcCB9pvpLJhBE6NxVWqOrb+i3pS9Jkj\r\n4eABJFHU10k2re4CChqTMxTeYJZUSKhL9sxZhdDKmwnwbAl2U+OrdEgieKJf\r\nKUd/1EDSpMbPSIkgAIrE7JlfqXB+TlwsN4xcKdtFaC8OVe1+bRTxDrKsfOIH\r\nifJXcEtVOdYj4EK9DedVYW1sBuiMZVq1FlyakUiuBoajRpX/LsDN5raU0RtL\r\nj7wm8o0LHY1iw9RbkNC8fqWCNU67P3eYLqo=\r\n=pPpz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.8-dev.13d1af0_1674740672843_0.2171162760981049"},"_hasShrinkwrap":false},"4.0.9-dev.f8ca718":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.9-dev.f8ca718","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.9-dev.f8ca718","@ethereum-waffle/compiler":"4.0.3-dev.f8ca718","@ethereum-waffle/mock-contract":"4.0.3-dev.f8ca718","@ethereum-waffle/provider":"4.0.5-dev.f8ca718","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.9-dev.f8ca718","_integrity":"sha512-zvQVDfFX0sjvR7yt0eAvp6e/xCp/n4DLtYOH00gM5DC93wrbnFY2QiXL6GnbElcG7gZ26o/H9hSy5vlrtOZ5JQ==","_resolved":"/tmp/e91a2aaa752768a884421667bcc3dae9/ethereum-waffle-4.0.9-dev.f8ca718.tgz","_from":"file:ethereum-waffle-4.0.9-dev.f8ca718.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-zvQVDfFX0sjvR7yt0eAvp6e/xCp/n4DLtYOH00gM5DC93wrbnFY2QiXL6GnbElcG7gZ26o/H9hSy5vlrtOZ5JQ==","shasum":"8347c1ea45280c8916917b97de5f52724b5b4f6c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.9-dev.f8ca718.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDP1UQEO/us1oKJr8AH03cq7DontEMdIlCtPNCGA0OWBgIhALWnvJF0sGm0XUP+FJot/XxYCVruXJKQy1DOJvb13XFy"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0sN4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/Fg//bWMUbWUp4NVpav8pHb34pLpcj1yXYw8NGjWuV/w30AGwwYUf\r\ncp/+HNmbVniI2WrJv/mEv/JYtjbXmymHBYlURBcmMtYRPP14aeX3tHOS/Pnq\r\nMH6/KkUSdTCHFJhpRDiT+geqKgDjs/qCendUzrFvrJhQ74rn0793BpnrLi30\r\nrP2BVmWIefCGwFxgTC/JaTmQkL68OEfzA+aoTNQQvRFxT544EJ44ocgpqIso\r\nzYB3IZTp6GGPOAZG64DISYTu8zMgyt/NshiSVzdjcvnmSyHBFxf1qtXJwF5L\r\n4g5Sb4zRMIVLFCyZMuu7f/yX5nCvRqyNvzUkJcqxgExik3EGdsCvlf+g12Lw\r\nm6cdQCCNEF1MUvgu8O8Lvbj2EY4PMVWC7QkWksX+5aOIrM7vWLiwXcSvJRWw\r\n3wzumqYlMY4igF6fAKzNFPsvwg+nDkFQf2JO7GsogcMA1Qp+z3MOYUl/1fjt\r\ngsQrMR65z1cMq5CnZ5yPISgJO2cDChxEWCgut68uyoSn5KG/1elYdkSLE6nR\r\nNmWeysnT+3R+sxJfHxm9wBJcnsw4UHw1QsuF6ZKm7kBVQ6ViHKqIRH4l9rVR\r\nn/48V6wb1uOYBh1qOd7k33GZCbopeYm/FbnbpuyhYLR8f0lrwwrqPd2FHsXA\r\natjrVtN1KnHnf89LMwXtzbQcj+xlVXzIsts=\r\n=AljL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.9-dev.f8ca718_1674756984296_0.13573980708861466"},"_hasShrinkwrap":false},"4.0.9":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.9","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.9","@ethereum-waffle/compiler":"4.0.3","@ethereum-waffle/mock-contract":"4.0.3","@ethereum-waffle/provider":"4.0.5","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.9","_integrity":"sha512-z1X0B2+QrM2Vgr7Tj8Ho4QTrs6GLzm72Oj6bRqFWNVlCB3uIaf8iTLgvSq/UlKsIEh22FNyGkkyA+CAYqFTPeg==","_resolved":"/tmp/d3ba7b19983ad14a8c278121c2c65a4d/ethereum-waffle-4.0.9.tgz","_from":"file:ethereum-waffle-4.0.9.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-z1X0B2+QrM2Vgr7Tj8Ho4QTrs6GLzm72Oj6bRqFWNVlCB3uIaf8iTLgvSq/UlKsIEh22FNyGkkyA+CAYqFTPeg==","shasum":"97b02bdca225156f5eb32ab5109f45beaec78365","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.9.tgz","fileCount":42,"unpackedSize":197303,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1XwQPBFusZGp7CaQcqUwvyUB+Zs4DVtby9YJsLv4KvAIgcGGfITZm8kkZBI6tpBSRSj4kLZPoMYUbfXqVxnw++dk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj09JrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq8GBAAmv9Od42nL1rZtRECyGiwb+zKmZ5KMogvEht22NeaEBm0y9Y1\r\nIJbn8dAJ6pyBrQjlBqdvF45sneyr670GdjSIx8/ZoqXY6BpiLqN6aA329Wu4\r\nI8I8w217ficsLGVomcxNxEEFkYCqgO62ooVNugn2cVf1rX06HslD0ErYJOIL\r\ng3YxWnA66/wjLk6CJMQjmgQ/JPQjbuOrtjxO9ToSaU/XQ40BL8g69t8wQApz\r\n7cZt2ZV2XOJsMu8Xg+zW9ltpjbO7T2RoICpNyOKSzi+n0MXxK4LMohREKIdM\r\nCd7tQt46GGdUre/YBMy4KQ3Aj8Y7Agolv3rJhw7+8U4rkwL2Rmz+ElJNi686\r\nx656MwpawE3wr0Ia+LZzxNnnB07cmXMYZMzWoFzJYBYyEq7Bn3kK3/NCgrBZ\r\nyPdsmHbyjgzc9hBohXcUpiDX27HX31n2Jxgdg07MzmBKYr+c80gkVEnPLoTg\r\n4KOv30jY+aj5cRXfoyPTuY5UahwWYv6lGrhbI+FFyh9HMfryv5ifW1STeF7T\r\nkX4ZPsCHcbaMxoJEswCGCOzsD3NSjXtHhF7FRgFghPO3U/SN0/eBJ184xiVP\r\nPC5h8XS3HvoYraoaI/LZNF6gS0B4V/hBEnRCxbCNETvGRjxhvjK85DWxZ6E2\r\nBJGlC3fhUdIraYJNDxivHPdve0IyCkcJjWc=\r\n=xL26\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.9_1674826347687_0.4118752667512504"},"_hasShrinkwrap":false},"4.0.9-dev.a1d89d0":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.9-dev.a1d89d0","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.9-dev.a1d89d0","@ethereum-waffle/compiler":"4.0.3-dev.a1d89d0","@ethereum-waffle/mock-contract":"4.0.3-dev.a1d89d0","@ethereum-waffle/provider":"4.0.5-dev.a1d89d0","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.9-dev.a1d89d0","_integrity":"sha512-brRDZVZStZL3/p1GTZ/3fXotGaUG+Ag+cHM/16K2p2oqkf/8eRp7HpYzE7bePVJqfzZIqWqoT+d537kNUi4PTw==","_resolved":"/tmp/e3b887fce9985b57158b705a1d51f913/ethereum-waffle-4.0.9-dev.a1d89d0.tgz","_from":"file:ethereum-waffle-4.0.9-dev.a1d89d0.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-brRDZVZStZL3/p1GTZ/3fXotGaUG+Ag+cHM/16K2p2oqkf/8eRp7HpYzE7bePVJqfzZIqWqoT+d537kNUi4PTw==","shasum":"3f4e55c16890a3f94192680c4f767bbdf29d1a8c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.9-dev.a1d89d0.tgz","fileCount":42,"unpackedSize":197381,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/FZnpO8wWSGrirsTLP4DImVFl8mIJ6k0PWu6uVwdPcAiEAo6OFiBPbgLP/oz7jtlnCRK7ztW4Eqi3WlUjqCTSh+kk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj09MyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqZsQ/+LVxnE8F2KI2LtMi/dKPewitcCWvouAfqade/D5ynSC24MbLk\r\ncAZtlkr9rxXBQEFyHSDMoIx/pV3IWXRH+rNRD/KIsZmo4W9vsbYiCKX+ntn2\r\nNp0eV81uiEpLOObbXUoA/ilo4gSfKDeweDeplBAcezBuXJRzCBCIZEPVC2r5\r\nNW332ntso1Pv7YBidG2lRgzpbooF0DObGT8rBRrDBcteylg6ih6zsTs+5m0P\r\nBkTp9Y00xKDruLgEhmu+tLTlnin58exSaeauEodGeMsByzDVrVUQqHXvjOFP\r\nQSS7z2nhp743q0hPB8yhS61oTLzSB3QYBIe9zz3sr2eDrD1UvZYeCdStXmGb\r\n+3wdBO46jhFnVr/i8sRlRS1MgoolcT/NhJnc6NbSQNGc9w8+H4fSGCy7NsSM\r\nl7Ao4CsxslEQBJkET00zGyofXc9Oh9b+gHnW24Ne/+6Y7jI2PfiQnRS0pG4m\r\nWwXpmZeN4aRz5zEKhVu0EvGQEopoQymzZo/zCtShuEL0PrzbsxGn6cbGWACL\r\nMsox+YTCH0fooSlhjb5I000bB9LijJSSxkaoqbhkA40R41eDMsluf3e2J6p7\r\nOzOhnsLQEog/3ro5hw9YG0np7niU1xlb+kh+Wmsr0J/gI74gF0BBLHqErskH\r\nArkb3fAHNLz4a070g8S7z6HnzAfVtdY82xk=\r\n=FP8F\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.9-dev.a1d89d0_1674826546505_0.6083332976917375"},"_hasShrinkwrap":false},"4.0.10-dev.4740ec6":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.10-dev.4740ec6","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.10-dev.4740ec6","@ethereum-waffle/compiler":"4.0.3-dev.4740ec6","@ethereum-waffle/mock-contract":"4.0.4-dev.4740ec6","@ethereum-waffle/provider":"4.0.5-dev.4740ec6","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.10-dev.4740ec6","_integrity":"sha512-2HXNyzpG4EDyCbNjfEaIXicRnjRlSFDY9rAd4IZdGIOeI3jm1yuspNNzKE+y0YE3GeTCIpJUcNtg/aQF0GYI/Q==","_resolved":"/tmp/38ceb63f1dd913d606f33d19f3abe702/ethereum-waffle-4.0.10-dev.4740ec6.tgz","_from":"file:ethereum-waffle-4.0.10-dev.4740ec6.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-2HXNyzpG4EDyCbNjfEaIXicRnjRlSFDY9rAd4IZdGIOeI3jm1yuspNNzKE+y0YE3GeTCIpJUcNtg/aQF0GYI/Q==","shasum":"cbcd2a391a8a2082210b395e9e42f49ca56c241c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.10-dev.4740ec6.tgz","fileCount":42,"unpackedSize":197383,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGwo4ZZUI00TjoDxE6HOGi40mo08Va20b9BxohKV5L7GAiAn1wzxASYmqgXVOlNl8JCZd45x1qVW0ngzPEDlU9WESQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4OcdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqjRQ/8CRqf8IG+kUK4SKlKyaJ86LpHsbJ0aIiqpASgvlIUX+RptohB\r\n4ptpOt33xfPmER47XEbSlHzA6FdktL9x7y59wDJbwcqOeTqT1PkGC01OgBiP\r\nQFd4Xc69KHCCzIwavOKXBGr0niZzbcn/raRH7YzXJ5dDPkYg8X3SjMcqphHe\r\ntWlncJP4F9+dFVZb/dB+uBGFLlAod8lLClnrok9d3swnYLZYFL74oLYLZmzg\r\nTNqR2G7u6QUwucHLbNZQc06cKhOT9vj3/pNkfOhtBGmRZroCzSiLDi98OO7a\r\neViQAfYumqxz6u3zvex6DtoYQiADk5ROvi08mj6uCL57LPJjTVwlpZ80RPHY\r\nb27DUrErxvCHoPHwgrfnHy9YlCga6Qny7p3lPiQXVk5z3BY/mb41A9NO0Cwi\r\nHkHMSuaG5cBRWi085323iS7nf+EdOxcDgTk8j7ImA15oBmCkx3wNRtR5dWZ5\r\ne+qyjX6ItX/jFbVsjtnrBAJeYZH4Ue1R51CKx7nlRO66lCa0gA7M5txTspuh\r\nqVUWkO5MMW5TYTynI5rtg2eU1CG021CFD1zSpLqLDTuKUPfArCjuRmKqDnVD\r\nPE6ji9lcsTX0Jm7zaxcxQLXwy23XsVwhMmisJ81gnJSb3qxPp7+d4bGs9yLl\r\nRwen84HuaCEFb3hpwDZnZjGnp9I3gT3o0gQ=\r\n=fNYe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.10-dev.4740ec6_1675683613715_0.4227945330921443"},"_hasShrinkwrap":false},"4.0.10":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.10","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.10","@ethereum-waffle/compiler":"4.0.3","@ethereum-waffle/mock-contract":"4.0.4","@ethereum-waffle/provider":"4.0.5","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"_id":"ethereum-waffle@4.0.10","_integrity":"sha512-iw9z1otq7qNkGDNcMoeNeLIATF9yKl1M8AIeu42ElfNBplq0e+5PeasQmm8ybY/elkZ1XyRO0JBQxQdVRb8bqQ==","_resolved":"/tmp/8b50525ae837b19853aca1cf8ce92371/ethereum-waffle-4.0.10.tgz","_from":"file:ethereum-waffle-4.0.10.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-iw9z1otq7qNkGDNcMoeNeLIATF9yKl1M8AIeu42ElfNBplq0e+5PeasQmm8ybY/elkZ1XyRO0JBQxQdVRb8bqQ==","shasum":"f1ef1564c0155236f1a66c6eae362a5d67c9f64c","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.10.tgz","fileCount":42,"unpackedSize":197305,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEUWuPuctF0BGiEDgI2hFeaMcBYfz24pwhbC1dFzZT96AiEArtQSRVJqOiIA+RXdcqNUZNGmsa9w6pF9zM1XJxf8P0s="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7QpYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWWg/+O5XX0rY9engdIXK5Tc+U24JOSdh21otajikqVxCA35AaJdNp\r\nwvVaV4dxTzBMwjk053D6AP5t9PyDEgf/zrWwUwET/QrIrEnXmD6LDys5xH4m\r\nbxHU5upWnNMsysMuMFEPGCT9OHPPzzM5m8/pgr8svKo+mFkZ6uvLr8N27HHl\r\n/qEtuTsi2oqCXyDiSeVOiwyizKAgzO0HWBEffgjCw46SiLGMa3nWYSeukOPH\r\naM74Wt/ae6t52FO6D0w2j+ntyqFNY1OpoBBLtBfRDCwAywtOZ+7BxwYf7p6U\r\ngQiaavHlo5xjtqRKg3Jdt/p3soCXjr3Ac/39GsI5LUiZC6pv6O2DoGalBWpI\r\nz9urzRRz+yMoPEcdcLNZXhKjoEUCUQiZ/f6c94MgwFkf6KR+/57woSSn/Q1Q\r\ng96akomNbtU69pdUplOsb0xfONUM0Ksmfu5rOnhMOU0OYdt4hQPamN7mIZZR\r\ngt1DEAvOC3Cw6Be1fK2uL2xPeYcFQkRwyX5TgRH21iGL6Pi61pCY5asIqmas\r\n+TWxmds447mc+O3pezLr1PqnNS3+AMh4M9ZfAdLk88jvD8E7UsUTKAjUYXOm\r\n4cOx4xO5zw30t5pwW1rdTHGETWJN6GwVf/gcCQfm4WsSOhL+ZNiR5uKN9uIW\r\n2nHgw2HzqOP8iOHzgh6wlmFhO9T0sPROdI4=\r\n=xAkp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.10_1676479063890_0.5829849929111739"},"_hasShrinkwrap":false},"4.0.10-dev.0915e72":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.10-dev.0915e72","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.10-dev.0915e72","@ethereum-waffle/compiler":"4.0.3-dev.0915e72","@ethereum-waffle/mock-contract":"4.0.4-dev.0915e72","@ethereum-waffle/provider":"4.0.5-dev.0915e72","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.10-dev.0915e72","_integrity":"sha512-UpqQ4YxWwP3bu//m5Vl6w674xZLHo9HORm165OYzgcVhRrYabjpDfIAHhoOVFuIpZ7FCYms1FqEnNEVuOOE9CQ==","_resolved":"/tmp/c33764a2bcfe5f73838d1404982424c1/ethereum-waffle-4.0.10-dev.0915e72.tgz","_from":"file:ethereum-waffle-4.0.10-dev.0915e72.tgz","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-UpqQ4YxWwP3bu//m5Vl6w674xZLHo9HORm165OYzgcVhRrYabjpDfIAHhoOVFuIpZ7FCYms1FqEnNEVuOOE9CQ==","shasum":"c164ee247e3306723cc2f7888bf17b4f2233fa2f","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.10-dev.0915e72.tgz","fileCount":42,"unpackedSize":197383,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDW0+9FboK7PYEJfnHRocO9Bv3JYnC7RTMJrg0pmNTnBAIgC1PbM/sdLs425jU9mebRHIL1LE1HQx8SrLZg/aho7lA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7QspACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmobihAAhIcGF7mphy+JLbdbYLRahjBoLWuTVNhdcd9jSvINU8CvBoQh\r\n+L1MBG/qHIVEkKKZjeEYat+eOQL+/YKrijUEiEFqfX5p9p8E/wp989goUj5W\r\n2Z9bMUjE0ZFrqpwdLwin1w9mdPKpjUD7NbdLGyLTbWUr3q5ihm6GCtCc85yy\r\n51kDvryaXtiEV14jdT/+i2wKU0i6G6W5A+daF1VoXDNPC8/BE6Ulca20Z+LO\r\nIWFEco7c2Xk8XMSbNH2A5eoiwgG2V2cJy71pcOEmBxOBQaNHd6tm9tExbDy3\r\nil0q8qcVeS+0mitd6SOH/nBWz3oY22m2hufaldcrW/MAO9cQexKvhbxWodvX\r\nd3we1XybKUIQuOeua6HuOyrjwAzdZawDxtJZGPmd0EOHw/IgBbb6vLLBXYcZ\r\n+415MLdroL9uFezNWIBPhHvizfsvXlJqxfhSDqvFAUuRQ2ESkC1e50CY3N0K\r\nUqjlQU8e4NaMEzeA6QHdy4za3WDJTxV9P4sB8RWq5DNmF/0vnsUAoKuhJmTW\r\nuAXYxp2ofFe7XZanufZQUeOXH89G7s/EWJwmmw+4tRV8ZeFprIjO5StSbYk1\r\nr2/lR8IPOwvTjHiC1uZAok+TSgovMmnKw4hz+4jM1PZUstohovYG4mzbeCii\r\nkoAIbssnq22dRmdWVSGXZLrTvjIm2T1uuQQ=\r\n=N8iQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ethworks","email":"code@trusttoken.com"},"directories":{},"maintainers":[{"name":"ethworks","email":"code@trusttoken.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.10-dev.0915e72_1676479273164_0.40438529192392725"},"_hasShrinkwrap":false},"4.0.10-dev.efd5f2a":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.10-dev.efd5f2a","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.10-dev.efd5f2a","@ethereum-waffle/compiler":"4.0.3-dev.efd5f2a","@ethereum-waffle/mock-contract":"4.0.4-dev.efd5f2a","@ethereum-waffle/provider":"4.0.5-dev.efd5f2a","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"yarn test:buildonly && yarn test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && yarn build:esm && yarn build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.10-dev.efd5f2a","_integrity":"sha512-o8+QZkySvJ0TbR40+Xo2km8jJIHBk6n7DWknJ9ewxuZdP5x8lry6RpisHzAHWKPLN5MScud6mzq7qN7ssbLr/Q==","_resolved":"/tmp/53733f2b61a0650d71517eca37e99700/ethereum-waffle-4.0.10-dev.efd5f2a.tgz","_from":"file:ethereum-waffle-4.0.10-dev.efd5f2a.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-o8+QZkySvJ0TbR40+Xo2km8jJIHBk6n7DWknJ9ewxuZdP5x8lry6RpisHzAHWKPLN5MScud6mzq7qN7ssbLr/Q==","shasum":"c8327417f21ebe3635743fb62029722fc8db0c44","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.10-dev.efd5f2a.tgz","fileCount":42,"unpackedSize":197383,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGiWmkKC/5RyKhS49PYlGZQLxoSR/7DJm/4iNRr8mLjJAiAT3YwBhJb5vDb7wruxNfim1YvBekhx/R43zPr+xern/w=="}]},"_npmUser":{"name":"ethworks","email":"eng-services@wallfacer.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"eng-services@wallfacer.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.10-dev.efd5f2a_1697111511187_0.3702707051048635"},"_hasShrinkwrap":false},"4.0.10-dev.238c11c":{"name":"ethereum-waffle","description":"Sweeter, faster and simpler than truffle.","version":"4.0.10-dev.238c11c","author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"private":false,"license":"MIT","publishConfig":{"access":"public","tag":"dev"},"keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"homepage":"https://github.com/EthWorks/Waffle","bugs":{"url":"https://github.com/EthWorks/Waffle/issues"},"main":"dist/cjs/src/index.js","module":"dist/esm/src/index.ts","types":"dist/esm/src/index.d.ts","bin":{"waffle":"bin/waffle"},"engines":{"node":">=10.0"},"dependencies":{"@ethereum-waffle/chai":"4.0.10-dev.238c11c","@ethereum-waffle/compiler":"4.0.3-dev.238c11c","@ethereum-waffle/mock-contract":"4.0.4-dev.238c11c","@ethereum-waffle/provider":"4.0.5-dev.238c11c","solc":"0.8.15","typechain":"^8.0.0"},"devDependencies":{"ethers":"5.6.2","openzeppelin-solidity":"2.3.0","mocha":"^8.2.1","rimraf":"^3.0.2","typescript":"^4.6.2","eslint":"^7.14.0","ts-node":"^9.0.0"},"peerDependencies":{"ethers":"*"},"scripts":{"test:buildonly":"ts-node -T buildTestContracts","test:nobuild":"mocha","test":"pnpm test:buildonly && pnpm test:nobuild","lint":"eslint '{src,test}/**/*.ts'","lint:fix":"eslint --fix '{src,test}/**/*.ts'","build":"rimraf ./dist && pnpm build:esm && pnpm build:cjs","build:esm":"tsc -p tsconfig.build.json --outDir dist/esm --module ES6","build:cjs":"tsc -p tsconfig.build.json --outDir dist/cjs","clean":"rimraf ./dist ./test/example/build"},"readme":"![CI](https://github.com/EthWorks/Waffle/workflows/CI/badge.svg)\n[![](https://img.shields.io/npm/v/ethereum-waffle.svg)](https://www.npmjs.com/package/ethereum-waffle)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/ppFxC3E44X)\n\n![Ethereum Waffle](https://raw.githubusercontent.com/EthWorks/Waffle/master/docs/source/logo.png)\n\nThe most advanced framework for testing smart contracts.\n\nSweeter, simpler and faster.\n\n## Links\n* Website - https://getwaffle.io/\n* Documentation - https://ethereum-waffle.readthedocs.io/\n\n## Philosophy\n* __Simpler__: Minimalistic, few dependencies.\n* __Sweeter__: Nice syntax, easy to extend.\n* __Faster__: Strong focus on the speed of test execution.\n\n## Features:\n* Sweet set of chai matchers, e.g.:\n  * `expect(...).to.be.revertedWith('Error message')`\n  * `expect(...).to.emit(contract, 'EventName').withArgs(...)`)\n* Importing contracts from npm modules working out of the box, e.g.:\n  * `import \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";`\n* Fixtures that help write fast and maintainable test suites, e.g.:\n  * `const {token} = await loadFixture(standardTokenWithBalance);`\n* Customizable compilation options with native solc, dockerized solc and any version of solc-js loaded remotely at compiled time\n* Mocking smart contracts, e.g.:\n  * `const mockToken = await deployMockContract(wallet, IERC20.abi);`\n* Support for promise-based configuration, e.g.:\n  * use native solc binary for fast compilation in CI environment\n  * use solc-js based on contract versions detected (async)\n* Support for TypeScript\n* Type-safe contract deployment and interactions with TypeChain\n* [Documentation](https://ethereum-waffle.readthedocs.io/en/latest/)\n\n## Documentation\nDocumentation is available [here](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Installation:\n\nTo get started install `ethereum-waffle` with yarn:\n```\nyarn add --dev ethereum-waffle\n```\n\nOr if you prefer using npm:\n```\nnpm install --save-dev ethereum-waffle\n```\n\n## Step by step guide\n\n### Add external dependency:\nTo add an external library install it using npm:\n\n```sh\nnpm install @openzeppelin/contracts -D\n```\n\nor with yarn:\n\n```sh\nyarn add @openzeppelin/contracts -D\n```\n\n### Note\n\nFind this example in `examples/basic` and use it.\n\n### Example contract\nBelow is an example contract written in Solidity. Place it in `contracts/BasicToken.sol` file of your project:\n\n```solidity\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n// Example class - a mock class using delivering from ERC20\ncontract BasicToken is ERC20 {\n    constructor(uint256 initialBalance) ERC20(\"Basic\", \"BSC\") public {\n        _mint(msg.sender, initialBalance);\n    }\n}\n\n```\n\n### Example test\nBelow is an example test written for the contract above compiled with Waffle. Place it under `test/BasicToken.test.ts` file in your project directory:\n\n```ts\nimport {expect, use} from 'chai';\nimport {Contract} from 'ethers';\nimport {deployContract, MockProvider, solidity} from 'ethereum-waffle';\nimport BasicToken from '../build/BasicToken.json';\n\nuse(solidity);\n\ndescribe('BasicToken', () => {\n  const [wallet, walletTo] = new MockProvider().getWallets();\n  let token: Contract;\n\n  beforeEach(async () => {\n    token = await deployContract(wallet, BasicToken, [1000]);\n  });\n\n  it('Assigns initial balance', async () => {\n    expect(await token.balanceOf(wallet.address)).to.equal(1000);\n  });\n\n  it('Transfer adds amount to destination account', async () => {\n    await token.transfer(walletTo.address, 7);\n    expect(await token.balanceOf(walletTo.address)).to.equal(7);\n  });\n\n  it('Transfer emits event', async () => {\n    await expect(token.transfer(walletTo.address, 7))\n      .to.emit(token, 'Transfer')\n      .withArgs(wallet.address, walletTo.address, 7);\n  });\n\n  it('Can not transfer above the amount', async () => {\n    await expect(token.transfer(walletTo.address, 1007)).to.be.reverted;\n  });\n\n  it('Can not transfer from empty account', async () => {\n    const tokenFromOtherWallet = token.connect(walletTo);\n    await expect(tokenFromOtherWallet.transfer(wallet.address, 1))\n      .to.be.reverted;\n  });\n\n  it('Calls totalSupply on BasicToken contract', async () => {\n    await token.totalSupply();\n    expect('totalSupply').to.be.calledOnContract(token);\n  });\n\n  it('Calls balanceOf with sender address on BasicToken contract', async () => {\n    await token.balanceOf(wallet.address);\n    expect('balanceOf').to.be.calledOnContractWith(token, [wallet.address]);\n  });\n});\n```\n\nNote: You will also need to install the following dependencies to run the example above:\n\n```sh\nyarn add mocha -D\nyarn add chai -D\n```\n\nOr with npm:\n\n```\nnpm i chai -D\nnpm i mocha -D\n```\n\n### Compiling\nTo compile your smart contracts run:\n\n```sh\nnpx waffle\n```\n\nTo compile using a custom configuration file run:\n\n```sh\nnpx waffle config.json\n```\n\nExample configuration file looks like this (all fields optional):\n```json\n{\n  \"sourceDirectory\": \"./custom_contracts\",\n  \"outputDirectory\": \"./custom_build\",\n  \"nodeModulesDirectory\": \"./custom_node_modules\"\n}\n```\n\nTo enable generation of [typechain](https://github.com/ethereum-ts/TypeChain) artifacts:\n```json\n{\n  \"typechainEnabled\": true\n}\n```\n\n### Flattener\nTo flat your smart contracts run:\n\n```sh\nnpx waffle flatten\n```\n\nIn configuration file you can add optional field with path to flatten files:\n```json\n{\n  \"flattenOutputDirectory\": \"./custom_flatten\"\n}\n```\n\n\n\n### Running tests\nTo run the tests run the following command:\n\n```sh\nnpx mocha\n```\n\n### Adding an npm script\nFor convenience, you can add the following to your `package.json`:\n```\n{\n  ...,\n  \"scripts\": {\n    \"test\": \"waffle && mocha\"\n  }\n}\n```\n\nNow you can build and test your contracts with one command:\n\n```sh\nnpm test\n```\n\n## Documentation\nFor detailed feature walkthrough checkout [documentation](https://ethereum-waffle.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](https://github.com/EthWorks/Waffle/blob/master/CODE_OF_CONDUCT.md) and [contribution policy](https://github.com/EthWorks/Waffle/blob/master/CONTRIBUTION.md).\n\nBefore you issue pull request:\n\nMake sure all tests and linters pass.\nMake sure you have test coverage for any new features.\n\n### Running tests\nNote: To make end-to-end test pass, you need to:\n* have Docker installed, up and running\n* have Ethereum stable docker image pulled, if not run `docker pull ethereum/solc:stable`\n* have native solidity 0.5.* installed\n\nTo run tests type:\n```sh\nyarn test\n```\n\nTo run linter type:\n```sh\nyarn lint\n```\n\n### Building documentation\n\n[Install Sphinx](https://www.sphinx-doc.org/en/master/usage/installation.html) to build documentation:\n\n```sh\ncd docs\nmake html\n```\n\nBefore building documentation for the first time you may have to install required python packages:\n```sh\npip3 install -r docs/requirements.txt\n```\n\n## Roadmap\n\nSee https://github.com/EthWorks/Waffle/issues/155\n\n## License\n\nWaffle is released under the [MIT License](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","_id":"ethereum-waffle@4.0.10-dev.238c11c","_integrity":"sha512-ciWj4H9ArmtflvkYZ2Y4F7aAEgrxMTFunvtkfvAMoq+YsVZkFvYbs1ImH7M98kFUG1+gMJqRPzDtxvyKJtNiWQ==","_resolved":"/tmp/f647d8ca0c35451b3245ca37e6b45e6f/ethereum-waffle-4.0.10-dev.238c11c.tgz","_from":"file:ethereum-waffle-4.0.10-dev.238c11c.tgz","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-ciWj4H9ArmtflvkYZ2Y4F7aAEgrxMTFunvtkfvAMoq+YsVZkFvYbs1ImH7M98kFUG1+gMJqRPzDtxvyKJtNiWQ==","shasum":"c1bcc6d4be0dab3686ef094924f58260e60349de","tarball":"https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.10-dev.238c11c.tgz","fileCount":42,"unpackedSize":197383,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChjsM4AfH7tczyq7nejzVQ5/T2kxAzYbSYOISFUk7ZUQIhAPmEUtdgKZeSe7ZSadIGuQuA9/AiyGFhBRjNSmv5AJER"}]},"_npmUser":{"name":"ethworks","email":"eng-services@wallfacer.io"},"directories":{},"maintainers":[{"name":"ethworks","email":"eng-services@wallfacer.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ethereum-waffle_4.0.10-dev.238c11c_1697112535771_0.1198866993505443"},"_hasShrinkwrap":false}},"time":{"created":"2018-08-03T10:16:56.954Z","0.0.1":"2018-08-03T10:16:57.050Z","modified":"2023-10-12T12:08:56.232Z","0.1.0":"2018-08-03T15:20:07.704Z","0.1.1":"2018-08-03T16:04:41.013Z","0.1.2":"2018-08-03T16:15:53.530Z","0.1.3":"2018-08-03T16:25:04.268Z","0.1.4":"2018-08-04T14:35:36.936Z","0.1.5":"2018-08-04T14:55:06.319Z","0.1.6":"2018-08-04T16:49:09.179Z","0.1.7":"2018-08-04T16:53:38.320Z","0.1.8":"2018-08-04T17:27:18.241Z","0.1.10":"2018-08-10T13:21:52.911Z","0.1.11":"2018-08-11T15:12:16.723Z","0.1.12":"2018-08-12T07:34:57.709Z","0.1.14":"2018-08-12T09:17:16.635Z","0.1.15":"2018-08-13T14:17:31.231Z","0.1.16":"2018-08-15T11:49:38.668Z","0.1.17":"2018-08-15T15:27:58.080Z","0.1.18":"2018-08-15T16:01:56.202Z","0.1.19":"2018-08-18T22:01:42.195Z","0.1.20":"2018-08-19T18:18:21.074Z","0.1.21":"2018-08-23T13:19:57.658Z","0.1.23":"2018-08-26T07:05:44.682Z","0.1.24":"2018-08-26T13:07:14.778Z","0.2.0":"2018-09-01T11:31:51.325Z","0.2.2":"2018-09-20T20:01:39.568Z","0.2.3":"2018-09-20T20:38:14.907Z","1.0.0":"2018-10-28T13:22:16.351Z","1.0.1":"2018-11-19T10:09:07.285Z","1.0.2":"2018-11-27T16:59:17.490Z","1.0.3":"2018-11-27T17:02:05.732Z","1.0.4":"2018-11-27T17:09:58.461Z","1.1.0":"2018-12-06T14:24:13.077Z","1.1.1":"2018-12-06T15:13:01.260Z","1.1.2":"2018-12-06T15:43:55.087Z","1.0.5":"2018-12-07T09:41:20.552Z","1.0.6":"2018-12-27T11:18:37.380Z","1.2.0":"2018-12-27T14:45:40.731Z","2.0.0-beta.0":"2018-12-27T14:50:25.227Z","2.0.0-beta.1":"2019-01-04T14:35:11.289Z","2.0.0-beta.2":"2019-01-04T15:11:56.202Z","2.0.0-beta.3":"2019-01-04T15:47:07.173Z","2.0.0-beta.4":"2019-01-04T17:13:16.615Z","2.0.0-beta.5":"2019-01-07T16:31:31.413Z","2.0.0-beta.6":"2019-01-09T20:48:24.418Z","2.0.0-beta.7":"2019-01-09T21:15:44.413Z","2.0.0-beta.8":"2019-01-10T08:39:32.461Z","2.0.0-beta.9":"2019-01-13T10:11:27.953Z","2.0.0-beta.10":"2019-01-14T17:11:47.179Z","2.0.0-beta.11":"2019-01-15T15:31:07.338Z","2.0.0":"2019-01-16T14:44:35.605Z","2.0.1":"2019-01-22T16:29:20.487Z","2.0.2":"2019-01-23T13:16:41.864Z","2.0.3":"2019-01-28T11:40:38.553Z","2.0.4":"2019-02-06T16:45:15.004Z","2.0.5":"2019-02-14T16:32:29.369Z","2.0.6":"2019-02-20T10:52:37.910Z","2.0.7":"2019-02-25T15:58:13.979Z","2.0.8":"2019-04-04T07:39:20.165Z","2.0.9":"2019-04-04T14:04:05.283Z","2.0.10":"2019-04-23T13:22:23.037Z","2.0.11":"2019-04-24T19:15:38.810Z","2.0.12":"2019-05-10T08:00:56.842Z","2.0.13":"2019-07-15T10:22:06.449Z","2.0.14":"2019-07-16T07:12:00.958Z","2.0.15":"2019-07-25T13:27:29.506Z","2.0.16":"2019-08-22T17:26:48.740Z","2.1.0":"2019-08-23T17:07:07.238Z","2.1.1":"2019-12-07T10:16:51.735Z","2.1.2":"2019-12-13T12:18:47.863Z","2.2.0":"2019-12-20T13:59:39.736Z","2.3.0-istanbul.0":"2019-12-20T18:00:36.555Z","2.3.0":"2020-01-16T09:31:38.607Z","2.3.1":"2020-01-22T09:37:29.322Z","2.3.2":"2020-02-07T10:00:13.043Z","2.4.0":"2020-03-16T13:02:37.139Z","2.4.1":"2020-04-10T11:30:21.502Z","2.5.0":"2020-05-05T14:21:25.525Z","3.0.0-beta.1":"2020-05-05T18:35:16.008Z","2.5.1":"2020-05-20T15:48:27.421Z","3.0.0-beta.2":"2020-05-25T18:23:05.860Z","3.0.0-beta.3":"2020-06-12T12:03:13.277Z","3.0.0":"2020-06-13T06:09:42.392Z","3.0.1":"2020-07-05T10:24:40.632Z","3.0.2":"2020-07-11T09:10:26.326Z","3.0.3":"2020-08-31T15:50:22.247Z","3.1.0":"2020-09-02T08:41:41.765Z","3.1.1":"2020-09-26T12:25:21.353Z","3.1.2":"2020-10-23T12:59:06.827Z","3.2.0":"2020-10-31T07:20:22.695Z","3.2.1":"2020-11-24T15:54:20.341Z","3.2.2":"2021-01-23T17:23:18.199Z","3.3.0":"2021-02-27T18:40:43.866Z","3.4.0":"2021-06-17T13:34:42.228Z","4.0.0-alpha.0":"2022-03-10T15:10:36.042Z","4.0.0-alpha.1":"2022-03-23T10:47:15.425Z","3.4.4":"2022-03-23T12:51:08.899Z","4.0.0":"2022-03-24T14:41:45.993Z","4.0.0-alpha.2":"2022-03-24T15:07:29.499Z","4.0.0-alpha.3":"2022-03-25T11:21:38.045Z","4.0.0-alpha.4":"2022-03-25T14:01:25.983Z","4.0.0-alpha.5":"2022-03-25T15:50:56.895Z","4.0.0-alpha.6":"2022-03-28T14:45:27.026Z","4.0.0-alpha.7":"2022-03-28T16:10:18.836Z","4.0.0-alpha.8":"2022-03-29T14:25:22.419Z","4.0.0-alpha.9":"2022-04-05T15:28:22.920Z","4.0.0-alpha.10":"2022-04-08T10:05:20.354Z","4.0.0-alpha.11":"2022-04-08T13:22:15.507Z","4.0.0-alpha.12":"2022-04-08T13:34:18.083Z","4.0.0-alpha.13":"2022-04-08T13:41:11.334Z","4.0.0-alpha.14":"2022-04-08T13:54:33.735Z","4.0.0-alpha.15":"2022-04-08T16:01:39.243Z","4.0.0-alpha.b94c36":"2022-04-11T09:18:42.080Z","4.0.0-alpha.16":"2022-04-11T11:01:34.216Z","4.0.0-alpha.17":"2022-04-11T11:47:18.801Z","4.0.0-alpha.17.1":"2022-04-11T15:55:59.296Z","4.0.0-alpha.17.2":"2022-04-12T09:50:56.245Z","4.0.0-alpha.17.3":"2022-04-12T09:53:46.567Z","4.0.0-alpha.17.4":"2022-04-12T14:19:21.848Z","4.0.0-alpha.17.10":"2022-04-13T08:48:13.006Z","4.0.0-alpha.17.11":"2022-04-13T08:55:28.705Z","4.0.0-alpha.17.12":"2022-04-13T08:59:18.191Z","4.0.0-alpha.18":"2022-04-13T10:16:22.445Z","4.0.0-alpha.19":"2022-04-13T10:52:43.399Z","4.0.0-alpha.20":"2022-04-13T16:56:30.670Z","4.0.0-alpha.21":"2022-04-19T13:04:59.449Z","4.0.0-dev.b82389f":"2022-04-21T11:43:48.621Z","4.0.0-dev.8d4934c":"2022-04-21T12:23:29.958Z","4.0.0-dev.baa1b2f":"2022-04-21T12:48:49.894Z","4.0.0-dev.8f72c9c":"2022-04-21T13:45:39.737Z","4.0.0-alpha.22":"2022-04-21T13:57:43.241Z","4.0.0-dev.51e05d8":"2022-04-21T14:00:13.993Z","4.0.0-dev.498bffb":"2022-04-27T14:30:48.667Z","4.0.0-alpha.23":"2022-04-27T14:40:22.875Z","4.0.0-dev.de3905f":"2022-04-27T14:42:58.991Z","4.0.0-dev.0e1e2e5":"2022-05-04T10:15:29.078Z","4.0.0-dev.b7bb3ba":"2022-05-05T11:26:46.206Z","4.0.0-dev.c694a2a":"2022-05-06T09:00:01.386Z","4.0.0-alpha.24":"2022-05-06T09:16:55.690Z","4.0.0-dev.ba7033f":"2022-05-06T09:19:34.936Z","4.0.0-dev.bc0a5b5":"2022-05-06T12:35:45.074Z","4.0.0-dev.900b71d":"2022-05-06T14:08:01.938Z","4.0.0-dev.ba8cde5":"2022-05-13T09:05:27.463Z","4.0.0-dev.104f4a3":"2022-05-16T16:16:34.116Z","4.0.0-dev.e3fa452":"2022-05-16T16:34:25.972Z","4.0.0-dev.9e7c3d6":"2022-05-17T12:54:03.719Z","4.0.0-dev.d9a8ab2":"2022-05-17T13:05:27.327Z","4.0.0-dev.e275a26":"2022-05-17T13:09:12.564Z","4.0.0-dev.8aa0bc2":"2022-05-17T13:18:02.328Z","4.0.0-dev.219fe4f":"2022-05-17T13:37:36.381Z","4.0.0-dev.7e092e8":"2022-05-17T14:30:31.023Z","4.0.0-alpha.25":"2022-05-17T14:42:04.945Z","4.0.0-dev.2ef3d81":"2022-05-17T14:44:38.681Z","4.0.0-dev.539c432":"2022-06-07T07:02:32.911Z","4.0.0-dev.2fe3f15":"2022-06-07T09:45:43.401Z","4.0.0-alpha.26":"2022-06-07T09:56:22.506Z","4.0.0-dev.b2ee4d0":"2022-06-07T09:58:47.136Z","4.0.0-dev.4fd670d":"2022-06-07T11:27:16.808Z","4.0.0-dev.0f1b253":"2022-06-07T11:39:22.831Z","4.0.0-dev.b21809a":"2022-06-08T15:49:25.670Z","4.0.0-dev.1c384e6":"2022-06-15T11:32:09.236Z","4.0.0-dev.d8521e6":"2022-06-30T12:00:08.337Z","4.0.0-dev.4867133":"2022-07-07T13:39:57.776Z","4.0.0-dev.838cf4d":"2022-07-08T10:05:45.610Z","4.0.0-dev.06401c4":"2022-07-12T14:10:04.539Z","4.0.0-dev.79d1c7b":"2022-07-13T14:18:48.194Z","4.0.0-dev.5587e09":"2022-07-19T10:07:36.556Z","4.0.0-alpha.27":"2022-07-19T10:21:29.362Z","4.0.0-dev.5c29ca4":"2022-07-19T10:24:10.557Z","4.0.0-dev.4ce739d":"2022-07-21T13:20:07.454Z","4.0.0-dev.c98112a":"2022-07-21T14:18:31.040Z","4.0.0-alpha.28":"2022-07-21T15:59:47.311Z","4.0.0-dev.b028d7f":"2022-07-21T16:02:27.664Z","4.0.1":"2022-07-22T09:28:14.397Z","4.0.1-dev.37f589d":"2022-07-22T09:30:45.144Z","4.0.1-dev.2e1837c":"2022-07-25T13:18:21.291Z","4.0.2-dev.0a87072":"2022-07-26T13:46:30.124Z","4.0.2":"2022-07-26T14:11:48.060Z","4.0.2-dev.b329845":"2022-07-26T14:15:07.110Z","4.0.2-dev.c513a49":"2022-07-28T12:37:40.251Z","4.0.2-dev.382de5b":"2022-07-28T14:26:28.713Z","4.0.2-dev.4e0598e":"2022-07-28T15:26:50.972Z","4.0.2-dev.1fe07bb":"2022-07-29T11:46:53.529Z","4.0.3-dev.bd741a4":"2022-07-29T13:54:16.257Z","4.0.3-dev.3b7020d":"2022-08-01T08:27:59.133Z","4.0.3-dev.0c13fb9":"2022-08-01T08:45:41.578Z","4.0.3-dev.0f5af9a":"2022-08-01T09:20:11.353Z","4.0.3-dev.d1f8ca7":"2022-08-01T13:55:23.595Z","4.0.3":"2022-08-02T08:25:01.462Z","4.0.3-dev.cae5bac":"2022-08-02T08:28:15.579Z","4.0.3-dev.41bc646":"2022-08-03T09:43:14.275Z","4.0.4-dev.18b219e":"2022-08-03T09:48:44.149Z","4.0.4":"2022-08-03T09:59:53.391Z","4.0.4-dev.e7e18f6":"2022-08-03T10:03:17.705Z","4.0.5-dev.8eb1578":"2022-08-05T10:53:55.641Z","4.0.5-dev.e22c4e6":"2022-08-05T13:06:48.620Z","4.0.5-dev.89498ae":"2022-08-10T10:21:16.840Z","4.0.5-dev.71e4b73":"2022-08-19T10:31:35.572Z","4.0.5":"2022-08-19T11:46:01.091Z","4.0.5-dev.2f8bbd1":"2022-08-19T11:48:56.830Z","4.0.5-dev.b96f0af":"2022-08-30T08:27:37.666Z","4.0.6-dev.f0bea18":"2022-08-30T11:11:42.217Z","4.0.6":"2022-08-30T11:31:56.285Z","4.0.6-dev.6f16299":"2022-08-30T11:34:47.236Z","4.0.7-dev.60ae4b4":"2022-09-16T13:40:54.335Z","4.0.7":"2022-09-16T13:42:26.312Z","4.0.7-dev.2d19dde":"2022-09-16T13:45:21.885Z","4.0.7-dev.dd21fb0":"2022-09-16T15:34:51.201Z","4.0.8-dev.cc2dc55":"2022-09-16T16:03:56.252Z","4.0.8-dev.cf5427e":"2022-09-16T16:53:15.008Z","4.0.8-dev.d863d0a":"2022-09-19T10:43:13.832Z","4.0.8-dev.0c72c63":"2022-09-26T11:17:50.797Z","4.0.8-dev.f3d5029":"2022-09-27T09:41:22.188Z","4.0.8-dev.379ba2f":"2022-09-27T10:12:06.463Z","4.0.8-dev.9bdd800":"2022-10-03T12:21:56.491Z","4.0.8-dev.06c4b26":"2022-10-04T11:57:43.208Z","4.0.8-dev.90390a9":"2022-10-04T15:38:11.456Z","4.0.8-dev.cf42065":"2022-10-31T10:43:49.601Z","4.0.8-dev.8671be4":"2022-10-31T14:32:20.574Z","4.0.8-dev.4541f86":"2022-10-31T15:45:34.768Z","4.0.8-dev.4946c9b":"2022-11-10T15:00:25.159Z","4.0.8-dev.edcb2d5":"2022-11-28T14:07:43.736Z","4.0.8-dev.4557ff9":"2023-01-03T15:51:59.807Z","4.0.8-dev.d4cc0eb":"2023-01-10T12:44:53.316Z","4.0.8-dev.e1d3ccd":"2023-01-11T11:37:41.140Z","4.0.8-dev.4d27a34":"2023-01-23T15:26:03.534Z","4.0.8-dev.a50814e":"2023-01-24T15:33:25.866Z","4.0.8-dev.166b72c":"2023-01-26T11:03:36.075Z","4.0.8-dev.0bc9af4":"2023-01-26T13:02:00.400Z","4.0.8":"2023-01-26T13:40:33.450Z","4.0.8-dev.13d1af0":"2023-01-26T13:44:32.982Z","4.0.9-dev.f8ca718":"2023-01-26T18:16:24.427Z","4.0.9":"2023-01-27T13:32:27.897Z","4.0.9-dev.a1d89d0":"2023-01-27T13:35:46.770Z","4.0.10-dev.4740ec6":"2023-02-06T11:40:13.927Z","4.0.10":"2023-02-15T16:37:44.104Z","4.0.10-dev.0915e72":"2023-02-15T16:41:13.365Z","4.0.10-dev.efd5f2a":"2023-10-12T11:51:51.438Z","4.0.10-dev.238c11c":"2023-10-12T12:08:56.071Z"},"maintainers":[{"name":"ethworks","email":"eng-services@wallfacer.io"}],"description":"Sweeter, faster and simpler than truffle.","repository":{"type":"git","url":"git+ssh://git@github.com/EthWorks/Waffle.git"},"author":{"name":"Marek Kirejczyk","email":"account@ethworks.io","url":"http://ethworks.io"},"license":"MIT","readme":"","readmeFilename":"","homepage":"https://github.com/EthWorks/Waffle","keywords":["ethereum","smart-contracts","solidity","compiler","testing","javascript","typescript","library"],"bugs":{"url":"https://github.com/EthWorks/Waffle/issues"}}