{"_id":"@atomicloans/market-client","_rev":"1-e78cdedc3fcad2a6547c7963cd9790cc","name":"@atomicloans/market-client","dist-tags":{"latest":"0.4.2"},"versions":{"0.4.2":{"name":"@atomicloans/market-client","umdName":"MarketClient","umdExport":"default","version":"0.4.2","description":"Query different blockchains with account management using a single and simple interface.","module":"lib/index.js","main":"dist/index.cjs.js","scripts":{"build:node":"webpack --config ../../webpack/webpack.node.config.js","build:browser":"webpack --config ../../webpack/webpack.browser.config.js","build":"webpack --config ../../webpack/webpack.config.js"},"author":{"name":"AtomicLoans","email":"info@atomicloans.io"},"license":"MIT","dependencies":{"@babel/runtime":"^7.4.3","@liquality/ethereum-utils":"^0.4.3","ajv":"^6.10.0","bignumber.js":"^9.0.0","debug":"^4.1.1","lodash":"^4.17.11","web3":"^1.2.7"},"engines":{"node":"~8.12.0"},"homepage":"https://github.com/liquality/chainabstractionlayer#readme","repository":{"type":"git","url":"git+https://github.com/liquality/chainabstractionlayer.git"},"bugs":{"url":"https://github.com/liquality/chainabstractionlayer/issues"},"publishConfig":{"access":"public"},"gitHead":"f434da65ca0d1827c535facee5b040746426a903","_id":"@atomicloans/market-client@0.4.2","_nodeVersion":"8.11.1","_npmVersion":"lerna/3.16.4/node@v8.11.1+x64 (darwin)","dist":{"integrity":"sha512-Hb33Y+RWTibHl8PJH9HdhxCsqC3YHqOK9nPq9FNnsO5pSV0WkjZykC/W8OuO+gNNf3/RsBH+4UUOtKNITlPTxg==","shasum":"b9fa6dfd59cae8dfb44ab4ad96ad19653cb22ff7","tarball":"https://registry.npmjs.org/@atomicloans/market-client/-/market-client-0.4.2.tgz","fileCount":15,"unpackedSize":37966252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesLXuCRA9TVsSAnZWagAAmr8P/2qj468fdQg/zQVylrHT\nPbNX4sWIjcVI2CBpbaB2zEXt6e0NaMPUpv1xHriXW37bEG1d2TG0KAoy4i/J\n8KJFpaqY8b1wkao9e37mQAJwTf6m9zmAAybirZJQu3kY9+02WMnvPf5q6FWP\nzfFmCIhlrpgGxZbDomYcJ9M8ZzCmLrjFC+/j0dBlkMuTzoX1lK22TWn9YnDt\ndd+P90c0PWNtQ6B5CDeUez+0ny5HUzqr27iY2lkSkv2ZIGG68/k8QBATj4cS\nBvLqmxVPRjenMedqJwTnTe4AoGZ4e1+HFEXDeFSW7gW/DW4SqznXdRWILFss\nwyZ5pVcNKDj6spIiwN2lBRlZdDIwIVorPHNj+84EqVJiOrJeRfcR9r7lTIeW\n6SVMtRgiV8GjYZtPV90y3x7uigM4U2x5hNPhL4pAJ0p9IbePcnp0xd0/NAkT\niKJKWcgOcUdmrtDVNJ/rKLRptHUtA1Rt5t3M2MEY/xwx73nYiu7pFs8AtgHx\nEMQ3IgOpKaV1o8OXLkv3xndmYPZLVFzbv+ZZRkhUJp1PTPRkoQiMFeycE28m\nmikte5TBacssLjFblhcQYBU1yWLMCIYXyWkgsPgQaSpgkrCJmOcyVauQGYrx\noKhuRMe4L5vldcYPSn35scsqznsDfk2YJI1NjKZplodE4b54Qei4M7b5WMUw\nwkpq\r\n=tEAV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2kzUsZ7mWhrTONThgYwgfSKxPhrFatYvMzJIakta9GAiEA7sfU1ZYXqWvh//KB1ENW8ngK72fb5slWzsKHqxDvhac="}]},"maintainers":[{"name":"mblackmblack","email":"mblackmblackmblack@gmail.com"}],"_npmUser":{"name":"mblackmblack","email":"mblackmblackmblack@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/market-client_0.4.2_1588639213462_0.9510703752871883"},"_hasShrinkwrap":false}},"time":{"created":"2020-05-05T00:40:13.243Z","0.4.2":"2020-05-05T00:40:13.763Z","modified":"2022-04-04T16:15:08.748Z"},"maintainers":[{"name":"mblackmblack","email":"mblackmblackmblack@gmail.com"}],"description":"Query different blockchains with account management using a single and simple interface.","homepage":"https://github.com/liquality/chainabstractionlayer#readme","repository":{"type":"git","url":"git+https://github.com/liquality/chainabstractionlayer.git"},"author":{"name":"AtomicLoans","email":"info@atomicloans.io"},"bugs":{"url":"https://github.com/liquality/chainabstractionlayer/issues"},"license":"MIT","readme":"## Installation\n\n```bash\nnpm i @atomicloans/market-client\n```\n\n## Usage for calculating TLV in Atomic Loans\n\nThis script will output the following data:\n```\nGlobal Lending Metrics for DAI Market\nLoans Originated: 38\nTotal DAI Supplied: 37763.88\nTotal DAI Borrowed: 29098\nTotal BTC Locked: 7.53815185\nTotal Value Locked (DAI + BTC): $105152.13\n\n\nGlobal Lending Metrics for USDC Market\nLoans Originated: 68\nTotal USDC Supplied: 100953.50\nTotal USDC Borrowed: 78308.56\nTotal BTC Locked: 25.28586695\nTotal Value Locked (USDC + BTC): $326149.43\n\n\nGlobal Lending Metrics\nLoans Originated: 106\nTotal Stablecoin Supplied: 138717.38 USD\nTotal Stablecoin Borrowed: 107406.56 USD\nTotal BTC Locked: 32.8240188\nTotal Value Locked: $431301.56 USD\n```\n\n```js\nimport MarketClient from '@atomicloans/market-client'\nimport { Client, providers } from '@liquality/bundle';\nimport Web3 from 'web3'\nimport { BigNumber as BN } from 'bignumber.js'\nimport axios from 'axios'\n\nconst btcClient = new Client()\nbtcClient.addProvider(new providers.bitcoin.BitcoinEsploraApiProvider('https://blockstream.info/api'))\n\nconst httpProvider = new Web3.providers.HttpProvider('https://mainnet.infura.io/v3/7d0d81d0919f4f05b9ab6634be01ee73')\nconst web3 = new Web3(httpProvider)\n\nconst daiContracts = {\n  funds: '0x7791cF9a85072698e9B805eb8156EC1e9c3fc724',\n  loans: '0xa25Ad02862756680Ee8aE7aa9ccC37D3d3F75A4C',\n  sales: '0x3171781bcfCd9E111225CDB42f33E856BA9F7A5a',\n  collateral: '0x8be077228f4e8977a2366653a75c0eb3d68d86b3',\n  p2wsh: '0x095925A67EDE4FE0D794f7797342528B98C7DA15'\n}\n\nconst usdcContracts = {\n  funds: '0x3528C164e3fCA20E2333Cf58Ab4B1c99DeF83347',\n  loans: '0x20233a2095787DAC434F20f8954d3758986EF30E',\n  sales: '0xf30Cb0Ae1879b18dEb48932A8a6F362e5789EE01',\n  collateral: '0xacce090abee68402a2fb8e3acbc31b58a9341466',\n  p2wsh: '0x1C6148Cb6EED725d8F2F01b4F24040a855B40191'\n}\n\nconst daiMarket = new MarketClient(daiContracts, btcClient, web3, 'ether')\nconst usdcMarket = new MarketClient(usdcContracts, btcClient, web3, 'mwei')\n\nconst markets = [\n  { client: daiMarket, currency: 'DAI' },\n  { client: usdcMarket, currency: 'USDC' }\n]\n\nconst { data: { data: { amount: btcPrice }} } = await axios(`https://api.coinbase.com/v2/prices/BTC-USD/spot`)\n\nlet totalLoansOriginated = 0\nlet totalStablecoinSupplied = BN(0)\nlet totalStablecoinBorrowed = BN(0)\nlet totalCollateralLocked = BN(0)\nlet totalValueLocked = BN(0)\nfor (const market of markets) {\n  const { client, currency } = market\n\n  const loanCount = await client.loanCount()\n\n  const totalBorrowed = await client.totalBorrowed()\n  const totalSupplied = await client.totalSupplied()\n\n  const loanIds = [...Array(parseInt(loanCount)).keys()].map(x => x + 1)\n\n  let totalCollateralValue = BN(0)\n\n  const loans = [];\n  (\n    await Promise.all(\n      loanIds.map(\n        id =>\n          new Promise(async (res, _) =>\n            res(\n              Object.assign(await client.loan(id), { id }),\n            ),\n          ),\n      ),\n    )\n  ).forEach(obj => {\n    loans[obj.id - 1] = obj;\n  });\n\n  for (const loan of loans) {\n    totalCollateralValue = totalCollateralValue.plus(loan.collateralValue)\n  }\n\n  const { data: { data: { amount: currencyPrice }} } = await axios(`https://api.coinbase.com/v2/prices/${currency}-USD/spot`)\n\n  const currencyValue = BN(totalSupplied).times(currencyPrice).toFixed()\n  const btcValue = BN(totalCollateralValue).times(btcPrice).toFixed()\n\n  const marketTotalValueLocked = BN(currencyValue).plus(btcValue).toFixed()\n\n  console.log(`Global Lending Metrics for ${currency} Market`)\n  console.log(`Loans Originated: ${loanCount}`)\n  console.log(`Total ${currency} Supplied: ${BN(totalSupplied).toFixed(2)}`)\n  console.log(`Total ${currency} Borrowed: ${totalBorrowed}`)\n  console.log(`Total BTC Locked: ${totalCollateralValue.toFixed()}`)\n  console.log(`Total Value Locked (${currency} + BTC): $${BN(marketTotalValueLocked).toFixed(2)}`)\n  console.log('\\n')\n\n  totalLoansOriginated += parseInt(loanCount)\n  totalStablecoinSupplied = totalStablecoinSupplied.plus(totalSupplied)\n  totalStablecoinBorrowed = totalStablecoinBorrowed.plus(totalBorrowed)\n  totalCollateralLocked = totalCollateralLocked.plus(totalCollateralValue)\n  totalValueLocked = totalValueLocked.plus(marketTotalValueLocked)\n}\n\nconsole.log(`Global Lending Metrics`)\nconsole.log(`Loans Originated: ${totalLoansOriginated}`)\nconsole.log(`Total Stablecoin Supplied: ${BN(totalStablecoinSupplied).toFixed(2)} USD`)\nconsole.log(`Total Stablecoin Borrowed: ${BN(totalStablecoinBorrowed).toFixed(2)} USD`)\nconsole.log(`Total BTC Locked: ${totalCollateralLocked.toFixed()}`)\nconsole.log(`Total Value Locked: $${BN(totalValueLocked).toFixed(2)} USD`)\n```\n\n\n## License\n\n[MIT](../../LICENSE.md)\n","readmeFilename":"README.md"}