{"_id":"@maticnetwork/eth-dagger","_rev":"26-4716153f4b201ccb27b3577c2c7c104b","name":"@maticnetwork/eth-dagger","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"@maticnetwork/eth-dagger","version":"0.0.1","keywords":["ethereum","es6","dagger","matic"],"author":{"name":"Jaynti Kanani","email":"jdkanani@gmail.com"},"license":"MIT","_id":"@maticnetwork/eth-dagger@0.0.1","maintainers":[{"name":"ptsayli","email":"ptsayli@gmail.com"},{"name":"jdkanani","email":"jdkanani@gmail.com"}],"homepage":"https://github.com/jdkanani/eth-dagger.js","bugs":{"url":"https://github.com/jdkanani/eth-dagger.js/issues"},"bin":{"woodendagger":"lib/wooden-dagger.js"},"dist":{"shasum":"ca7b108d9a5883d2551bfa66b952d9a6b69579f5","tarball":"https://registry.npmjs.org/@maticnetwork/eth-dagger/-/eth-dagger-0.0.1.tgz","fileCount":27,"integrity":"sha512-nWFSWUadEcwOot3Maed/LVrTqELOBPr6qtkVXt3KjWlUl/eERv4847QVkvuSm+GVt5SI6hF/uqsU43cvUvYRVQ==","signatures":[{"sig":"MEQCIFMarMJ97+BZkASYtSKUbrs2wpx5fLsAyc7FQZvK+T2hAiAD0VhKAo4un7uNRPCow7tte1tbCkFFY/EsM6H4eQNdDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3284305,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd19a3CRA9TVsSAnZWagAABogP/1SVIQL+tuK5zTX+b6nM\n2ZYQRiEgq3Pmk4QcSxGUM2TbR9n7zgYm5vTcGQ58VtZPioexRoqDcqgcwSIl\nAAAKGNDS42RvGE/cxUq6N+Ko1THtptvcm49yLJ6OT8CVcA7DCrUKmGho9D8j\nvDGN3/RzT+dIWMHUC56wGWJszZHGOp1LyxSMdBp0Z7F4TA2rNTDH3XPj+SUh\nBPgMVMSZ0FbG4tZ6ikw6NC2gCRbn3lHjwF4J0PRt7DmKEUMbzKYKkb0DgLOy\ns8Vh//4qkMtiZ/e7DSdEWQsRJghXpTTSCqfI2qdau0Cd00RBvgC8ctnwDWD0\nf6GXGU942kQyV/fWS5NXxhShyNL1F4kher2Ilr2OBFaZPdCdsmHZMIFR2auX\nOTS1J0/LB4qBpHJc/QbXJO3vwmxLL7xGqBiReXJ7AyJ9JCeYNW6obuEYPjTt\noA8t07dfM6cVi5WWKVq/so1mMIjIVFv8wROHfsjHKgRL23BTCAwGZuCwpMGq\n5jwkeMHk8F0z0wFnOkR7zMLmWaNybmEDNWOYCOLLt8KYCjBckDgOmWNqDKSk\nplUVjUZNeFWj+e+tt8Vf790ktYQAiTnqjJBuEXoiABIdVaez45FgxkKc/zCx\n0jxrdPMCpA3USwoaUBc/FoxeKzce+zNixDk37erjEHGdvtcaDYHnSz+uPidS\nykd+\r\n=BEZk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"5e88482deec164611fbf35bdc3745e139cdfe19e","scripts":{"lint":"eslint src/**/*.js test/**/*.spec.js","pack":"webpack && webpack --env build","test":"mocha --require @babel/register --colors ./test/**/*.spec.js","build":"npm run lint && npm run clean && babel src/ --out-dir lib/ && npm run pack","clean":"rm -rf lib","prepublish":"npm run build","test:watch":"mocha --require @babel/register --colors -w ./test/**/*.spec.js"},"_npmUser":{"name":"ptsayli","email":"ptsayli@gmail.com"},"repository":{"url":"git+https://github.com/jdkanani/eth-dagger.js.git","type":"git"},"_npmVersion":"6.4.1","description":"Library to connect with dagger server and manage subscriptions for Ethereum","directories":{"lib":"./lib"},"_nodeVersion":"8.15.1","dependencies":{"web3":"1.0.0-beta.34","mosca":"2.8.3","yargs":"8.0.2","async-mqtt":"1.0.1","ethjs-util":"0.1.6","webpack-cli":"2.0.10","@babel/polyfill":"7.0.0-beta.54","ethereumjs-util":"5.2.0","escape-string-regexp":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"chai":"3.5.0","mocha":"3.3.0","eslint":"4.18.2","webpack":"4.29.6","@babel/cli":"7.2.3","@babel/core":"7.4.0","babel-eslint":"7.2.3","babel-loader":"8.0.0-beta.0","eslint-loader":"2.0.0","@babel/register":"7.0.0-beta.56","@babel/preset-env":"7.4.2","eslint-plugin-node":"6.0.0","eslint-plugin-react":"7.2.0","eslint-config-airbnb":"15.1.0","eslint-plugin-import":"2.8.0","eslint-plugin-promise":"3.6.0","eslint-config-standard":"11.0.0-beta.0","eslint-plugin-jsx-a11y":"5.0.1","eslint-plugin-standard":"3.0.1","babel-plugin-add-module-exports":"0.2.1"},"_npmOperationalInternal":{"tmp":"tmp/eth-dagger_0.0.1_1574426295237_0.6967076958454799","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@maticnetwork/eth-dagger","version":"0.0.2","keywords":["ethereum","es6","dagger","matic"],"author":{"name":"Jaynti Kanani","email":"jdkanani@gmail.com"},"license":"MIT","_id":"@maticnetwork/eth-dagger@0.0.2","maintainers":[{"name":"jdkanani","email":"jdkanani@gmail.com"},{"name":"ptsayli","email":"ptsayli@gmail.com"}],"homepage":"https://github.com/jdkanani/eth-dagger.js","bugs":{"url":"https://github.com/jdkanani/eth-dagger.js/issues"},"bin":{"woodendagger":"lib/wooden-dagger.js"},"dist":{"shasum":"b26303a44af34c1685924739cc0037e21b003448","tarball":"https://registry.npmjs.org/@maticnetwork/eth-dagger/-/eth-dagger-0.0.2.tgz","fileCount":26,"integrity":"sha512-ALKe6khYwcUI61yo6M6gFu2rPH4d7mLPaMtna7I/qheSN0uPTTOCwvZT8G4+G5u/HTtKMuXMEBWZFyG6BDdtvw==","signatures":[{"sig":"MEYCIQDI0y7guvesP6n3YCvrarQy41NuXPGdTM226klNeEddIwIhAITEh7nhtSkImZp0JG0/nYTk7e0j5eCEKObbzwRvycEB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3578549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejuxfCRA9TVsSAnZWagAAnk4P/0l3EksboZRWb4RmJ30c\n0U2lcxJhOrdm5pZWwuCjBsxX4II5/6+UK/4Z4SblF48w7VQCyOBg0cleehVu\nvnNkKjzBtEhIbcK2K5odF+tfnk7QvjyM9zyK/B77jnHCOQrEKdxXF1i/wdV0\nv1JkOsyu4As73uTU5QxNe16fYygm/WFKJXS/bs65LzFAihPh98GIAo1r7hk0\n8+ZcVG32wAnAojQxS1xjVp84I1ZVp36Kk9hO8PYSeaGwLYZLiolRx/4R//6y\nQgq4LLeBy1M2LkFDe4sTQ4MY5UGBeHih3geQ6sBSzBWLRdyqqHypzt/D13pe\npDGNojGthw+hJCLZyQK2xxKyuWoC/A8CBcXKNPf7oKgjFYKc0HHXzkNiLbB1\n9NFD2Vrrh8xYpKf7yg+sNXJ/Axio0GwNSOYkt+2PWCPttIMeR6GEncGlc9mi\nq64A5tsn2rElDYPNZfvv3t2KO6WB74Wa4K8mkpp0HY+UKBBlfYOuV33ICZzA\nRJ9eSc2NeTqyS7GkuaTF8AbooOgzWSNRUQNnqwEghRSxVDv2zfaRrAoZlpR/\nu/PNUsOZgDzSk26mgt2QCuaduStA9lSOEl6lmJDX4AQSX2gSjSFlpOyWV9Hr\nCGASb5RfJ5UVTaZCCIbpwvTyi+LD5AmsId/ukFe5fSk2WA8c4YQ/Arelnzph\nFkhn\r\n=J/Qu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"1f30ea6a35918c783de35823f40197f7158f388f","scripts":{"lint":"eslint src/**/*.js test/**/*.spec.js","pack":"webpack && webpack --env build","test":"mocha --require @babel/register --colors ./test/**/*.spec.js","build":"npm run lint && npm run clean && babel src/ --out-dir lib/ && npm run pack","clean":"rm -rf lib","prepublish":"npm run build","test:watch":"mocha --require @babel/register --colors -w ./test/**/*.spec.js"},"_npmUser":{"name":"ptsayli","email":"ptsayli@gmail.com"},"repository":{"url":"git+https://github.com/jdkanani/eth-dagger.js.git","type":"git"},"_npmVersion":"6.13.4","description":"Library to connect with dagger server and manage subscriptions for Ethereum","directories":{"lib":"./lib"},"_nodeVersion":"10.19.0","dependencies":{"async-mqtt":"^2.5.0","mqtt-regex":"^1.0.5","@babel/polyfill":"7.8.7","ethereumjs-util":"^6.2.0","escape-string-regexp":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"4.2.0","web3":"1.2.6","mocha":"7.1.1","eslint":"6.8.0","webpack":"4.42.1","@babel/cli":"7.8.0","@babel/core":"7.9.0","webpack-cli":"^3.3.11","babel-eslint":"10.1.0","babel-loader":"8.1.0","eslint-loader":"4.0.0","@babel/register":"7.9.0","@babel/preset-env":"7.9.0","eslint-plugin-node":"11.1.0","eslint-plugin-react":"7.19.0","eslint-config-airbnb":"18.1.0","eslint-plugin-import":"2.20.2","eslint-plugin-promise":"4.2.1","eslint-config-standard":"14.1.1","eslint-plugin-jsx-a11y":"6.2.3","eslint-plugin-standard":"4.0.1","babel-plugin-add-module-exports":"1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/eth-dagger_0.0.2_1586424927321_0.3628871432071201","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@maticnetwork/eth-dagger","version":"0.0.3","keywords":["ethereum","es6","dagger","matic"],"author":{"name":"Jaynti Kanani","email":"jdkanani@gmail.com"},"license":"MIT","_id":"@maticnetwork/eth-dagger@0.0.3","maintainers":[{"name":"jdkanani","email":"jdkanani@gmail.com"},{"name":"ptsayli","email":"ptsayli@gmail.com"}],"homepage":"https://github.com/jdkanani/eth-dagger.js","bugs":{"url":"https://github.com/jdkanani/eth-dagger.js/issues"},"dist":{"shasum":"23d59cde75623825fed9dd7c8a45a6d9a8321849","tarball":"https://registry.npmjs.org/@maticnetwork/eth-dagger/-/eth-dagger-0.0.3.tgz","fileCount":26,"integrity":"sha512-/itimLAUhMZPkp7xTzNcP1WkzKCSJdB1RMm9zNkntGnrgzJaLuFr9e+IliidKwtgtGsG5jPs1M63IkUatTSdFA==","signatures":[{"sig":"MEUCIQC2m+AMKW6F2KbPtEAgVB7x9ywTpJSsCaxTmmGKIu1fAgIgJdxd+KPuUrDq1oDCkT4EN6rj0avhDg9fE/J3WBSUgt0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3578496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2Q0gCRA9TVsSAnZWagAACWQP/ROd5YL0eSX/Cw1mJ0iP\nMUunS2vjUoUdneAdKtRqew6Jw9VTYH3bG5ySvvzCnMMuRogn4s+Xg3UQsEHr\nZKF8B274GPSst+1eYJ1oZLNMEOoJJ7kaRAZu8zB5MHpBz0rZzn2JDuozYdrk\na7q0IMu9LCvbMIkHSdz4OLnDQ1p5QJHK15KJw2P6vPvcLP4e3JMuusdcc1G4\nLVZKdQRqRw79dhkGfqI21Po23PKzvyEG+H8+O0FLbwYv0TMyNv9mYrtI5RvA\n/FbV6v3BOdV02iJ8suFiZDHR8FlpgSJLfvEyNEpjIoLEVr/Ur9RO9//ZQP5i\n1XDiqwiWk2r+2jJw/76X/kdLCPEh3Q5ecDnJnETKh5ZICQrDkcqypqblTEBs\n7ZdVhxtrFV+kAJG5EXuhAtd9nBAC8YDBho8jHHrm26DVvKuciQ1cdNYKXrky\nBnvUFpSMcmb/bCcS/k5PbsplhrcATr8clsdt1a+m6i7RqGiYIFrKRFlu9aax\nRapHKGADp1KbZtGywyU5hPLagcbA4WqEauRmRMPHhIC6D4R/6iszA2BBI9Jy\nZ8Y9rdsiA2sl2M/wBFjy4X8fEtYYLSwNF2doH+mT+s0SZtuWijCcOxGLy7tb\nZ0Y+knGADtPVMO4Rh1pIM8EhDrMruA73Nn3B0A+wo04AR2a1436KLvEzN8jn\n655o\r\n=B31x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"1f30ea6a35918c783de35823f40197f7158f388f","scripts":{"lint":"eslint src/**/*.js test/**/*.spec.js","pack":"webpack && webpack --env build","test":"mocha --require @babel/register --colors ./test/**/*.spec.js","build":"npm run lint && npm run clean && babel src/ --out-dir lib/ && npm run pack","clean":"rm -rf lib","prepublish":"npm run build","test:watch":"mocha --require @babel/register --colors -w ./test/**/*.spec.js"},"_npmUser":{"name":"ptsayli","email":"ptsayli@gmail.com"},"repository":{"url":"git+https://github.com/jdkanani/eth-dagger.js.git","type":"git"},"_npmVersion":"6.4.1","description":"Library to connect with dagger server and manage subscriptions for Ethereum","directories":{"lib":"./lib"},"_nodeVersion":"11.1.0","dependencies":{"async-mqtt":"^2.5.0","mqtt-regex":"^1.0.5","@babel/polyfill":"7.8.7","ethereumjs-util":"^6.2.0","escape-string-regexp":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"4.2.0","web3":"1.2.6","mocha":"7.1.1","eslint":"6.8.0","webpack":"4.42.1","@babel/cli":"^7.8.0","@babel/core":"^7.9.0","webpack-cli":"^3.3.11","babel-eslint":"^10.1.0","babel-loader":"^8.1.0","eslint-loader":"4.0.0","@babel/register":"^7.9.0","@babel/preset-env":"^7.9.0","eslint-plugin-node":"11.1.0","eslint-plugin-react":"7.19.0","eslint-config-airbnb":"18.1.0","eslint-plugin-import":"2.20.2","eslint-plugin-promise":"4.2.1","eslint-config-standard":"14.1.1","eslint-plugin-jsx-a11y":"6.2.3","eslint-plugin-standard":"4.0.1","babel-plugin-add-module-exports":"1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/eth-dagger_0.0.3_1587746494612_0.05048918436324801","host":"s3://npm-registry-packages"}}},"time":{"created":"2019-11-22T12:38:09.546Z","modified":"2026-02-26T19:53:50.415Z","0.0.1":"2019-11-22T12:38:15.484Z","0.0.2":"2020-04-09T09:35:27.506Z","0.0.3":"2020-04-24T16:41:34.910Z"},"bugs":{"url":"https://github.com/jdkanani/eth-dagger.js/issues"},"author":{"name":"Jaynti Kanani","email":"jdkanani@gmail.com"},"license":"MIT","homepage":"https://github.com/jdkanani/eth-dagger.js","keywords":["ethereum","es6","dagger","matic"],"repository":{"url":"git+https://github.com/jdkanani/eth-dagger.js.git","type":"git"},"description":"Library to connect with dagger server and manage subscriptions for Ethereum","maintainers":[{"email":"devops@polygon.technology","name":"devops-polygon.technology"},{"email":"jinfante@polygon.technology","name":"jminfantepolygon"},{"email":"daryl@darylcollins.com","name":"maximushaximus"},{"email":"mtwardzicki@polygon.technology","name":"mtwardzicki"},{"email":"agupta@katana.network","name":"agupta1411"},{"email":"rajesh18495@gmail.com","name":"py-zoid"}],"readme":"### eth-dagger\n\n[![Build Status](https://travis-ci.org/maticnetwork/eth-dagger.js.svg?branch=master)](https://travis-ci.org/maticnetwork/eth-dagger.js)\n\neth-dagger is library for dagger project written in node.js and browser. It uses dagger server to get realtime updates from Ethereum Network.\n\n**About dagger**\n\nDagger helps users to develop faster and better Ethereum DApps. For more information:\n\n- [Installation](#install)\n- [Example](#example)\n- [Network](#network)\n- [Events](#events)\n- [API](#api)\n- [Examples](#examples)\n- [Support](#support)\n- [License](#license)\n\n<a name=\"install\"></a>\n\n## Installation\n\n#### NPM\n---\n```sh\n# Using Yarn\nyarn add eth-dagger\n\n# Using NPM\nnpm install @maticnetwork/eth-dagger --save\n```\n\n#### Direct `<script>` Include\n---\n\nSimply download `lib/eth-dagger.min.js` and include with a script tag. `Dagger` will be registered as a global variable.\n\nUsage:\n```js\nvar Dagger = window.Dagger\n```\n\n##### CDN\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/eth-dagger/lib/eth-dagger.min.js\"></script>\n```\n\nMatic is also available on [unpkg](https://unpkg.com/eth-dagger/lib/eth-dagger.min.js)\n\n<a name=\"network\"></a>\n\n## Network\n\n**Mainnet**\n\n```\nWebsocket: wss://mainnet.dagger.matic.network\nSocket: mqtts://mainnet.dagger.matic.network (You can also use `ssl://` protocol)\n```\n\n**Kovan**\n\n```\nWebsocket: wss://kovan.dagger.matic.network\nSocket: mqtts://kovan.dagger.matic.network (You can also use `ssl://` protocol)\n```\n\n**Ropsten**\n\n```\nWebsocket: wss://ropsten.dagger.matic.network\nSocket: mqtts://ropsten.dagger.matic.network (You can also use `ssl://` protocol)\n```\n\n**Matic testnet**\n\n```\nWebsocket: wss://matic.dagger2.matic.network\nSocket: mqtts://matic.dagger2.matic.network (You can also use `ssl://` protocol)\n```\n\n<a name=\"example\"></a>\n\n## Example\n\n```javascript\nvar Dagger = require(\" @maticnetwork/eth-dagger\");\n\n// connect to Dagger ETH main network (network id: 1) over web socket\nvar dagger = new Dagger(\"wss://mainnet.dagger.matic.network\"); // dagger server\n\n// Use mqtt protocol for node (socket)\n// var dagger = new Dagger('mqtts://mainnet.dagger.matic.network'); // dagger server\n\n// get new block as soon as it gets created\ndagger.on(\"latest:block\", function(result) {\n  console.log(\"New block created: \", result);\n});\n\n// get only block number (as it gets created)\ndagger.on(\"latest:block.number\", function(result) {\n  console.log(\"Current block number: \", result);\n});\n```\n\n**Test dagger server**\n\nThis library consists `woodendagger` executable which is test dagger server on your local machine. So you can test with TestRPC.\n\nPlease do not use `woodendagger` in production. It's only for development purpose. It doesn't support `removed` flag.\n\n```bash\n$ woodendagger --url=https://mainnet.infura.io # or http://localhost:8545 for local json-rpc\n\n# If you want to start dagger server on different ports,\n# sockport: socket port for backend connection over TCP\n# wsport: websocket port for frontend connection over websocket\n$ woodendagger --url=http://localhost:8545 --sockport=1883 --wsport=1884\n\n# To connect from dagger:\nvar dagger = new Dagger('mqtt://localhost:1883')\n```\n\n<a name=\"events\"></a>\n\n## Events\n\n**Ethereum events**\n\nEvery ethereum event has room, and there are two rooms: `latest` and `confirmed`. `latest` events are fired immediately block included in chain. `confirmed` events are fired after 12 confirmations.\n\nIf you want to show updates on UI in your DApp, use `latest` events. It will help to make UI/UX better and user friendly.\n\nUse `confirmed` events for irreversible tasks from server or on UI. Like sending email, notifications or allow user to do subsequent task on UI after one transaction gets confirmed.\n\nEvery event has to start with room:\n\n```javascript\n// latest block number\ndagger.on(\"latest:block.number\", function(result) {\n  console.log(\"Current block number: \", result.data);\n});\n\n// confirmed (irreversible) incoming transaction\ndagger.on(\"confirmed:addr/0xa7447.../tx/in\", function(result) {\n  // send email to user about new transaction she received\n});\n\n// confirmed (irreversible) contract deployment\ndagger.on(\"confirmed:tx/0xd66169d..../receipt\", function(result) {\n  // send notification to user saying - her contract has been deployed successfully\n});\n```\n\nYou can use wildcard for events too. There are two type of wildcards: `+` (for single) and `#` (for multiple). Use with caution as it will fetch more data then you need, and can bombard with data to your DApp.\n\n```javascript\n// Listen for every outgoing transaction for any address\ndagger.on('latest:addr/+/tx/out', ...)\n\n// Triggers when 1 GNT (Golem token) get transferred to Golem multisig wallet\ndagger.on('latest:log/0xa74476443119a942de498590fe1f2454d7d4ac0d/filter/0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef/+/0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9/#', ...)\n\n// Triggers when any amount of GNT (Golem token) get sent from Golem multisig wallet\ndagger.on('latest:log/0xa74476443119a942de498590fe1f2454d7d4ac0d/filter/0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef/0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9/#', ...)\n\n// Listen for every Golem token transfer (notice `#` at the end)\ndagger.on('latest:log/0xa74476443119a942de498590fe1f2454d7d4ac0d/filter/0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef/#', ...)\n```\n\n| Ethereum event                                 | When?                                                                   | `removed` flag |\n| ---------------------------------------------- | ----------------------------------------------------------------------- | -------------- |\n| block.number                                   | For every new block number created                                      |                |\n| block.hash                                     | For every new block hash created                                        | Yes            |\n| block                                          | For every new block created                                             | Yes            |\n| block/`number`                                 | When particular block in future included in chain                       | Yes            |\n| addr/`address`/tx                              | On every new transaction for `address`                                  | Yes            |\n| addr/`address`/tx/out                          | On every new outgoing transaction for `address`                         | Yes            |\n| addr/`address`/tx/in                           | On every new incoming transaction for `address`                         | Yes            |\n| tx/`txId`                                      | When given `txId` included in block                                     | Yes            |\n| tx/`txId`/success                              | When tx status is success (included in block) for `txId`                | Yes            |\n| tx/`txId`/fail                                 | When tx fails (included in block) for `txId`                            | Yes            |\n| tx/`txId`/receipt                              | When receipt is generated (included in block) for `txId`                | Yes            |\n| addr/`contractAddress`/deployed                | When new `contractAddress` included in block                            | Yes            |\n| log/`contractAddress`                          | When new log generated for `contractAddress`                            | Yes            |\n| log/`contractAddress`/filter/`topic0`/`topic1` | When new log with `topic0` and `topic1` generated for `contractAddress` | Yes            |\n\n**Dagger events**\n\n| Dagger event      | When?                          | args           |\n| ----------------- | ------------------------------ | -------------- |\n| connection.status | When connection status changes | value: Boolean |\n\n> Event names are case-sensitive. `address`, `txId` and `topics` must be in lowercase.\n\n<a name=\"api\"></a>\n\n## API\n\n- <a href=\"#connect\"><code>Dagger.<b>connect()</b></code></a>\n- <a href=\"#on\"><code>dagger.<b>on()</b></code></a>\n- <a href=\"#once\"><code>dagger.<b>once()</b></code></a>\n- <a href=\"#off\"><code>dagger.<b>off()</b></code></a>\n- <a href=\"#of\"><code>dagger.<b>of()</b></code></a>\n- <a href=\"#end\"><code>dagger.<b>end()</b></code></a>\n- <a href=\"#contract\"><code>dagger.<b>contract()</b></code></a>\n\n---\n\n<a name=\"connect\"></a>\n\n### Dagger.connect(url, options)\n\nConnects to the dagger specified by the given url and options. It returns a Dagger object.\n\n---\n\n<a name=\"on\"></a>\n\n### dagger.on(event, fn)\n\nSubscribe to a topic\n\n- `event` is a `String` topic to subscribe to. `event` wildcard characters are supported (`+` - for single level and `#` - for multi level)\n- `fn` - `function (data, removed)`\n  fn will be executed when event occurred:\n  - `data` data from event\n  - `removed` flag saying if data is removed from blockchain due to re-organization.\n\n---\n\n<a name=\"once\"></a>\n\n### dagger.once(event, fn)\n\nSame as `on` but will be fired only once.\n\n---\n\n<a name=\"off\"></a>\n\n### dagger.off(event, fn)\n\nUnsubscribe from a topic\n\n- `event` is a `String` topic to unsubscribe from\n- `fn` - `function (data, removed)`\n\n---\n\n<a name=\"of\"></a>\n\n### dagger.of(room)\n\nCreate room out of dagger. `room` has to be one out of two values: `latest` and `confirmed`\n\n- `room` object has following methods:\n  - `on` same as dagger `on`\n  - `once` same as dagger `once`\n  - `off` same as dagger `off`\n\n---\n\n<a name=\"end\"></a>\n\n### dagger.end([force])\n\nClose the dagger, accepts the following options:\n\n- `force`: passing it to true will close the dagger right away. This parameter is optional.\n\n---\n\n<a name=\"contract\"></a>\n\n### dagger.contract(web3Contract)\n\nCreates web3 contract wrapper to support dagger.\n\n- `web3Contract`: contract object web3. Example: `new web3.eth.Contract(abi, address)`\n\n  ```javascript\n  // web3 contract\n  var web3Contract = new web3.eth.Contract(abi, address);\n\n  // dagger contract\n  var contract = dagger.contract(web3Contract);\n  var filter = contract.events.Transfer({\n    filter: { from: \"0x123456...\" },\n    room: \"latest\"\n  });\n  // watch\n  filter.watch(function(data, removed) {\n    // data.returnValues.to : address to which it has been transferred to\n    // data.returnValues.value : value which has been transferred\n  });\n  // watch only once\n  filter.watchOnce(function(data, removed) {\n    // data.returnValues.to : address to which it has been transferred to\n    // data.returnValues.value : value which has been transferred\n  });\n  // stop watching\n  filter.stopWatching();\n  ```\n\n<a name=\"examples\"></a>\n\n## Examples\n\n**To listen ERC20 transfer event**\n\nUse following topic to listen ERC20 transfer event. Use `+` instead of <contract-address> or <from-address> or <to-address> if you want to listen for `any` value.\n\nFor latest events:\n\n```\nlatest:log/<contract-address>/filter/0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef/<from-address>/<to-address>\n```\n\nFor confirmed events:\n\n```\nconfirmed:log/<contract-address>/filter/0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef/<from-address>/<to-address>\n```\n\n\n<a name=\"support\"></a>\n\n## Support\n\nIf you have any queries, feedback or feature requests, feel free to reach out to us on telegram: https://t.me/maticnetwork\n\n<a name=\"license\"></a>\n\n## License\n\nMIT\n","readmeFilename":"README.md"}