{"_id":"@agavadex/sdk","_rev":"3-c216ffd4853d7bfa4098a749c896a28e","name":"@agavadex/sdk","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@agavadex/sdk","version":"0.1.0","keywords":["agavadex","crypto","exchange","trading","api","sdk","websocket"],"author":{"name":"AgavaDEX"},"license":"Apache-2.0","_id":"@agavadex/sdk@0.1.0","maintainers":[{"name":"agavadex","email":"john@agavadex.com"}],"homepage":"https://docs.agavadex.com","bugs":{"url":"https://github.com/AGAVADEX/agavadex-typescript/issues"},"dist":{"shasum":"cee281d9cca3b3605ad9e4528c1aee4c7f67809a","tarball":"https://registry.npmjs.org/@agavadex/sdk/-/sdk-0.1.0.tgz","fileCount":9,"integrity":"sha512-Vk7wF3f238X58jQ8JqpG9QE+72Uc8pK0PTpNaC0Yf3Quk5Y6YXWpujOvKIZ4o9dDXZ8V+ppPxeu9j/xcWD+PXQ==","signatures":[{"sig":"MEUCIQDFOfom8lv5TJOIvT/zJxjhB7nTb/mYNVnTmiJcWJ+tlgIgWuT49+u3hvspqW3mpJyzMlD6JVYwJvVmDry+f+RvLuE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152182},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"25908b47484c7d3ee10a7b0ba03455665d4dd5cd","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"agavadex","email":"john@agavadex.com"},"repository":{"url":"git+https://github.com/AGAVADEX/agavadex-typescript.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for the AgavaDEX exchange API (REST + WebSocket)","directories":{},"_nodeVersion":"25.3.0","dependencies":{"ws":"^8.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","@types/ws":"^8.5.13","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1779457604330_0.969195280011071","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agavadex/sdk","version":"0.1.1","keywords":["agavadex","crypto","exchange","trading","api","sdk","websocket"],"author":{"name":"AgavaDEX"},"license":"Apache-2.0","_id":"@agavadex/sdk@0.1.1","maintainers":[{"name":"agavadex","email":"john@agavadex.com"}],"homepage":"https://docs.agavadex.com","bugs":{"url":"https://gitlab.com/agavadex-group/agavadex-typescript/issues"},"dist":{"shasum":"f5fe8aad30811ea963eb13dbcd63ba5080445204","tarball":"https://registry.npmjs.org/@agavadex/sdk/-/sdk-0.1.1.tgz","fileCount":9,"integrity":"sha512-GZU5gX+a80qa4iyMFKrnfb1GZNLXRQt08ayXA4MOm7HBJXGMTEl9A9TAoU0IY0ViDMM1HR/kHpiwRQ8LdQfEWQ==","signatures":[{"sig":"MEQCIFP0PcLCab2zn4sSFueVRrYVKsH3tLEgugfkPjL0yXg2AiBVsrXs6JYAHEvKB9nCBdlYy27kwLMpOxg1b62XBW9YWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154411},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"c582adb6af3919f727909263ad3e5dc642f4a6f6","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"agavadex","email":"john@agavadex.com"},"repository":{"url":"git+https://gitlab.com/agavadex-group/agavadex-typescript.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for the AgavaDEX exchange API (REST + WebSocket)","directories":{},"_nodeVersion":"25.3.0","dependencies":{"ws":"^8.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.8","@types/ws":"^8.5.13","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.1_1780341595479_0.9684459373336483","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agavadex/sdk","version":"0.1.2","description":"TypeScript SDK for the AgavaDEX exchange API (REST + WebSocket)","license":"Apache-2.0","author":{"name":"AgavaDEX"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"engines":{"node":">=18"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit","test":"vitest run","prepublishOnly":"npm run build"},"dependencies":{"ws":"^8.18.0"},"devDependencies":{"@types/node":"^22.10.2","@types/ws":"^8.5.13","tsup":"^8.3.5","typescript":"^5.7.2","vitest":"^2.1.8"},"keywords":["agavadex","crypto","exchange","trading","api","sdk","websocket"],"repository":{"type":"git","url":"git+https://gitlab.com/agavadex-group/agavadex-typescript.git"},"homepage":"https://docs.agavadex.com","gitHead":"c824f9ad23ea75067603f8df9cd216c54d6b3d63","_id":"@agavadex/sdk@0.1.2","bugs":{"url":"https://gitlab.com/agavadex-group/agavadex-typescript/issues"},"_nodeVersion":"25.3.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-sD5pToX9aPNJ+vmXp2SI0jbHQyrWPrCfRb8XXMBvQQMZFJeYa1vXgjD/R/37tgqKpEYo8hjeKB8b20strMePfA==","shasum":"a5398a0cd2ed99efb0211a787db8191a58b9d80c","tarball":"https://registry.npmjs.org/@agavadex/sdk/-/sdk-0.1.2.tgz","fileCount":9,"unpackedSize":154753,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDPiyrIHHSpIXokkrFgPLxhvN3hZp6def094Vl1sglQmgIhAMu8lhP/jgF0Cz+67G5NO4n/SbXo9QqXeeyi74NkD2jc"}]},"_npmUser":{"name":"agavadex","email":"john@agavadex.com"},"directories":{},"maintainers":[{"name":"agavadex","email":"john@agavadex.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.2_1780343233435_0.42315147642088946"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-22T13:46:44.159Z","modified":"2026-06-01T19:47:13.724Z","0.1.0":"2026-05-22T13:46:44.478Z","0.1.1":"2026-06-01T19:19:55.636Z","0.1.2":"2026-06-01T19:47:13.613Z"},"bugs":{"url":"https://gitlab.com/agavadex-group/agavadex-typescript/issues"},"author":{"name":"AgavaDEX"},"license":"Apache-2.0","homepage":"https://docs.agavadex.com","keywords":["agavadex","crypto","exchange","trading","api","sdk","websocket"],"repository":{"type":"git","url":"git+https://gitlab.com/agavadex-group/agavadex-typescript.git"},"description":"TypeScript SDK for the AgavaDEX exchange API (REST + WebSocket)","maintainers":[{"name":"agavadex","email":"john@agavadex.com"}],"readme":"# AgavaDEX TypeScript SDK\n\nTypeScript / JavaScript client for the\n[AgavaDEX](https://agavadex.com) exchange API — a thin, typed wrapper\nover the public REST + WebSocket interface.\n\n## Install\n\n```sh\nnpm install @agavadex/sdk\n```\n\nRequires Node.js 18+. Ships ESM and CommonJS builds with type\ndeclarations.\n\n## Quick start\n\n### Public market data — no key needed\n\n```ts\nimport { Client } from \"@agavadex/sdk\";\n\nconst client = new Client();\n\nfor (const s of await client.getSymbols()) {\n  console.log(s.symbol, s.tick_size);\n}\n\nconst book = await client.getOrderBook(\"AGAVAUSDT\");\nconsole.log(book.bids[0]?.price, book.asks[0]?.price);\n```\n\n### Private account & trading\n\nAPI keys are created in the AgavaDEX web app (Account → API keys). Read\nthem from the environment — never hard-code them.\n\n```ts\nimport { Client } from \"@agavadex/sdk\";\n\nconst client = new Client({\n  apiKey: process.env.AGAVADEX_API_KEY,\n  apiSecret: process.env.AGAVADEX_API_SECRET,\n});\n\nfor (const balance of await client.getBalances()) {\n  console.log(balance.asset, balance.available);\n}\n\nconst { order } = await client.placeOrder(\"AGAVAUSDT\", {\n  side: \"buy\",\n  type: \"limit\",\n  price: \"100.00\",\n  qty: \"1\",\n});\nconsole.log(order.id, order.status);\n```\n\n### WebSocket streams\n\n```ts\nimport { MarketDataStream } from \"@agavadex/sdk\";\n\nconst stream = new MarketDataStream({ channels: [\"trades@AGAVAUSDT\"] });\nfor await (const msg of stream) {\n  console.log(msg.channel, msg.type, msg.data);\n}\n```\n\nThe private `UserStream` takes `apiKey` / `apiSecret` and authenticates\nin-band with a signed first frame. Subscribe to any of `orders`,\n`trades`, `balances`:\n\n```ts\nimport { UserStream } from \"@agavadex/sdk\";\n\nconst stream = new UserStream({\n  apiKey: process.env.AGAVADEX_API_KEY!,\n  apiSecret: process.env.AGAVADEX_API_SECRET!,\n  channels: [\"orders\", \"balances\"],\n});\nfor await (const msg of stream) {\n  console.log(msg.channel, msg.type, msg.data);\n}\n```\n\nBoth streams auto-reconnect and re-subscribe on a dropped socket.\n\n## The decimal contract\n\nEvery monetary value — `price`, `qty`, `volume`, fee amounts — is a\nJSON **string** (`\"3500.55\"`), never a number. This SDK keeps those\nfields as `string`: that is lossless and leaves the choice of\nbig-decimal library to you. Never `Number()` them blindly.\n\n## Errors\n\nNon-2xx responses throw a typed error — `BadRequestError`,\n`AuthenticationError`, `PermissionDeniedError`, `NotFoundError`,\n`RateLimitError`, `ServerError` — all subclasses of `ApiError`. Each\ncarries `statusCode` and the API's `requestId`; `RateLimitError` adds\n`retryAfter`. Pass `maxRetries` to `Client` to auto-retry `429`s.\n\n## What this SDK does not do\n\nWithdrawals are not part of the AgavaDEX API and not in this SDK — they\nrequire a wallet signature and happen only in the web app.\n\n## Development\n\n```sh\nnpm install\nnpm run typecheck\nnpm test          # offline tests run with no credentials\nnpm run build\n```\n\nIntegration tests run only when `AGAVADEX_API_KEY` / `AGAVADEX_API_SECRET`\nare set, and are read-only — they never place orders.\n\n## Links\n\n- Docs: <https://docs.agavadex.com>\n- API reference: <https://docs.agavadex.com/api/reference/>\n- Security policy: [SECURITY.md](SECURITY.md)\n\n## License\n\n[Apache-2.0](LICENSE)\n","readmeFilename":"README.md"}