{"_id":"@d13co/algo-metrics-sdk","_rev":"4-79b91477c88954320a3e03e1dc38028a","name":"@d13co/algo-metrics-sdk","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@d13co/algo-metrics-sdk","version":"1.0.0","license":"MIT","_id":"@d13co/algo-metrics-sdk@1.0.0","maintainers":[{"name":"bitd13co","email":"bit@d13.co"}],"homepage":"https://github.com/d13co/algo-metrics-sdk/tree/main/packages/sdk#readme","bugs":{"url":"https://github.com/d13co/algo-metrics-sdk/issues"},"dist":{"shasum":"38c9dc8bdaf280d6f1cc3b4ffffe594692c545a8","tarball":"https://registry.npmjs.org/@d13co/algo-metrics-sdk/-/algo-metrics-sdk-1.0.0.tgz","fileCount":18,"integrity":"sha512-9Ebj3g2iFP24I5MpDnws7qxfjD++qiHfd+dbCiX9o85k9NzL16PrgrlzaHYMBT09GAOOIFg1TFOrIzxDyWr9Hw==","signatures":[{"sig":"MEQCIApst28ZjEB7A5rUbogmYKZs+6iCCAvFQXa+xhm7xJAbAiBOp5QzdX8QMlDR+oT6Em0GpKPYHSwNtck/eLMzcLUNug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57809},"main":"dist/index.js","type":"module","_from":"file:d13co-algo-metrics-sdk-1.0.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"bitd13co","email":"bit@d13.co"},"_resolved":"/tmp/a20dd155fb96bdc461672276c0b2ee39/d13co-algo-metrics-sdk-1.0.0.tgz","_integrity":"sha512-9Ebj3g2iFP24I5MpDnws7qxfjD++qiHfd+dbCiX9o85k9NzL16PrgrlzaHYMBT09GAOOIFg1TFOrIzxDyWr9Hw==","repository":{"url":"git+ssh://git@github.com/d13co/algo-metrics-sdk.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.3","description":"Sliding window of Algorand block timestamps and transaction counters","directories":{},"_nodeVersion":"22.19.0","dependencies":{"algosdk":"^3.5.2","abel-ghost-sdk":"^0.0.7","@algorandfoundation/algokit-utils":"^9.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/algo-metrics-sdk_1.0.0_1773451810719_0.44746036484955565","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@d13co/algo-metrics-sdk","version":"1.1.0","license":"MIT","_id":"@d13co/algo-metrics-sdk@1.1.0","maintainers":[{"name":"bitd13co","email":"bit@d13.co"}],"homepage":"https://github.com/d13co/algo-metrics-sdk/tree/main/packages/sdk#readme","bugs":{"url":"https://github.com/d13co/algo-metrics-sdk/issues"},"dist":{"shasum":"f87481a7e4bef13a40859af660925621070ef4af","tarball":"https://registry.npmjs.org/@d13co/algo-metrics-sdk/-/algo-metrics-sdk-1.1.0.tgz","fileCount":18,"integrity":"sha512-28mE7oB/CoYoxyDNAcd8lmOrVxNMXhG4hlwh8QNz1F61Ikjf8ct+Hw09AkWpqnaYPRolnO+Vep5Ef8frKbjOeQ==","signatures":[{"sig":"MEQCIDuoFwO7LjZ/9bNCY84p9WFk8nsDke8vmMV+MfZUtnt0AiBXysBOLK8CU070L/iK6J4/hnm9toXjVVUDeveJoRuSLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57254},"main":"dist/index.js","type":"module","_from":"file:d13co-algo-metrics-sdk-1.1.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"bitd13co","email":"bit@d13.co"},"_resolved":"/tmp/9e73d65ac1651c8ed88c2788c87f1613/d13co-algo-metrics-sdk-1.1.0.tgz","_integrity":"sha512-28mE7oB/CoYoxyDNAcd8lmOrVxNMXhG4hlwh8QNz1F61Ikjf8ct+Hw09AkWpqnaYPRolnO+Vep5Ef8frKbjOeQ==","repository":{"url":"git+ssh://git@github.com/d13co/algo-metrics-sdk.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.3","description":"Sliding window of Algorand block timestamps and transaction counters","directories":{},"_nodeVersion":"22.19.0","dependencies":{"algosdk":"^3.5.2","abel-ghost-sdk":"^0.0.7","@algorandfoundation/algokit-utils":"^9.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/algo-metrics-sdk_1.1.0_1773453759044_0.035868774892468425","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@d13co/algo-metrics-sdk","version":"1.2.0","license":"MIT","_id":"@d13co/algo-metrics-sdk@1.2.0","maintainers":[{"name":"bitd13co","email":"bit@d13.co"}],"homepage":"https://github.com/d13co/algo-metrics-sdk/tree/main/packages/sdk#readme","bugs":{"url":"https://github.com/d13co/algo-metrics-sdk/issues"},"dist":{"shasum":"a6ffb95d9a6edec48979ca32421d85dca7a72401","tarball":"https://registry.npmjs.org/@d13co/algo-metrics-sdk/-/algo-metrics-sdk-1.2.0.tgz","fileCount":18,"integrity":"sha512-ushv9WwlcU4v5hmaSGHtbfUjTR626kTcE8N1uDAEqI7MQ7a0o8lDBDnEOBm6J2upsmQZ7tB5nCXe1TLldb1hoA==","signatures":[{"sig":"MEQCIGmjf+vzpH6Kf5O5on3N0u9qAySyiSoJA/IP4qy8dSXlAiAlxv7N/Xo6qpMKNuJVZaH4m8rNiEOF4lg5oDONHgf/GQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60470},"main":"dist/index.js","type":"module","_from":"file:d13co-algo-metrics-sdk-1.2.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"bitd13co","email":"bit@d13.co"},"_resolved":"/tmp/a73f5ecdbca4475329ad22229f6da640/d13co-algo-metrics-sdk-1.2.0.tgz","_integrity":"sha512-ushv9WwlcU4v5hmaSGHtbfUjTR626kTcE8N1uDAEqI7MQ7a0o8lDBDnEOBm6J2upsmQZ7tB5nCXe1TLldb1hoA==","repository":{"url":"git+ssh://git@github.com/d13co/algo-metrics-sdk.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.3","description":"Sliding window of Algorand block timestamps and transaction counters","directories":{},"_nodeVersion":"22.19.0","dependencies":{"algosdk":"^3.5.2","abel-ghost-sdk":"^0.0.7","@algorandfoundation/algokit-utils":"^9.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/algo-metrics-sdk_1.2.0_1775047146468_0.07719458653942679","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@d13co/algo-metrics-sdk","version":"1.2.1","type":"module","description":"Sliding window of Algorand block timestamps and transaction counters","main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/d13co/algo-metrics-sdk.git","directory":"packages/sdk"},"bugs":{"url":"https://github.com/d13co/algo-metrics-sdk/issues"},"homepage":"https://github.com/d13co/algo-metrics-sdk/tree/main/packages/sdk#readme","dependencies":{"@algorandfoundation/algokit-utils":"^9.2.0","abel-ghost-sdk":"^0.0.7","algosdk":"^3.5.2"},"scripts":{"build":"tsc","test":"vitest run --config ../../vitest.config.ts","test:watch":"vitest --config ../../vitest.config.ts"},"_id":"@d13co/algo-metrics-sdk@1.2.1","_integrity":"sha512-VM2RRYUzZ5h99e5jQWFTlv4l759THmUJj70vay5rXxTqjNIGWsWELhE1vwaOVQAJCWoAwNoU6ZoNRyWYjpaDQg==","_resolved":"/tmp/d5294c02af008ea92849e0574b57275e/d13co-algo-metrics-sdk-1.2.1.tgz","_from":"file:d13co-algo-metrics-sdk-1.2.1.tgz","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-VM2RRYUzZ5h99e5jQWFTlv4l759THmUJj70vay5rXxTqjNIGWsWELhE1vwaOVQAJCWoAwNoU6ZoNRyWYjpaDQg==","shasum":"f994c24b1f512a3d8df43a15b2a555d55ce7027c","tarball":"https://registry.npmjs.org/@d13co/algo-metrics-sdk/-/algo-metrics-sdk-1.2.1.tgz","fileCount":10,"unpackedSize":28421,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFcGKuwjLBTJmZJjqS8+uqgYofIcRgWUbwm5I79v6dqAAiBVQfR24U61/sYeYdjfubYXn+01LOzT4UJeOyG8akOnoA=="}]},"_npmUser":{"name":"bitd13co","email":"bit@d13.co"},"directories":{},"maintainers":[{"name":"bitd13co","email":"bit@d13.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/algo-metrics-sdk_1.2.1_1786848222751_0.855571311950839"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-14T01:30:10.288Z","modified":"2026-08-16T02:43:43.062Z","1.0.0":"2026-03-14T01:30:10.871Z","1.1.0":"2026-03-14T02:02:39.203Z","1.2.0":"2026-04-01T12:39:06.607Z","1.2.1":"2026-08-16T02:43:42.905Z"},"bugs":{"url":"https://github.com/d13co/algo-metrics-sdk/issues"},"license":"MIT","homepage":"https://github.com/d13co/algo-metrics-sdk/tree/main/packages/sdk#readme","repository":{"type":"git","url":"git+ssh://git@github.com/d13co/algo-metrics-sdk.git","directory":"packages/sdk"},"description":"Sliding window of Algorand block timestamps and transaction counters","maintainers":[{"name":"bitd13co","email":"bit@d13.co"}],"readme":"# @d13co/algo-metrics-sdk\n\n[![npm version](https://img.shields.io/npm/v/@d13co/algo-metrics-sdk)](https://www.npmjs.com/package/@d13co/algo-metrics-sdk)\n\nTypeScript SDK for fetching Algorand block timestamps and transaction counters. Provides one-shot queries and live sliding-window watchers powered by [Abel Ghost SDK](https://www.npmjs.com/package/abel-ghost-sdk).\n\n## Installation\n\n```bash\npnpm add @d13co/algo-metrics-sdk\n```\n\n## Quick Start\n\n### One-shot fetch\n\n```ts\nimport { AlgoMetricsSDK } from '@d13co/algo-metrics-sdk';\n\nconst sdk = new AlgoMetricsSDK();\n\n// Fetch the last 100 blocks\nconst data = await sdk.getTsTc(100);\n\nfor (const block of data) {\n  console.log(`Round ${block.rnd}: ts=${block.ts} tc=${block.tc}`);\n}\n```\n\n### Live watcher\n\n```ts\nimport { AlgoMetricsSDK, type BlockRoundTimeAndTc } from '@d13co/algo-metrics-sdk';\n\nconst sdk = new AlgoMetricsSDK();\n\nfunction onBlockData(blocks: BlockRoundTimeAndTc[]): void {\n  const last = blocks[blocks.length - 1]!;\n  console.log(`Latest round: ${last.rnd}`);\n}\n\n// Stream a sliding window of the last 200 blocks\nawait sdk.register(onBlockData, { numBlocks: 200 });\n\n// Stop watching when done\nsdk.unregister(onBlockData);\n```\n\n### Custom Algorand client\n\n```ts\nimport { AlgorandClient } from '@algorandfoundation/algokit-utils';\nimport { AlgoMetricsSDK } from '@d13co/algo-metrics-sdk';\n\nconst algorand = AlgorandClient.testNet();\nconst sdk = new AlgoMetricsSDK({ algorand });\n```\n\n## API\n\n### `new AlgoMetricsSDK(options?)`\n\n| Option | Type | Description |\n| --- | --- | --- |\n| `abelGhostSDK` | `AbelGhostSDK` | Use an existing Abel Ghost SDK instance |\n| `algorand` | `AlgorandClient` | Algorand client (defaults to MainNet) |\n| `ghostAppId` | `bigint` | Ghost app ID (defaults to `3381542955n` for Mainnet). Optional but recommended for performance. |\n\nPass either `{ abelGhostSDK }`, `{ algorand?, ghostAppId? }`, or nothing to use MainNet defaults.\n\n### `sdk.getTsTc(blockRange?: number): Promise<BlockRoundTimeAndTc[]>`\n\nFetches block timestamps and transaction counters for the most recent `blockRange` blocks (default and max: 1000).\n\n### `sdk.register(callback, options?): Promise<void>`\n\nRegisters a callback that receives a sliding window of block data on every new block. The callback fires immediately with current data, then again as each new block arrives.\n\n| Option | Type | Default | Description |\n| --- | --- | --- | --- |\n| `numBlocks` | `number` | `1000` | Size of the sliding window (max 1000) |\n| `includeBlock` | `boolean` | `false` | When `true`, the callback receives the full `BlockResponse` as a second argument on each new block |\n\nWhen `includeBlock` is `true`, the callback type must be `(data, lastBlock) => void`. The initial delivery on registration does not include a block.\n\n### `sdk.unregister(callback): void`\n\nRemoves a previously registered watcher. The internal loop stops when no watchers remain.\n\n### `BlockRoundTimeAndTc`\n\n```ts\n{\n  rnd: bigint;  // block round\n  ts: number;   // block timestamp (seconds)\n  tc: bigint;   // cumulative transaction counter\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}