{"_id":"@badlabs/tradebot-core","_rev":"5-3b680926310f4ad7d625f4bfdfad438e","name":"@badlabs/tradebot-core","dist-tags":{"latest":"1.0.0-beta"},"versions":{"0.1.0":{"name":"@badlabs/tradebot-core","version":"0.1.0","description":"Core library for trade bots","main":"lib/index.js","types":"lib","scripts":{"build":"tsc"},"repository":{"type":"git","url":"git+https://github.com/badlabs/tradebot-core.git"},"homepage":"https://github.com/badlabs/tradebot-core#readme","bugs":{"url":"https://github.com/badlabs/tradebot-core/issues"},"keywords":["robotics","backend","trading","core","typescript","server","api"],"author":{"name":"Nikolay Dorofeev","email":"d.orich@yandex.com","url":"https://d0rich.github.io/"},"license":"Apache-2.0","config":{"host":"0.0.0.0","port":"4268","logs":"./logs"},"devDependencies":{"@types/express":"^4.17.13","@types/node":"^17.0.4","@types/node-schedule":"^1.3.2","dotenv":"^10.0.0","nodemon":"^2.0.15","ts-node":"^10.4.0","tslib":"^2.3.1","typescript":"^4.5.4"},"dependencies":{"better-sqlite3":"^7.6.2","cors":"^2.8.5","express":"^4.17.2","node-schedule":"^2.1.0","reflect-metadata":"^0.1.13","simple-node-logger":"^21.8.12","socket.io":"^4.5.0","sqlite3":"^5.1.2","typeorm":"^0.3.10"},"gitHead":"fdc9616424fc5c6129361e6a5c9cc06c2514445c","_id":"@badlabs/tradebot-core@0.1.0","_nodeVersion":"16.18.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-V10JGD2l656ZDpwTCoOam7SnzdN2bDUG1Mb48LqGlxlVOLJB7Gg6oC31TiCDE1CfqZV1KIz8ROO6DloEydaR8w==","shasum":"b2c2b99e3e65fdeb96227db42372973abbcaffa0","tarball":"https://registry.npmjs.org/@badlabs/tradebot-core/-/tradebot-core-0.1.0.tgz","fileCount":4,"unpackedSize":17608,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCg9pRERUZKCY1o6p76a3t8ssNbJFcYhi+nPWKxXn5X8gIgZywovV8+IxJfSyAO3qI6K7p9/WswgW+W0XUOSVijzAA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjejUTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqxUg/+OOrSLDdC7vGEMasTQzfa82T4xzCOqmRs0QBNRW6OSA7r/bkN\r\nQDxwMbF7DYczUDQI/9Ob3ZtgKuE2aj7NlBi5DHygTpHD8pE4/crN/OGtZsSO\r\ntle150Y07FfIyp1RvdV2XA7d0lgxZuCSXY4ZJXuAv/Wv5Jz/yFWk3vKza2xK\r\nvRhFqnx912J1XiUFIszj20DWsQSMjuAd/2OIv1HzRUutc4PGHHT840lLqYmF\r\nZL38qSp8MVy7BmteutTbpNXBTLpKEP4eE6JFOGZVXp2Wgc283474U4PXo7m4\r\n+R5bawadfaaiVV3n3j9Lg2wBgvXvntPjFcc74uJXrVkWp9wSvDm3qJJuhAeD\r\nOQZw97qsxAAm1DU27OYXGyfkZ/nXb/HCA09Sbttpx/oe8jQVT/xz1ooSRoP/\r\naS6Um8FcbY+ZXdqhQ4PwL66vw41AHBiK/2E2hKLOQDQlhYp37XmMm7qBellI\r\njARRsGFIlDN5BcXEZ4RXxKx9lrsW0nLdVamwq0pAh64vc22hDyVfABp5H9BH\r\nsfkDRLFL4Omck68uLnuPQ89mxLdLuDsezncmSxSczG+mTauAxbdxpv2pp82Q\r\n997o7B5Dfr+C470CFFnr3xjEEZl5of+mD9HW93WtiNVl/gBvngx3t9J/Ev5O\r\nzTr/92wggY2cbmZTg/PhuNrtFvCOnpQMQXA=\r\n=Fv2r\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"d0rich","email":"dorich2000@gmail.com"},"directories":{},"maintainers":[{"name":"d0rich","email":"dorich2000@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tradebot-core_0.1.0_1668953363140_0.9299016735801653"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.1":{"name":"@badlabs/tradebot-core","version":"0.1.1","description":"Core library for trade bots","main":"lib/index.js","types":"lib","scripts":{"build":"tsc"},"repository":{"type":"git","url":"git+https://github.com/badlabs/tradebot-core.git"},"homepage":"https://github.com/badlabs/tradebot-core#readme","bugs":{"url":"https://github.com/badlabs/tradebot-core/issues"},"keywords":["robotics","backend","trading","core","typescript","server","api"],"author":{"name":"Nikolay Dorofeev","email":"d.orich@yandex.com","url":"https://d0rich.github.io/"},"license":"Apache-2.0","config":{"host":"0.0.0.0","port":"4268","logs":"./logs"},"devDependencies":{"@types/express":"^4.17.13","@types/node":"^17.0.4","@types/node-schedule":"^1.3.2","dotenv":"^10.0.0","nodemon":"^2.0.15","ts-node":"^10.4.0","tslib":"^2.3.1","typescript":"^4.5.4"},"dependencies":{"better-sqlite3":"^7.6.2","cors":"^2.8.5","express":"^4.17.2","node-schedule":"^2.1.0","reflect-metadata":"^0.1.13","simple-node-logger":"^21.8.12","socket.io":"^4.5.0","sqlite3":"^5.1.2","typeorm":"^0.3.10"},"gitHead":"8aeb45ec28ca2e8568b0506fe9f5bedf782fa367","_id":"@badlabs/tradebot-core@0.1.1","_nodeVersion":"16.18.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-USSRhsWvRsFdOWcABwNnRFEuqcBfQzJ19S3X+2AYiozlxjw5WSTqwZjfczacE7F+YFQk/q/01ZSXHgmKJwZETg==","shasum":"0440f79f823b285a1ada4d06572ebf447ed9dd3e","tarball":"https://registry.npmjs.org/@badlabs/tradebot-core/-/tradebot-core-0.1.1.tgz","fileCount":229,"unpackedSize":201302,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHeDgCzZ2mZNenXqOUycNB699nct4DYFSM4poqJM18SLAiEA5OUBlP9Y//WKRT/KQzujitoFpFi1nEryAe9TFK6h7Ts="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjekW4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkoQ//YIejB7iTBN1ECZar1F9cEuB2DydxpNGuSIEMi4DwYGGrDnsY\r\n1Y7T9EI2RyjykzDyF5yfnux8mxrKls6gU7WATDiTgoRPes9jENYQMBK1jg5A\r\n19ZHtASCq8gKW5ip/xEVwULTnk7kR3czOt5SvK04ywXflo8DCoU5fFTPvMh6\r\nGmD60qdiMpYgQ9yxntxuJgsQ3hgtZWiVTbxe14s1hjEwlYDOHt08+AjEEeBB\r\nB184jXUXm113TKR02l0AZAZJf2NUjMYIOlzQi1Sr0ZL/hyRIWPuICPitFMy0\r\nzRH05Q+8Pq43YO63tYzWZKRWucAL3JRF5lb0GZvuhMEDKtPChdzFNQlR+1yA\r\ng1uNQVZQWP7s3lKBYTFfHhKCh4/EEUens7gqHALbYh3xOROnGG+dbOLN4+Kf\r\nVWMDvM9Ia3ed+IMbUSEh2SqLphI2VgXqrLZe6isHsn7LTAQCW16+m4A5w1S5\r\n3YiC3H+vcjMonrTnh4hNDyF+6RscrhFE/JW/1xiEzdyTymJxHsOn1H+w3djO\r\nXxNjDHlX8ueW6BH6Aai8pbKf3YPVXKbs1rfMZTD1jGkFMCzhua3riRWBtEtF\r\nJVuv6+keYPvra3q4UYgb0L20sAr010u4vY5OAEa+Xe3yWn7lWUDu+k7FQEF3\r\nWx6C2p7tWQekkSEObTXzqdt2MIrF1+RbrEk=\r\n=sLjR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"d0rich","email":"dorich2000@gmail.com"},"directories":{},"maintainers":[{"name":"d0rich","email":"dorich2000@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tradebot-core_0.1.1_1668957623876_0.739073422917633"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.0":{"name":"@badlabs/tradebot-core","version":"0.2.0","description":"Core library for trade bots","main":"lib/index.js","types":"lib","scripts":{"build":"tsc","test:tinkoff":"ts-node test/tinkoff/index.ts --project test/tsconfig.json"},"repository":{"type":"git","url":"git+https://github.com/badlabs/tradebot-core.git"},"homepage":"https://github.com/badlabs/tradebot-core#readme","bugs":{"url":"https://github.com/badlabs/tradebot-core/issues"},"keywords":["robotics","backend","trading","core","typescript","server","api"],"author":{"name":"Nikolay Dorofeev","email":"d.orich@yandex.com","url":"https://d0rich.github.io/"},"license":"Apache-2.0","config":{"host":"0.0.0.0","port":"4268","logs":"./logs"},"devDependencies":{"@tinkoff/invest-openapi-js-sdk":"^1.5.0","@types/cors":"^2.8.13","@types/express":"^4.17.13","@types/node":"^17.0.4","@types/node-schedule":"^1.3.2","@types/ws":"^8.5.3","dotenv":"^10.0.0","nodemon":"^2.0.15","ts-node":"^10.9.1","tsconfig-paths":"^4.1.0","tslib":"^2.3.1","typescript":"^4.5.4"},"dependencies":{"@trpc/client":"^10.5.0","@trpc/server":"^10.5.0","better-sqlite3":"^7.6.2","cors":"^2.8.5","express":"^4.17.2","node-schedule":"^2.1.0","reflect-metadata":"^0.1.13","simple-node-logger":"^21.8.12","sqlite3":"^5.1.2","typeorm":"^0.3.10","ws":"^8.11.0","zod":"^3.20.2"},"gitHead":"691e2f4dc59d42faca05172f765aa9253cd2c280","_id":"@badlabs/tradebot-core@0.2.0","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-QOtehketqas4UUE99CcH5dbMIigqmW5N0IA3JhaXnHECcJk9xrd9cdppgYaEQ2YvMrXpSsPwxDVIMYwmzsrt0Q==","shasum":"782cc5219fe866a150de740ce145201497d7e0ad","tarball":"https://registry.npmjs.org/@badlabs/tradebot-core/-/tradebot-core-0.2.0.tgz","fileCount":271,"unpackedSize":258992,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC0KYusN2/RWhYE3pl5OMZGnTs6/wC6vXps96V0LLbWqAiEAyy5dv/RXTG9nTPlkDVkMUPYaI5/azTEZsm4Pj59tZg4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjndvEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZrw//fkiYpGyEbOUj+CS5kbX7c3p0QhQaKzJ6bbvKvvaF0aDiSOny\r\nYxm+gq9vQ92Fz02YM3l41w1wUPFNoa6IdPq48obA6j7R8M0FhU+4PcbfI1rT\r\nHPUeuuUNHg8i5aEB8/Fk3IuiZDwlRL+PyBh0NLVGcMbmUR+yEYRmgHg6edmT\r\niGgzh4yVdlwjBSF8UpeBPdCsSkzDFtRgLNLAz2vX6YvSq0hR0SO7+xUl24lO\r\nMin5ncPhxcOjfdTVZlLn7o9X+wCzsjOeeGeGrhfcu3/6lqbdAluyrMTVJNAY\r\novFmEi4wkhskuY5iBthgw39614ljo38YyJmiobIaqMyFxvxlZos9WWQp2/XH\r\n4hTe92ZK+YRCiPokINeNlqfTdF0mEsjKekSNUFnjTNGy2z5cjEzm+KXUXutJ\r\nddlkB7aJHLo0uAmXySSSOwN3MpdtQsd17I9D34twKqpdvcddgfhF3oAbXjKR\r\nyv4vUkGWrDG6HlIbmjRjalnfp3hgaICyGHuZqzHW0qIhH+eI/KNPXT1cuncS\r\n5rWTgBkasiydBbvtF09QXrNHghfk1Eq2nHmUmb3J9Mq5FnXOCyJGkRboa7Yz\r\nOFHpFKQGqNGE+gRwC3+kHQG5ZqEmI1OR/ehRVm65H0nR3M4UxC97aZoYBrk4\r\nx3X/n3G9A1vSkkZJSXy9dZXepVEtI7Au62Q=\r\n=Lc/U\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"d0rich","email":"dorich2000@gmail.com"},"directories":{},"maintainers":[{"name":"d0rich","email":"dorich2000@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tradebot-core_0.2.0_1671289796093_0.5284405871747553"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.2.1":{"name":"@badlabs/tradebot-core","version":"0.2.1","description":"Core library for trade bots","main":"lib/index.js","types":"lib","scripts":{"build":"tsc","test:tinkoff":"ts-node test/tinkoff/index.ts --project test/tsconfig.json"},"repository":{"type":"git","url":"git+https://github.com/badlabs/tradebot-core.git"},"homepage":"https://github.com/badlabs/tradebot-core#readme","bugs":{"url":"https://github.com/badlabs/tradebot-core/issues"},"keywords":["robotics","backend","trading","core","typescript","server","api"],"author":{"name":"Nikolay Dorofeev","email":"d.orich@yandex.com","url":"https://d0rich.github.io/"},"license":"Apache-2.0","config":{"host":"0.0.0.0","port":"4268","logs":"./logs"},"devDependencies":{"@tinkoff/invest-openapi-js-sdk":"^1.5.0","@types/colors":"^1.2.1","@types/cors":"^2.8.13","@types/deepmerge":"^2.2.0","@types/express":"^4.17.13","@types/node":"^17.0.4","@types/node-schedule":"^1.3.2","@types/ws":"^8.5.3","dotenv":"^10.0.0","nodemon":"^2.0.15","ts-node":"^10.9.1","tsconfig-paths":"^4.1.0","tslib":"^2.3.1","typescript":"^4.5.4"},"dependencies":{"@trpc/client":"^10.5.0","@trpc/server":"^10.5.0","better-sqlite3":"^7.6.2","colors":"^1.4.0","cors":"^2.8.5","deepmerge":"^4.2.2","express":"^4.17.2","node-schedule":"^2.1.0","reflect-metadata":"^0.1.13","simple-node-logger":"^21.8.12","sqlite3":"^5.1.2","typeorm":"^0.3.10","ws":"^8.11.0","zod":"^3.20.2"},"gitHead":"376c8031f7935f43711ff8fc695cd1da77a47c4e","_id":"@badlabs/tradebot-core@0.2.1","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-IGZEAbtnt9JLkCbYREXmrfD2PD3CRJNeUOvV0AB05DNc32w5PdaQE7/HUEk3DdAS1SnhdejNuXgdOhzKOVt7VQ==","shasum":"0fb2125ccb216a74699faa1aa909cf4104e8157f","tarball":"https://registry.npmjs.org/@badlabs/tradebot-core/-/tradebot-core-0.2.1.tgz","fileCount":265,"unpackedSize":272740,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHxH4dMQAVVnLDi3ZavjYrcHmTX7cuRDAa5IpUJSWboAIhAISBXRxogr0E1r8Io9EhoSZAIkoluKEpUdTn20aexIUn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnuGZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrwpQ/+J+w/Pvtc4qJAEMk5YLzfXZWzTskrxPAjxER3JQzND5HpbZSB\r\nfTDHuNk2jGqDi62yAM4Kl/EpUQ1o7TYStGmRdroU/oPu15hvdt6oL21ttq8D\r\nnn6cUIwQ6IjvtAQH85w7k+JEkTlHh/gKnw97tvEom9ZfFxOfGZcF57yUElZp\r\noFsD+aPC6N9yeZEBqzJLZOIGm1j6HVoj0tcfNZeNimi147AyyRWjcZmuSnOR\r\nWiQQvJ7ZeoHk53cRR6y7uTh7FkodzunAyeZQPORBuuEyq+EomxFph6vHX+Jm\r\nilM6e3YY/0FzjiggWQ1ZH6xlsfmTNVXi/w1x6VRw13rz0ts5jxviBRRMr3Le\r\n8M5A/OOqf2Q1ecZ7X2Sv7n6SoG3OaISD4Lso3NmwkSiopxU4R9lY/QZY4eS4\r\n+8HS079fKhI9U1KdI8ZMqSNVY7+9RNREBqwxsOQVKh1vQ0ZfPucGH/GTwCS0\r\nn6Za5qMhblGJiTQWIG6N1rwt0BGliYW8FYY9NigwACSOsmAR8QtlKn0JiFSl\r\nkGv3GaysDnIhc1t/DkiUoKqHtp12gpMViwff88+5DYjojCNLYUORJq+L1LSO\r\nvYs7CPhNlrzIGoSn+eOYdrDXOnJ997mndGBDNb/9ajBDb86Q9OMUC3TdakTp\r\nFA54KsDuSV5tKlUdsHstyXU1m/vGRTc6xXk=\r\n=o4nS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"d0rich","email":"dorich2000@gmail.com"},"directories":{},"maintainers":[{"name":"d0rich","email":"dorich2000@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tradebot-core_0.2.1_1671356824900_0.4378925713941979"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-beta":{"name":"@badlabs/tradebot-core","version":"1.0.0-beta","description":"Core library for trade bots","main":"index.js","types":"./","scripts":{"lint":"eslint ./src/*","prettier":"eslint ./src/* --fix","build":"tsc","clean":"tsc --build --clean && delete-empty ./","build:test":"tsc --project tsconfig.test.json","test:tinkoff":"ts-node test/tinkoff/index.ts --project test/tsconfig.json"},"repository":{"type":"git","url":"git+https://github.com/badlabs/tradebot-core.git"},"homepage":"https://github.com/badlabs/tradebot-core#readme","bugs":{"url":"https://github.com/badlabs/tradebot-core/issues"},"keywords":["robotics","backend","trading","core","typescript","server","api"],"author":{"name":"Nikolay Dorofeev","email":"d.orich@yandex.com","url":"https://d0rich.github.io/"},"license":"Apache-2.0","config":{"host":"0.0.0.0","port":"4268","logs":"./logs"},"devDependencies":{"@tinkoff/invest-openapi-js-sdk":"^1.5.0","@types/colors":"^1.2.1","@types/cors":"^2.8.13","@types/deepmerge":"^2.2.0","@types/express":"^4.17.13","@types/node":"^17.0.4","@types/node-schedule":"^1.3.2","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.46.1","@typescript-eslint/parser":"^5.46.1","delete-empty":"^3.0.0","dotenv":"^10.0.0","eslint":"^8.30.0","nodemon":"^2.0.15","prettier":"2.8.1","prettier-eslint":"^15.0.1","ts-node":"^10.9.1","tsconfig-paths":"^4.1.0","tslib":"^2.3.1","typescript":"^4.5.4"},"dependencies":{"@trpc/client":"^10.5.0","@trpc/server":"^10.5.0","better-sqlite3":"^7.6.2","colors":"^1.4.0","cors":"^2.8.5","deepmerge":"^4.2.2","express":"^4.17.2","node-schedule":"^2.1.0","reflect-metadata":"^0.1.13","simple-node-logger":"^21.8.12","sqlite3":"^5.1.2","typeorm":"^0.3.10","ws":"^8.11.0","zod":"^3.20.2"},"gitHead":"fc0ecbf4551937392575c36f8a6010ce4f483c1b","_id":"@badlabs/tradebot-core@1.0.0-beta","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-EoPm3NfEfoTBQFDiMe2Q91eohcmQFBM5z8bB1fvmzPqQcxBwOiugldfoinG2aFGbgtpAKQXpuvKhrrSMyjjKwQ==","shasum":"b2d0c20ce4366d4e0776d7bb015f4290df34229c","tarball":"https://registry.npmjs.org/@badlabs/tradebot-core/-/tradebot-core-1.0.0-beta.tgz","fileCount":266,"unpackedSize":273245,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/vtMDIqvLxdKwMzd239XMnsh0qSe8pf0OehsFa7VMdAIgLM0T/Rx0rnSfSXane1i7hHBeqQpIdu18PMUoISRQAT4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnu5GACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBkRAAhTW+4ykqiArR14n+h9TfXOuQkc/qn86eIrJSWw259gszeVP1\r\nmWNsQSdEYJCCgBkdw9lTg3skq0e/U2/UXqPSJ6ED9Bj6JGCr4mI+WxvhwGws\r\nTN0c19lLh+o8TxdnMMH2oykCOJl9P8/1QeyqgH4HkCLU925ROAySZhxxGrer\r\nOWpCrdrWcCeWUBj7Q3V4db0JaA2bnE0A3aDoZRhwm6ELvn51fEg64HuVWKvn\r\n78oaO3DuSpGfYRgJAxTUZgFYBkkYEFQhSKd6dYnSmRglqR6hcBBMJAj3cjYf\r\n8lt5UcAIizG42Md2WcpjyzAQyZp2JfTcKo4xoPpvIQfYINZLAEP6ZEmPYiyo\r\nlbzmOs6pfRAs3p0EcQrHpLRQDB159+zEKDeFF14YaAoSRYAHEk3BNBQc9RZG\r\njE/rW+UU/uOLD+mO8yrUe/WDK3RMkBgBewc8a58L9ZvyZp8m/Rss8xBkqWfO\r\noOvP2Pev/+b+uPztAuxLiK6xBGmc6a3IgqITB3xcxFamzxOUtRmJs/AYtN9T\r\nQ0lyYokxTgrVgzR9UkppA/lbo1hgJBjFpRoiFSRbkecgj6ghiYwbFvrXLRLI\r\njKimxoV5d+e+bHHt4UpCQrooygXs+15daSIY/EzrzNvtEuVbvXDDqKRolABM\r\nCp8j6XfoqYGw/VBEDzljNDuKJdQu6ibGxYE=\r\n=VXTI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"d0rich","email":"dorich2000@gmail.com"},"directories":{},"maintainers":[{"name":"d0rich","email":"dorich2000@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tradebot-core_1.0.0-beta_1671360070441_0.4132044822045102"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2022-11-20T14:09:23.053Z","0.1.0":"2022-11-20T14:09:23.316Z","modified":"2023-04-09T18:15:41.150Z","0.1.1":"2022-11-20T15:20:24.029Z","0.2.0":"2022-12-17T15:09:56.302Z","0.2.1":"2022-12-18T09:47:05.050Z","1.0.0-beta":"2022-12-18T10:41:10.625Z"},"maintainers":[{"name":"d0rich","email":"dorich2000@gmail.com"}],"description":"Core library for trade bots","homepage":"https://github.com/badlabs/tradebot-core#readme","keywords":["robotics","backend","trading","core","typescript","server","api"],"repository":{"type":"git","url":"git+https://github.com/badlabs/tradebot-core.git"},"author":{"name":"Nikolay Dorofeev","email":"d.orich@yandex.com","url":"https://d0rich.github.io/"},"bugs":{"url":"https://github.com/badlabs/tradebot-core/issues"},"license":"Apache-2.0","readme":"# @badlabs/tradebot-core\n\n## Getting started\n\nInstall core: \n\n```sh\nnpm install @badlabs/tradebot-core\n```\n\n### Describe your domain\n\nDomain includes types of entities in the integrated exchange. \n\nTechnically, you can provide `any` types for `DomainTemplate`. But it is not recommended, as these types will be helpful in process of creating other modules.\n\n```typescript\nimport {DomainTemplate} from '@badlabs/tradebot-core'\nimport {\n    CurrencyType,\n    CurrencyBalanceType,\n    SecurityType,\n    SecurityBalanceType,\n    OrderType\n} from '@exchange/sdk'\n\n// Order of arguments matters\nexport type Domain = DomainTemplate<CurrencyType, CurrencyBalanceType, SecurityType, SecurityBalanceType, OrderType>\n```\n\n### Implement ExchangeClient\n\n`ExchangeClient` is layer between exchange and tradebot internal logic. \n\nIt also includes two submodules for splitting logic:\n- `InfoModule` - get different information from exchange;\n- `TradeModule` - send requests to place orders to exchange;\n- `Translator` - for translation exchange types to tradebot types.\n\nYou can access `ExchangeClient` instance with `this.exchangeClient` from these modules.\n\nNote, that you can provide object containing API methods to exchange (`API` in example). It will be available in `ExchangeClient` instance as `api`.\n\n```typescript\nimport {AbstractExchangeClient} from '@badlabs/tradebot-core'\nimport API from '@exchange/sdk'\n\nimport {Domain} from '../Domain'\nimport {TradeModule} from './TradeModule'\nimport {InfoModule} from './InfoModule'\nimport {Translator} from \"./Translator\"\n\nexport class ExchangeClient extends AbstractExchangeClient<Domain, API>{\n    constructor(token: string){\n        super({\n            infoModule: new InfoModule(),\n            tradeModule: new TradeModule(),\n            translator: new Translator()\n        }, new OpenAPI({\n            apiURL: 'https://api-invest.tinkoff.ru/openapi/sandbox',\n            socketURL: 'wss://api-invest.tinkoff.ru/openapi/md/v1/md-openapi/ws',\n            secretToken: token\n        }))\n    }\n\n    protected async initAccount(){\n        const { api } = this\n        // Something to prepare your client\n        this.isAccountInitialized = true\n    }\n\n    async getPortfolio() {/*...*/}\n\n    async getCurrenciesBalance() {/*...*/}\n}\n```\n\nDon't forget to implement `InfoModule` and `TradeModule`.\n\n```typescript\nimport {AbstractInfoModule} from '@badlabs/tradebot-core'\n\nimport {ExchangeClient} from './ExchangeClient'\n\nexport class InfoModule extends AbstractInfoModule<ExchangeClient>{/*...*/}\n```\n\n```typescript\nimport {AbstractTradeModule} from '@badlabs/tradebot-core'\n\nimport {ExchangeClient} from './ExchangeClient'\n\nexport class TradeModule extends AbstractTradeModule<ExchangeClient>{/*...*/}\n```\n\nAlso, you should implement `Translator` to make it possible for tradebot to understand types of your exchange. \n\nInternal domain of tradebot is provided by `CommonDomain` type in core library.\n\n```typescript\nimport {OperationType, OrderStatus, CommonDomain,\n    AbstractTranslator,\n    GetCurrencyBalanceType,\n    GetCurrencyType,\n    GetOrderType,\n    GetSecurityBalanceType,\n    GetSecurityType} from '@badlabs/tradebot-core'\n\nimport {ExchangeClient} from './ExchangeClient'\nimport {Domain} from \"../Domain\";\nexport class Translator extends AbstractTranslator<ExchangeClient>{\n    async currency(currency: GetCurrencyType<Domain>): Promise<GetCurrencyType<CommonDomain>>{\n        //...\n    }\n    //...\n}\n```\n\nNote, that you can extract specific domains types from `Domain` or `ExchangeClient` with following generic types:\n- `GetCurrencyType<T>`\n- `GetCurrencyBalanceType<T>`\n- `GetSecurityType<T>`\n- `GetSecurityBalanceType<T>`\n- `GetOrderType<T>`\n\n### Start tradebot\n\nFinally, start tradebot with `runTradeBot` function:\n\n```typescript\nimport {runTradeBot} from '@badlabs/tradebot-core'\n\nimport {ExchangeClient} from './exchange-client'\nimport {initAlgorithms} from './algorithms'\n\nrunTradeBot({\n  exchangeClient: new ExchangeClient(/*your exchange client args*/),\n  botToken: process.env.BOT_TOKEN || '',\n  initAlgorithmsCallback: initAlgorithms\n})\n```\n","readmeFilename":"README.md"}