{"_id":"@arcticbison/rudis","name":"@arcticbison/rudis","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@arcticbison/rudis","version":"0.1.0","description":"Official Node.js SDK for Rudis — open-source crypto invoice and billing notifier","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"node --experimental-vm-modules node_modules/.bin/jest"},"keywords":["bitcoin","lightning","monero","crypto","invoice","billing","payments","webhook","privacy"],"author":{"name":"Arctic Bison LLC"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Arcticbison-Dev/Rudis.git"},"homepage":"https://github.com/Arcticbison-Dev/Rudis","engines":{"node":">=18"},"devDependencies":{"typescript":"^5.4.5"},"gitHead":"1dc789631a98efe3721ff641b0ebedcd4804326d","_id":"@arcticbison/rudis@0.1.0","bugs":{"url":"https://github.com/Arcticbison-Dev/Rudis/issues"},"_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-UScTi87OlTDH+5Y0DX8x2U2hBpW1Y+8CFk9ra8A9TdVOoyzIj+2JjicVpUGz4b5HCAkRQSdIBc/hpCkrloO/cQ==","shasum":"6557ffacd7919963ae508e5ca016e2b241b66e21","tarball":"https://registry.npmjs.org/@arcticbison/rudis/-/rudis-0.1.0.tgz","fileCount":19,"unpackedSize":33686,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCmZCDiSeU68GyfCQVCQHRtUd7PHu7KFqEqCQ3yzZGuWwIhANZunMMtyzhxh7sIU2yfzzgLDLk76S3qDDR04V1ayBZu"}]},"_npmUser":{"name":"arcticbison","email":"padelaa@arcticbison.com"},"directories":{},"maintainers":[{"name":"arcticbison","email":"padelaa@arcticbison.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rudis_0.1.0_1784204334546_0.4302490204133327"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-16T12:18:53.878Z","0.1.0":"2026-07-16T12:18:54.690Z","modified":"2026-07-16T12:18:55.149Z"},"maintainers":[{"name":"arcticbison","email":"padelaa@arcticbison.com"}],"description":"Official Node.js SDK for Rudis — open-source crypto invoice and billing notifier","homepage":"https://github.com/Arcticbison-Dev/Rudis","keywords":["bitcoin","lightning","monero","crypto","invoice","billing","payments","webhook","privacy"],"repository":{"type":"git","url":"git+https://github.com/Arcticbison-Dev/Rudis.git"},"author":{"name":"Arctic Bison LLC"},"bugs":{"url":"https://github.com/Arcticbison-Dev/Rudis/issues"},"license":"MIT","readme":"# @arcticbison/rudis\n\nOfficial Node.js SDK for [Rudis](https://github.com/Arcticbison-Dev/Rudis) — the open-source crypto invoice and billing notifier supporting Lightning Network, Bitcoin on-chain, and Monero.\n\n## Installation\n\n```bash\nnpm install @arcticbison/rudis\n# or\nyarn add @arcticbison/rudis\n```\n\n## Quick start\n\n```ts\nimport { RudisClient } from '@arcticbison/rudis';\n\nconst rudis = new RudisClient({\n  baseUrl: 'https://your-rudis-instance.example.com',\n  apiKey:  process.env.RUDIS_API_KEY,\n});\n\n// Create a Lightning invoice\nconst invoice = await rudis.invoices.create({\n  customerId: 'user-42',\n  amountSats: 21000,\n  rail:        'LN',\n  metadata:   { planId: 'operator', billingPeriod: 'monthly' },\n});\n\nconsole.log(invoice.bolt11); // lnbc...\n\n// Poll until paid or expired\nconst settled = await rudis.invoices.poll(invoice.id);\nif (settled.status === 'paid') {\n  console.log('Payment confirmed:', settled.paidAt);\n}\n```\n\n## Invoices\n\n```ts\n// Create — Lightning\nconst ln  = await rudis.invoices.create({ customerId, amountSats: 21000, rail: 'LN' });\n// Create — Bitcoin on-chain\nconst btc = await rudis.invoices.create({ customerId, amountSats: 21000, rail: 'BTC' });\n// Create — Monero\nconst xmr = await rudis.invoices.create({ customerId, amountSats: 21000, rail: 'XMR' });\n\n// Get\nconst invoice = await rudis.invoices.get('inv_...');\n\n// List (optionally filter by customer)\nconst all = await rudis.invoices.list();\nconst mine = await rudis.invoices.list('user-42');\n\n// Poll until settled (polls every 3s, up to 100 attempts by default)\nconst settled = await rudis.invoices.poll('inv_...', 3000, 100);\n```\n\n## Subscriptions\n\n```ts\n// Register a subscription (call after first payment to enable recurring billing)\nconst sub = await rudis.subscriptions.create({\n  customerId:    'user-42',\n  planId:        'altostratus-operator',\n  billingPeriod: 'monthly',\n  rail:          'LN',\n  webhookUrl:    'https://your-app.example.com/webhooks/rudis',\n  webhookSecret: process.env.WEBHOOK_SECRET,\n});\n\n// Get\nconst sub = await rudis.subscriptions.get('sub_...');\n\n// List\nconst all = await rudis.subscriptions.list();\n\n// Cancel\nawait rudis.subscriptions.cancel('sub_...');\n```\n\n## Webhook verification\n\n```ts\nimport { verifyWebhookSignature, parseWebhookEvent } from '@arcticbison/rudis';\nimport express from 'express';\n\napp.post(\n  '/webhooks/rudis',\n  express.raw({ type: 'application/json' }),\n  (req, res) => {\n    const sig = req.headers['x-rudis-signature'] as string;\n\n    if (!verifyWebhookSignature(req.body, sig, process.env.WEBHOOK_SECRET!)) {\n      return res.status(401).end();\n    }\n\n    const event = parseWebhookEvent(req.body);\n\n    switch (event.type) {\n      case 'invoice.paid':\n        // activate subscription\n        break;\n      case 'subscription.suspended':\n        // revoke access\n        break;\n    }\n\n    res.sendStatus(200);\n  }\n);\n```\n\n## TypeScript\n\nFull TypeScript support. Key types:\n\n```ts\nimport type {\n  Rail,                      // 'LN' | 'BTC' | 'XMR'\n  Invoice,\n  Subscription,\n  WebhookEvent,\n  InvoicePaidData,\n  SubscriptionRenewedData,\n} from '@arcticbison/rudis';\n```\n\n## Self-hosted Rudis\n\nPoint `baseUrl` at your self-hosted instance:\n\n```ts\nconst rudis = new RudisClient({\n  baseUrl: 'http://localhost:3000',   // or your VPS\n  apiKey:  process.env.INVOICE_API_KEY,\n});\n```\n\n## License\n\nMIT — same as Rudis itself.\n","readmeFilename":"README.md","_rev":"1-4bf8c6cc78114914ac2ad369b169a432"}