{"_id":"accountstate","_rev":"27-d269b1c8bfe12b9946e016f88014c6b6","name":"accountstate","dist-tags":{"latest":"0.0.31"},"versions":{"0.0.1":{"name":"accountstate","version":"0.0.1","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.1","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"dist":{"shasum":"b9f2becf26183e5de1d4637a1c9e2fc2b5e2da2c","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.1.tgz","fileCount":33,"integrity":"sha512-+2U1RKbVAy3cYRnLBuuwDNAz6T1KqOOmPkjWc7mYvm08ICle2IzrDntdlRMnyD2WQVkI1OzCNsAkahQJ2SDS4w==","signatures":[{"sig":"MEUCIQDOaN4WA2jOZernMbNcfGGUyEj3UwWzu/44IA3FaB56qwIgQdPOP3Brq5uv1D5vsnJbjgdCNfrm3ds8LEGHJZDVkTk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67118},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.1_1706873461892_0.911405279003993","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"accountstate","version":"0.0.4","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.4","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"122b9036293c52fc02e5b5782b7b8f0c5f1f69cc","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.4.tgz","fileCount":23,"integrity":"sha512-oo+5jC83czcq3nE6m+CM5WpuS/HyAqVDWPquDq7g/i4Sa3Qt8JM2I1KPAt01PHxhu9405OgQrCdWnZFT6K025w==","signatures":[{"sig":"MEUCIQC8XMGjyMFqq8w0MEprFAW9kneTvxHwx/I9h3kGzwRkhQIgUSNozAT0GSMdwa7JrdL0z5xf2eLwkusADVxNJpVu5Ow=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29401},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"45108cb9b1175ad90eed7c92b00b63f7abb9c86e","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.4_1706876862398_0.40919880834659095","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"accountstate","version":"0.0.5","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.5","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"c37a5a8acebdd6f4c686d4d894d6949a1c5606df","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.5.tgz","fileCount":23,"integrity":"sha512-rBeYjdg38ViX3RakueCv2HkVYxFnsN9JvoBuSfq/HDiJSk/Yj+sEtIY3S8foYxsNxBr0wvt8NttK8ThwBOApXQ==","signatures":[{"sig":"MEQCIQCbyFd5T3cAVDSQnotvVwihvwOEnCLyKz1beihZ2zgvZAIfRKHb31IM7YcIjPYi+y5aHKeScd8/tVJu4uhE+vWHZQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29401},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"1ee3476a6c9402b9db698603dd4f1cb5b1bf62dc","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.5_1706877170113_0.8308125569737637","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"accountstate","version":"0.0.6","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.6","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"7e5281f4453558e2c6cd0ad452259377295e3d0f","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.6.tgz","fileCount":23,"integrity":"sha512-oPsI52LjEivPdA8qz/wZGJdLkEhb+fhIxiGpuDPGvo9900o0Dsa1vldKM4viC/8C1HKDfizlKmSiykFhg7SmGA==","signatures":[{"sig":"MEYCIQCw5yFcsFbYMOBcunGTE4H0Ux3gHSh6iXv2wiIraoFkRgIhALIYYPbwL8dii4pDtb2v0yD97szXlNvGFH2fwj4OBG9l","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29401},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"b2e7cd1c744c74aaa12e6567b324fdbbcac4416c","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.6_1706877418125_0.05733733478763181","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"accountstate","version":"0.0.7","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.7","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"cf40935020e388b464f67b7bc62cc45b70a1b086","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.7.tgz","fileCount":23,"integrity":"sha512-tqfTtjQFDjc109KItxoVyiik1eVZ3qumHm1b8YE6TTfM2UgcYa7NQnlh3cIKseqGCWUBRGRnpGcwSsEE1i+z3A==","signatures":[{"sig":"MEQCIAr2jv5GOX7fzih1jmYJpd1h+fQh5SBqtt6nwaRy5G3hAiAW/Bubr4LyLfqrZp98PdwqEPeYPm0hPV+qjX938ybGIQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29401},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"2a5d5dca32df24acb94ffd42bb2a29fe24f25a65","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.7_1706877526117_0.07649980653980415","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"accountstate","version":"0.0.8","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.8","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"e2af1c8441d296e8b5471c00066e05736409915c","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.8.tgz","fileCount":23,"integrity":"sha512-o8LrTVpKxpq1KE1vG5Hr6FNPB3Pv0J9DkhlM/7TaE2xco1dB9abKdQg/iy8/j8OFS1+z64aVEDr5kq3Q7bMdTQ==","signatures":[{"sig":"MEYCIQDALBjmds8hAPICjQ+fMA+Ll8Hhyi629FStin7iddZsuAIhAN7hBDRvPv2U9Ntiqp1Mu10R25qTecfo6r7+KeFbtdzb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29475},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"c16b0b114c57bf1f64d5c6e75b6b81515253b26b","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.8_1706883313876_0.9628389487828388","host":"s3://npm-registry-packages"}},"0.0.9":{"name":"accountstate","version":"0.0.9","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.9","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"8a445b9203c7039d42cd8084282ba144f99231a8","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.9.tgz","fileCount":23,"integrity":"sha512-sSDmhN5PCUKuhzF2PSz2x41ZKMmhiVtsmeytdzXkT1miSZX07KTZL1C47+wW4S4QeTZ4D8J5I8EHMuZDtCoigA==","signatures":[{"sig":"MEYCIQCgMjqKA5nmNZsquQ/ViEySZ5XvxwfOnjMuL62UmICbuwIhANu1SCObq6iwivivO2foAnCNUsgwWfQKhQeUoRlIbYK1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29471},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"4bc6907a5f1cbb549bf0990b0ba005bf58b0a991","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.9_1706883767239_0.33226440990579076","host":"s3://npm-registry-packages"}},"0.0.10":{"name":"accountstate","version":"0.0.10","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.10","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"8007a525435bb0c38ef0c3d57421a9ba16403f1f","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.10.tgz","fileCount":23,"integrity":"sha512-OHlHVffxuigspgs5TDHt8hAGHXxwE0IHOf0bVD0Wp6kE6ZQVExICDXgGIPi2i8JpWgvcalh8zKpc2DlqobDDzg==","signatures":[{"sig":"MEUCIFYlyX00/jFjw5YFjNbRbEoPoRSqS1lWFAvjo3DJYu3pAiEA90EGh8DzgFaBGr2D7AMcbirGjtcndG1PPPoPKXBlGQY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29555},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"7e453ca8fe2d950568a91c04969f8c582bb78ab2","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.10_1706884040609_0.36011229856916116","host":"s3://npm-registry-packages"}},"0.0.11":{"name":"accountstate","version":"0.0.11","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.11","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"5d8c4cf17ebd382d7615e2a86187f8e33bc992b0","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.11.tgz","fileCount":23,"integrity":"sha512-0Z9Z1djqIX0L5YrdjbzQsBgJj2z9NrtbGXXqT6Uq7Jev2AYCAALoahiAY4vXwqLv0c9wFGVge23LZ+/ilKuvgw==","signatures":[{"sig":"MEUCIQCWqf1U0scrVsuVRAGjYc80ZxPsbGnoMDhQwv6Y4v8dTQIgNM4xmgVor5h84lItvGdPXQio1LXcMzDckAXCg2DExsk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29553},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"8e3dc8872c659c7b6fa29b92bbee5f7bbfdc408a","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.11_1706884654601_0.589100127552793","host":"s3://npm-registry-packages"}},"0.0.12":{"name":"accountstate","version":"0.0.12","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.12","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"f0b8c581c51d0fc4a34db8d414b90aa59cac0031","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.12.tgz","fileCount":17,"integrity":"sha512-QNp3p2cnpC5PHBIrkw39IP7XpdT/1MV8EIBCzDi658nJ8r00s6TiJDZh3xtNjtlhulS6weYt6A9fVVhBe1rbIw==","signatures":[{"sig":"MEYCIQCc5fo8RHXz35GRhszCUvZSEVHskvL9PyD2enh6QXKmpAIhAIfgwUhEy+u9a2cT1b7D4zsu/ZyWOqrM0LgXREk4yKIU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20971},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"6f1e16787b8ad749543ca082eda69f9208465953","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.12_1706885256602_0.9002568763472822","host":"s3://npm-registry-packages"}},"0.0.13":{"name":"accountstate","version":"0.0.13","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.13","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"b6c8ac64b8650ae2f0607181d8ed691dfe556a3d","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.13.tgz","fileCount":17,"integrity":"sha512-axo/dMYc+H0gz3HL7BIeNFBCCszvQpqAzW1GCY+rKOQDwGixLsBJ7haCVl8MRGtnbK1PKEzXxKz/W7xOX6LNsw==","signatures":[{"sig":"MEUCIGeFXdza1J3mKOuwqeb8HUsSVd0J1zonbUWi6EdFns7cAiEAv79Nbg6pGOLT+j3e84Zju3AQDzwZelyq97eHN3i92Uo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20450},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"279abe817c1a8a5d1ac6ff38a1a83ad6b4fc35c7","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.13_1706885717106_0.35394863627428275","host":"s3://npm-registry-packages"}},"0.0.14":{"name":"accountstate","version":"0.0.14","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.14","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"d5e4ef54ae5f1684dbc18ee9783b3d655cf965ab","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.14.tgz","fileCount":17,"integrity":"sha512-uprNw6TcowdGoEK7ruhTaVhuGppyzr9KXj21g1h8TXJBqYVb1cl3FWpYaPCnwMlOaLILlfahALI3LEV2Z/zU2g==","signatures":[{"sig":"MEQCIFrtEAIlzLbpgyB/ZlKJJ2y2giwYsdOVvxNF0j1JQ3jrAiA4qKRJUL42kvX5t0nUfyuSM5VKJLVwVg0ChrkUMqHdCA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21220},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"635f3dc15e99b69219ff8dd99cc72c3c400aa646","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.14_1707089870716_0.43704242540947025","host":"s3://npm-registry-packages"}},"0.0.15":{"name":"accountstate","version":"0.0.15","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.15","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"ed9b74284fe031a8a23160e1204fd6e64a45eef5","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.15.tgz","fileCount":17,"integrity":"sha512-foTf7K/hUjvoT/DK6Zbfvn9XrBJnpid+kin8Jb1hQqlSNceGwX9H+ItQNl/gHwPg2sgkrsjoHzuZEqEz6nmt6Q==","signatures":[{"sig":"MEUCIQDvC6GxAKQW1LbL3xYz1C1MH+fgMzlQkwq/h1DjprZnGAIgZQZiZcCq/tsRt5zmUKupZhRZ24APTiOhuxAB7lmw3Ks=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21253},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"86a9ef017ee42c8251500fe12594daa24e913641","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.15_1707090199679_0.9249522024796408","host":"s3://npm-registry-packages"}},"0.0.16":{"name":"accountstate","version":"0.0.16","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.16","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"4038c76f2d014b6bc59477a7c7047966e77f2c0c","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.16.tgz","fileCount":17,"integrity":"sha512-s0I6nA2NksJfMEUZ6BZodh4qv0dHSZz6SEOr3lrDK0lD9CNcDeHp63TTKqf69T98sUQv4mssonna2HzLMglcxg==","signatures":[{"sig":"MEYCIQDg16bhcFWHwNbXO6fm2BZ6Mjpfp09mA2VT1BixJZCW9AIhAPbe7T3dqTzO2Y0BgOQ8d5rOjcXUAYpTvLCYFdQRbQQe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21239},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"acd1d40dd751da3ef22a76a7da02dfa4837ee701","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.16_1707090410580_0.6714189944441715","host":"s3://npm-registry-packages"}},"0.0.17":{"name":"accountstate","version":"0.0.17","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.17","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"eca99e59041613936232fa3b08fb5a00b3534890","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.17.tgz","fileCount":17,"integrity":"sha512-wtpRw0ovvf7Y/p9nAZWYH4mvp25vCzcsjndmQtIWS+EgGubTaCeqnQQ3ezOvtT+Nxn3U/KFGUCWlye2D6+O4AQ==","signatures":[{"sig":"MEUCIQCxinOIfjFLKnflVSbz5SHdwIpxoSNCIBrP1WoxKxdJ4QIgKJY/FdmYQc88d7T4fME8K315hbmDmY1E975liNtji74=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21213},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"ce92ddf6591db1da7f70b0cc3e4c8a7591fc7ffc","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"npm run clean && tsc --build tsconfig.build.json","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.17_1707090652776_0.9796614612231402","host":"s3://npm-registry-packages"}},"0.0.18":{"name":"accountstate","version":"0.0.18","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.18","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"41e1f5604b0564d123788822a60be9811c5a92e6","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.18.tgz","fileCount":34,"integrity":"sha512-YCc7I/dNxyod83kgEAqCfvqrZL7Fk9BxetoVDi9vLa9/HKhaLKQgqQI92K3aV13uoB20Py8bO/E295L149hStA==","signatures":[{"sig":"MEUCIEaNo97KqisS3krvLkBKbgT6sHlP2eKm+ZkmZKbVd8gfAiEAxGcIEpPyLcasqbAJoge0wUkoANZm0aeCv9f9Uu96TIw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":41560},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"b7e773fd5291322bd7e4e96e8e0562fab50e1093","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","dependencies":{"accountstate":"^0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.18_1707391070679_0.8846443718185066","host":"s3://npm-registry-packages"}},"0.0.19":{"name":"accountstate","version":"0.0.19","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.19","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"34a2fed65a852bc4635de993ceb9408897844172","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.19.tgz","fileCount":70,"integrity":"sha512-x6GzfOGH6PlxrYpHnAcfsdw1OOzgIU4xJmttRCO3GU4KJUCc6qErOUegYTvAnu/8GcaZJnxMdZxnMzoirdNBhA==","signatures":[{"sig":"MEYCIQCxnuW2XZ+o0dy8zRUuze06e+LuQ1VRVEofCEtcEbQhTQIhALo4k89HTIcfIL8hB1cHB6T2CXuBT3zUXBBcfjuxDPIT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":81736},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"d9352c4822d980c8ff92d91ad70f832036eebdf8","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","dependencies":{"accountstate":"^0.0.17","isomorphic-fetch":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.19_1707414869731_0.9072290182224787","host":"s3://npm-registry-packages"}},"0.0.20":{"name":"accountstate","version":"0.0.20","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.20","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"316d9ebac1711ae967c0808b1155fd2f423c72b3","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.20.tgz","fileCount":70,"integrity":"sha512-wMeIAUlpPCXQt736xedqS6KP9Vvba2h9F8hTuLJyj3WoxD54n+yNnXfr+r77b8eSQB2c7e6Jv9gINzw+2/sv0g==","signatures":[{"sig":"MEUCIC/L+kEFA+0PEr6Hn0nlEBGVpeE9oZvDuiCEaTe+hOf6AiEAgsdvcWFejB5XUhh58bUvbhA2w04PIBNetV4IzUCisjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84922},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"8aff4248b0d2830dfe40d550736f1363e5ab02bc","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","dependencies":{"accountstate":"^0.0.17","isomorphic-fetch":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.20_1707824093740_0.3339999133186924","host":"s3://npm-registry-packages"}},"0.0.21":{"name":"accountstate","version":"0.0.21","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.21","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"568ec0821caefa3423a15655583d465905a95524","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.21.tgz","fileCount":70,"integrity":"sha512-/aoLG7jDpX3z6H2n8AfFPBHQNKzoD/VTgGtY6VsIZH3RymfdqQGC5hLxcBTS+YTw03Tw2/y+sDs6IIcoh2Fu2A==","signatures":[{"sig":"MEQCIHbHvOkADgwd3veWjhSfTbY9W/MfKrCY/fMF2xUcZqoAAiBv8Xbn6+2T4IwJOBqzkxaNdlrFqywqWLukRyI6uhFftg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":99714},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"2a6c713fc15a057e2a5d40e3ada5121471e84a7c","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","dependencies":{"accountstate":"^0.0.17","isomorphic-fetch":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.21_1707835657674_0.6835146477208727","host":"s3://npm-registry-packages"}},"0.0.22":{"name":"accountstate","version":"0.0.22","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.22","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"20661b3b0b7a76f459030dd8f3c2205cb3486b82","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.22.tgz","fileCount":70,"integrity":"sha512-E/01TZL7ppriGclt0MKQfqPJJedsNyZV+zUeqKD1mUJ/PBc8hsZUc4xNJAUtowdRutXabbj7PSLUe0ueeCLEFg==","signatures":[{"sig":"MEUCIDEBGI/P1NnkzxPPrTXWmX+I1vpsO9M9teYFqm5OBipGAiEA7YjMadDdugEirClP1T83JQMJE/Ndq+uz+WyDxi28lLI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":99683},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"2d19500e589d654237732d917c4b878acb224c92","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","dependencies":{"isomorphic-fetch":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.22_1707838966557_0.3764246608702049","host":"s3://npm-registry-packages"}},"0.0.23":{"name":"accountstate","version":"0.0.23","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.23","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"89986ead69b1074213f56772ec6bb653c5feaba3","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.23.tgz","fileCount":70,"integrity":"sha512-Z4nTqwPzsjTtIwb6vbgeTXXikVvq6muisZIVf/x4u6Ykiff5XgLrAjFJJEI18bSw8EnLeEp9ba46pCJdivlP/w==","signatures":[{"sig":"MEYCIQDir5odEdEJTRsuOMB+6N0kutGTV2KaicDlA4PaJuHc4QIhAPd9w3Svf24D3DHNAc7XoI9xo8SWeFjZpDM6ax5I0+Dv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":101169},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"3947317e90952f695cb10ffe3d557d4b20f1601d","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.2.4","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"20.11.0","dependencies":{"isomorphic-fetch":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.23_1713528227226_0.979735406192517","host":"s3://npm-registry-packages"}},"0.0.26":{"name":"accountstate","version":"0.0.26","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.26","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"5336f5a414f22c0e98aafc7464ae7625321a36ec","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.26.tgz","fileCount":76,"integrity":"sha512-HzY3Hpdr0kAFLYEwWVALkQJkmLxv/GMJrPcVD5pXjhh1ZUo+tk6+LcPvDtIKbyJOMiHXR422onAMnqAPvOljzA==","signatures":[{"sig":"MEUCIQC2XYZmFyuhU3ITeKzWqwh/7lWPxKlEQycjy0grQCU0rwIgRmoyjJnZqiq7akLS55iuB+NuuqKOx461gystzZkBYCk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":125392},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"34c06ca1c0b1feac6c5657d48477b11114c21a1c","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.9.0","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"22.11.0","dependencies":{"isomorphic-fetch":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.26_1743778515356_0.5332848617201755","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"accountstate","version":"0.0.27","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.27","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"fd0a590d82c3e8a2ce65e9bd0ff3cfee26f34731","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.27.tgz","fileCount":76,"integrity":"sha512-Ryh6tgt+pQNbECmgzrA87yKDEDd14Xqn9GxXzWWZqrM9iw1zEbErZ5Y3NJsNR2+yocQ9s8PqY3rbmFk2Qf/dxQ==","signatures":[{"sig":"MEYCIQDR7dmiox6zDYDSmeYzYD9grKV7xrtfIY0fXOUKx8yLnwIhAJO1mpVCE5d0HS81m0QYisYXmxvwTgzWJyTWnwbW0l5Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":125070},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"50219ff5d623dd39a88d34880c356f8478024858","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.9.0","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"22.11.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.27_1744363448007_0.41143541591112465","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"accountstate","version":"0.0.28","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.28","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"090d4263959eedb86a9ae7bef8ca6ce0da1fe549","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.28.tgz","fileCount":76,"integrity":"sha512-BCuvfLM0S1OVchN+mDk/UlBxfp9C9CuWLkqit5vQbM/ertwyWdtlAtyX7bp4b7YdEZZzJrARwqeUrxsTrl8Dgg==","signatures":[{"sig":"MEUCIQDBt+HmLolgAqtZvga3d2kRYUGDQlvkwGLZDk1jVIILwwIgTNkZLTxOsWFB/U4jyacMVbm2oBD8O5kWveeO1riHu9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":133763},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"0272e6d32b76648f8e028f4c97de7316791c89ff","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"tsts123","email":"npm@mgh.im"},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"10.9.0","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"22.11.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.28_1748855506905_0.8264806530959448","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"name":"accountstate","version":"0.0.30","author":{"name":"tiagosiebler"},"license":"ISC","_id":"accountstate@0.0.30","maintainers":[{"name":"tsts123","email":"npm@mgh.im"}],"homepage":"https://github.com/tiagosiebler/accountstate#readme","bugs":{"url":"https://github.com/tiagosiebler/accountstate/issues"},"dist":{"shasum":"deee62fe14666b65003338ea3f8f50ed63b51fd7","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.30.tgz","fileCount":76,"integrity":"sha512-BUdKQSI1Hhdcgq4wg+nhzA14WJ3fF5ze+daTUuXq4s9Y42WILBuDT+TcwXayZKN/+vwMLFNKw1R8K27Rx0jwOQ==","signatures":[{"sig":"MEQCIDa1bZefAXCia1168JzN91G8BymBJlgSWONoKHZS+o9LAiARbmlGY7rm3561NO+l3KND8fmIFOsNMft9Z4ypJKCxCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.30","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":133767},"main":"dist/cjs/index.js","type":"module","types":"dist/mjs/index.d.ts","module":"dist/mjs/index.js","exports":{".":{"types":"./dist/mjs/index.d.ts","import":"./dist/mjs/index.js","require":"./dist/cjs/index.js"}},"gitHead":"64854a93d75007bc04a79a8cef98570b9f6f7f6d","scripts":{"lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","test:cov":"jest --coverage","test:e2e":"jest --config ./test/jest-e2e.json","build:old":"npm run clean && tsc --build tsconfig.build.json","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","prepareaaa":"npm run build","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:watch":"jest --watch","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8231b43f-598c-4826-9e6b-d63a0832b497"}},"repository":{"url":"git+https://github.com/tiagosiebler/accountstate.git","type":"git"},"_npmVersion":"11.5.2","description":"Simple, reusable, in-memory account state store for working with exchange positions","directories":{},"_nodeVersion":"22.11.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.1","eslint":"^8.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^2.3.2","ts-loader":"^9.2.3","typescript":"^5.3.3","@types/jest":"^29.1.1","@types/node":"^20.11","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/accountstate_0.0.30_1754996888296_0.10968647831202993","host":"s3://npm-registry-packages-npm-production"}},"0.0.31":{"name":"accountstate","version":"0.0.31","repository":{"type":"git","url":"git+https://github.com/sieblyio/accountstate.git"},"description":"Simple, reusable, in-memory account state store for working with exchange positions","author":{"name":"tiagosiebler"},"license":"ISC","main":"dist/cjs/index.js","module":"dist/mjs/index.js","types":"dist/mjs/index.d.ts","exports":{".":{"import":"./dist/mjs/index.js","require":"./dist/cjs/index.js","types":"./dist/mjs/index.d.ts"}},"type":"module","scripts":{"build":"rm -fr dist/* && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && bash ./postBuild.sh","build:old":"npm run clean && tsc --build tsconfig.build.json","build:watch":"npm run clean && tsc --build tsconfig.build.json --watch","prepareaaa":"npm run build","clean":"tsc --build --clean tsconfig.build.json","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest --passWithNoTests","testOther":"node --test --loader ts-node/esm src/**/*.test.ts","test:watch":"jest --watch","test:cov":"jest --coverage","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:e2e":"jest --config ./test/jest-e2e.json"},"devDependencies":{"@eslint/js":"^10.0.1","@types/jest":"^30.0.0","@types/node":"^25.6.0","@typescript-eslint/eslint-plugin":"^8.59.1","@typescript-eslint/parser":"^8.59.1","eslint":"^10.2.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","jest":"^30.3.0","prettier":"^3.8.3","ts-jest":"^29.4.9","ts-loader":"^9.5.7","ts-node":"^10.9.2","typescript":"^6.0.3"},"funding":{"type":"individual","url":"https://github.com/sponsors/tiagosiebler"},"bugs":{"url":"https://github.com/sieblyio/accountstate/issues"},"homepage":"https://github.com/sieblyio/accountstate#readme","gitHead":"aaa0cc763215283ffc0df0b2c79869438389f8fd","_id":"accountstate@0.0.31","_nodeVersion":"24.15.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-9uUU2rGNEqDA0aBqUl8bSPapdD+jIJKRd6WqUHOKTrOqNIConqeGYg3dEcU4UQ7goEkh0UMp7NpOcCL9ozW/tA==","shasum":"14d04e4de3a007a36e90a86c28a4c22a7d7ffcc5","tarball":"https://registry.npmjs.org/accountstate/-/accountstate-0.0.31.tgz","fileCount":76,"unpackedSize":133665,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/accountstate@0.0.31","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCJOXnOzYJm5JndUsflPyGpLvKdGnT0FN8VliDDareKRgIhAOxstR9MfrTv1M5nHMfK6uz9YhIES+9mA7RjWYHR0lPD"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3e0bcd9-eb8f-4dc3-9b2d-1065d571e150"}},"directories":{},"maintainers":[{"name":"tsts123","email":"npm@mgh.im"},{"name":"siebly","email":"npm@siebly.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/accountstate_0.0.31_1777544004335_0.8896487124201373"},"_hasShrinkwrap":false}},"time":{"created":"2024-02-02T11:31:01.891Z","modified":"2026-04-30T10:13:24.711Z","0.0.1":"2024-02-02T11:31:02.099Z","0.0.4":"2024-02-02T12:27:42.548Z","0.0.5":"2024-02-02T12:32:50.260Z","0.0.6":"2024-02-02T12:36:58.350Z","0.0.7":"2024-02-02T12:38:46.273Z","0.0.8":"2024-02-02T14:15:14.025Z","0.0.9":"2024-02-02T14:22:47.421Z","0.0.10":"2024-02-02T14:27:20.764Z","0.0.11":"2024-02-02T14:37:34.829Z","0.0.12":"2024-02-02T14:47:36.765Z","0.0.13":"2024-02-02T14:55:17.262Z","0.0.14":"2024-02-04T23:37:50.867Z","0.0.15":"2024-02-04T23:43:19.849Z","0.0.16":"2024-02-04T23:46:50.719Z","0.0.17":"2024-02-04T23:50:52.952Z","0.0.18":"2024-02-08T11:17:50.867Z","0.0.19":"2024-02-08T17:54:29.909Z","0.0.20":"2024-02-13T11:34:53.996Z","0.0.21":"2024-02-13T14:47:37.812Z","0.0.22":"2024-02-13T15:42:46.707Z","0.0.23":"2024-04-19T12:03:47.358Z","0.0.26":"2025-04-04T14:55:15.661Z","0.0.27":"2025-04-11T09:24:08.188Z","0.0.28":"2025-06-02T09:11:47.101Z","0.0.30":"2025-08-12T11:08:08.459Z","0.0.31":"2026-04-30T10:13:24.463Z"},"bugs":{"url":"https://github.com/sieblyio/accountstate/issues"},"author":{"name":"tiagosiebler"},"license":"ISC","homepage":"https://github.com/sieblyio/accountstate#readme","repository":{"type":"git","url":"git+https://github.com/sieblyio/accountstate.git"},"description":"Simple, reusable, in-memory account state store for working with exchange positions","maintainers":[{"name":"tsts123","email":"npm@mgh.im"},{"name":"siebly","email":"npm@siebly.io"}],"readme":"# Typescript Account State Store for Trading Applications\n\n[![Build & Test](https://github.com/tiagosiebler/accountstate/actions/workflows/test.yml/badge.svg)](https://github.com/tiagosiebler/accountstate/actions/workflows/test.yml)\n[![npm version](https://img.shields.io/npm/v/accountstate)][1]\n[![npm size](https://img.shields.io/bundlephobia/min/accountstate/latest)][1]\n[![npm downloads](https://img.shields.io/npm/dt/accountstate)][1]\n[![last commit](https://img.shields.io/github/last-commit/tiagosiebler/accountstate)][1]\n[![Telegram](https://img.shields.io/badge/chat-on%20telegram-blue.svg)](https://t.me/nodetraders)\n\n[1]: https://www.npmjs.com/package/accountstate\n\nA TypeScript utility class for managing cryptocurrency exchange account state in-memory. Designed for trading bots, portfolio trackers, and any application that needs to maintain real-time account state across positions, orders, and balances.\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [Best Practices](#best-practices)\n- [Quick Start](#quick-start)\n- [Core API](#core-api)\n  - [Balance Management](#balance-management)\n  - [Position Management](#position-management)\n  - [Order Management](#order-management)\n  - [Leverage Management](#leverage-management)\n  - [Price Updates & P&L](#price-updates--pl)\n- [Custom Metadata](#custom-metadata)\n- [Persistence](#persistence)\n- [Running Examples](#running-examples)\n- [Contributions & Thanks](#contributions--thanks)\n- [License](#license)\n\n## Features\n\n- **Account Balance Tracking** - Monitor wallet balance changes\n- **Position Management** - Track long/short positions with real-time P&L\n- **Order State Management** - Monitor active, filled, and cancelled orders\n- **Symbol-based Organization** - Organize data by trading pairs\n- **Custom Metadata Storage** - Store custom data per symbol/position\n- **Exchange Agnostic** - Works with any exchange (Binance, Bybit, etc.)\n- **Persistence Ready** - Built-in persistence hooks for custom storage\n- **TypeScript Support** - Full type safety with generics\n\n## Installation\n\n```bash\nnpm install accountstate\n# or\nyarn add accountstate\n```\n\n## Best Practices\n\n1. **Initial Sync**: Always sync from REST API before starting WebSocket streams\n2. **Reconnection Handling**: Re-sync state after WebSocket reconnections\n3. **Error Handling**: Implement proper error handling for API calls\n4. **Persistence**: Use persistence for custom metadata that can't be restored\n5. **Performance**: Use the built-in filtering and sorting methods for efficiency\n6. **Type Safety**: Define custom metadata interfaces for better type safety\n\n## Quick Start\n\n```typescript\nimport { AccountStateStore } from 'accountstate';\n\n// Create a new account state store\nconst accountState = new AccountStateStore();\n\n// Set wallet balance\naccountState.setWalletBalance(10000);\n\n// Track a position\naccountState.setActivePosition('BTCUSDT', 'LONG', {\n  symbol: 'BTCUSDT',\n  timestampMs: Date.now(),\n  positionSide: 'LONG',\n  orderPositionSide: 'LONG',\n  positionPrice: 45000,\n  assetQty: 0.1,\n  value: 4500,\n  valueUpnl: 0,\n  liquidationPrice: 40000,\n  marginValue: 4500,\n});\n\n// Track an order\naccountState.upsertActiveOrder({\n  exchangeOrderId: '12345',\n  customOrderId: 'my-order-1',\n  symbol: 'BTCUSDT',\n  orderSide: 'BUY',\n  orderType: 'LIMIT',\n  positionSide: 'LONG',\n  status: 'NEW',\n  price: 44000,\n  originalQuantity: 0.05,\n  executedQuantity: 0,\n  averagePrice: 0,\n  createdAtMs: Date.now(),\n  updatedAtMs: Date.now(),\n  isreduceOnly: false,\n});\n\n// Get account summary\nconst summary = accountState.getSessionSummary(10000);\nconsole.log('Account Summary:', summary);\n```\n\nOr, check examples in the [./examples](./examples) folder.\n\n## Core API\n\n### Balance Management\n\n```typescript\n// Set and get wallet balance\naccountState.setWalletBalance(10000);\nconst balance = accountState.getWalletBalance(); // 10000\n\n// Track balance changes\naccountState.storePreviousBalance();\naccountState.setWalletBalance(10500);\nconst previousBalance = accountState.getPreviousBalance(); // 10000\n```\n\n### Position Management\n\n```typescript\n// Check if symbol has any position\nconst hasPosition = accountState.isSymbolInAnyPosition('BTCUSDT');\n\n// Check specific side position\nconst hasLongPosition = accountState.isSymbolSideInPosition('BTCUSDT', 'LONG');\n\n// Get specific position\nconst longPosition = accountState.getActivePosition('BTCUSDT', 'LONG');\n\n// Get all positions\nconst allPositions = accountState.getAllPositions();\n\n// Get position counts\nconst { total, totalHedged } = accountState.getTotalActivePositions();\n\n// Delete a position\naccountState.deleteActivePosition('BTCUSDT', 'LONG');\n```\n\n### Order Management\n\n```typescript\n// Get all orders\nconst allOrders = accountState.getOrders();\n\n// Get active orders only\nconst activeOrders = accountState.getActiveOrders();\n\n// Get orders for specific symbol\nconst btcOrders = accountState.getOrdersForSymbol('BTCUSDT');\n\n// Get orders for symbol and side\nconst btcBuyOrders = accountState.getOrdersForSymbolSide('BTCUSDT', 'BUY');\n\n// Get specific order\nconst order = accountState.getOrder('12345');\n\n// Get orders by status\nconst newOrders = accountState.getOrdersByStatus('NEW');\n\n// Get orders sorted by price\nconst ordersByPrice = accountState.getOrdersSortedByPrice(true); // ascending\n\n// Clear all orders\naccountState.clearAllOrders();\n```\n\n### Leverage Management\n\n```typescript\n// Set symbol leverage\naccountState.setSymbolLeverage('BTCUSDT', 10);\n\n// Get symbol leverage\nconst leverage = accountState.getSymbolLeverage('BTCUSDT'); // 10\n\n// Get all leverage settings\nconst allLeverage = accountState.getSymbolLeverageCache();\n```\n\n### Price Updates & P&L\n\n```typescript\n// Process price update to recalculate unrealized P&L\naccountState.processPriceEvent({\n  symbol: 'BTCUSDT',\n  price: 46000,\n  timestamp: Date.now(),\n});\n\n// Get session summary with P&L calculations\nconst summary = accountState.getSessionSummary(startingBalance);\nconsole.log('Realized P&L:', summary.account.pnlState.realisedPnl);\nconsole.log('Unrealized P&L:', summary.account.pnlState.unrealisedPnl);\n```\n\n## Custom Metadata\n\n### Custom data\n\nThis storage class also supports per-symbol \"metadata\". This is a key:value object you can use to store any information related to that symbol's position.\n\nThis is typically custom data that an exchange might not have any knowledge of.\n\nSome examples:\n\n- How many entries have happened on the short side of a symbol's position.\n- When did this position first open.\n- What state is the trailing SL mechanism in.\n- What price did the last position for this symbol close.\n\n```typescript\n// Define your metadata type\ninterface MyPositionMetadata {\n  leaderId: string;\n  entryCount: number;\n  lastEntryPrice: number;\n  strategy: string;\n}\n\n// Create store with custom metadata type\nconst accountState = new AccountStateStore<MyPositionMetadata>();\n\n// Set metadata for a symbol\naccountState.setSymbolMetadata('BTCUSDT', {\n  leaderId: 'trader-123',\n  entryCount: 3,\n  lastEntryPrice: 45000,\n  strategy: 'DCA',\n});\n\n// Get metadata\nconst metadata = accountState.getSymbolMetadata('BTCUSDT');\n\n// Update specific metadata value\naccountState.setSymbolMetadataValue('BTCUSDT', 'entryCount', 4);\n\n// Get all symbols with metadata\nconst symbolsWithMetadata = accountState.getSymbolsWithMetadata();\n\n// Delete metadata\naccountState.deletePositionMetadata('BTCUSDT');\n```\n\n## Persistence\n\nThe primary purpose of this module is to cache this state in-memory. Most of this can easily be fetched via the REST API, so persistence for the majority of this data is no concern.\n\nHowever, the concept of per-symbol \"metadata\" is a custom one that cannot be easily restored once lost. If you use any of the metadata-related set/delete methods in the module, `isPendingPersist()` will automatically be set to return `true`.\n\nThis is a good way to check if there's a state change to persist somewhere, but it's up to you to implement the persistence mechanism based on your own needs. One way is to debounce an action to `getAllSymbolMetadata()`, persist it somewhere, and finally call `setIsPendingPersist(false)`.\n\nThere's no wrong way to do this. Here's a high level example that extends the account state store to automatically persist to Redis on a timer, if the stored metadata changed:\n\n```typescript\nconst PERSIST_ACCOUNT_POSITION_METADATA_EVERY_MS = 250;\n\nexport interface EnginePositionMetadata {\n  leaderId: string;\n  leaderName: string;\n  entryCountLong: number;\n  entryCountShort: number;\n}\n\n/**\n * This abstraction layer extends the open source \"account state store\" class,\n * adding a persistence mechanism so nothing is lost after restart.\n *\n * Data is stored in Redis, keyed by the accountId.\n *\n * The RedisPersistanceAPI is a custom implementation around the ioredis client.\n */\nexport class PersistedAccountStateStore extends AccountStateStore<EnginePositionMetadata> {\n  private redisAPI: RedisPersistanceAPI<'positionMetadata'>;\n\n  private didRestorePositionMetadata = false;\n\n  private accountId: string;\n\n  constructor(accountId: string, redisAPI: RedisPersistanceAPI) {\n    super();\n\n    this.redisAPI = redisAPI;\n    this.accountId = accountId;\n\n    /** Start the persistence timer and also fetch any initial state, if any is found **/\n    this.startPersistPositionMetadataTimer();\n  }\n\n  /** Call this during bootstrap to ensure we've rehydrated before resuming */\n  async restorePersistedData(): Promise<void> {\n    // Query persisted position metadata from redis\n    const storedDataResult = await this.redisAPI.fetchJSONForAccountKey(\n      'positionMetadata',\n      this.accountId,\n    );\n\n    if (storedDataResult?.data && typeof storedDataResult.data === 'object') {\n      this.setAllSymbolMetadata(storedDataResult.data);\n    } else {\n      console.log(\n        `No state data in redis for \"${this.accountId}\" - nothing to restore`,\n      );\n    }\n\n    // Overwrite local store with restored data\n    this.didRestorePositionMetadata = true;\n  }\n\n  private startPersistPositionMetadataTimer(): void {\n    setInterval(async () => {\n      if (!this.didRestorePositionMetadata) {\n        await this.restorePersistedData();\n      }\n\n      if (!this.isPendingPersist()) {\n        return;\n      }\n\n      try {\n        this.setIsPendingPersist(false);\n        await this.redisAPI.writeJSONForAccountKey(\n          'positionMetadata',\n          this.accountId,\n          this.getAllSymbolMetadata(),\n        );\n\n        console.log(`Saved position metadata to redis`);\n      } catch (e) {\n        console.error(\n          `Exception writing position metadata to redis: ${sanitiseError(e)}`,\n        );\n        this.setIsPendingPersist(true);\n      }\n    }, PERSIST_ACCOUNT_POSITION_METADATA_EVERY_MS);\n  }\n}\n```\n\n## Running Examples\n\nThe repository includes complete working examples for popular exchanges. You can find them in the [./examples](./examples) folder.\n\n### Binance Futures\n\n1. Create `.env` file:\n\n   ```\n   BINANCE_API_KEY=your_api_key\n   BINANCE_API_SECRET=your_api_secret\n   ```\n\n2. Run example:\n   ```bash\n   tsx examples/binance-futures-usdm.ts\n   ```\n\n### Bybit Futures\n\n1. Create `.env` file:\n\n   ```\n   BYBIT_API_KEY=your_api_key\n   BYBIT_API_SECRET=your_api_secret\n   ```\n\n2. Run example:\n   ```bash\n   tsx examples/bybit-futures.ts\n   ```\n\nAll examples demonstrate:\n\n- Initial state synchronization from REST APIs\n- Real-time updates via WebSocket\n- Automatic reconnection handling\n- State consistency maintenance\n- Account summary reporting\n\n<!-- template_contributions -->\n\n## Contributions & Thanks\n\nHave my projects helped you? Share the love, there are many ways you can show your thanks:\n\n- Star & share my projects.\n- Are my projects useful? Sponsor me on Github and support my effort to maintain & improve them: https://github.com/sponsors/tiagosiebler\n- Have an interesting project? Get in touch & invite me to it.\n- Or buy me all the coffee:\n  - ETH(ERC20): `0xA3Bda8BecaB4DCdA539Dc16F9C54a592553Be06C` <!-- metamask -->\n\n<!-- template_contributions_end -->\n\n### Contributions & Pull Requests\n\nContributions are encouraged, I will review any incoming pull requests. See the issues tab for todo items.\n\n<!-- template_related_projects -->\n\n## Related projects\n\nCheck out my related JavaScript/TypeScript/Node.js projects:\n\n- Try my REST API & WebSocket SDKs:\n  - [Bybit-api Node.js SDK](https://www.npmjs.com/package/bybit-api)\n  - [Okx-api Node.js SDK](https://www.npmjs.com/package/okx-api)\n  - [Binance Node.js SDK](https://www.npmjs.com/package/binance)\n  - [Gateio-api Node.js SDK](https://www.npmjs.com/package/gateio-api)\n  - [Bitget-api Node.js SDK](https://www.npmjs.com/package/bitget-api)\n  - [Kucoin-api Node.js SDK](https://www.npmjs.com/package/kucoin-api)\n  - [Coinbase-api Node.js SDK](https://www.npmjs.com/package/coinbase-api)\n  - [Bitmart-api Node.js SDK](https://www.npmjs.com/package/bitmart-api)\n- Try my misc utilities:\n  - [OrderBooks Node.js](https://www.npmjs.com/package/orderbooks)\n  - [Crypto Exchange Account State Cache](https://www.npmjs.com/package/accountstate)\n- Check out my examples:\n  - [awesome-crypto-examples Node.js](https://github.com/tiagosiebler/awesome-crypto-examples)\n  <!-- template_related_projects_end -->\n\n<!-- template_star_history -->\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=tiagosiebler/bybit-api,tiagosiebler/okx-api,tiagosiebler/binance,tiagosiebler/bitget-api,tiagosiebler/bitmart-api,tiagosiebler/gateio-api,tiagosiebler/kucoin-api,tiagosiebler/coinbase-api,tiagosiebler/orderbooks,tiagosiebler/accountstate,tiagosiebler/awesome-crypto-examples&type=Date)](https://star-history.com/#tiagosiebler/bybit-api&tiagosiebler/okx-api&tiagosiebler/binance&tiagosiebler/bitget-api&tiagosiebler/bitmart-api&tiagosiebler/gateio-api&tiagosiebler/kucoin-api&tiagosiebler/coinbase-api&tiagosiebler/orderbooks&tiagosiebler/accountstate&tiagosiebler/awesome-crypto-examples&Date)\n\n<!-- template_star_history_end -->\n\n## License\n\nMIT License - see LICENSE file for details.\n","readmeFilename":"README.md"}