{"_id":"@abstraxn/warrant-react","name":"@abstraxn/warrant-react","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@abstraxn/warrant-react","version":"0.1.0","description":"React components for KYI Warrant — MandateForm and deterministic Readback","main":"./dist/src/index.js","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","require":"./dist/src/index.js","default":"./dist/src/index.js"}},"scripts":{"build":"rimraf dist && tsc","prepublishOnly":"npm run build","prepack":"npm run build"},"keywords":["abstraxn","kyi","warrant","react","mandate","policy","web3","ai-agent"],"author":{"name":"Abstraxn Labs"},"license":"MIT","homepage":"https://docs.abstraxn.com/guides/kyi/sdk-quickstart","peerDependencies":{"@abstraxn/warrant":"^0.1.0","react":">=18.0.0","react-dom":">=18.0.0"},"devDependencies":{"@abstraxn/warrant":"file:../warrant","@types/react":">=18.2.0","@types/react-dom":">=18.2.0","rimraf":"^6.1.2","typescript":"^5.9.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"f1e0cdd3333706c1ce3c87067504a500f799ab8e","_id":"@abstraxn/warrant-react@0.1.0","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-6hPqwMc/DcI+U7DxA25QVceFoyuI58PBZRqI30hdN/za7tvfSwnwJSF0v0RUKXAPavEvu4UmL77oIyXQ2+CkMw==","shasum":"4839224a3b26be5417be851ea2ff0460e715f6b9","tarball":"https://registry.npmjs.org/@abstraxn/warrant-react/-/warrant-react-0.1.0.tgz","fileCount":9,"unpackedSize":13358,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDCVhefqPIL4LwSX+oGrzcOmAhTuocrF0gZBp6EQYOSWAIgNiFp6EsXFYBMRXkp2yUmbhv08hbdNZQbpJdwGYbuu1Q="}]},"_npmUser":{"name":"sandeep_sj","email":"sandeepsj26899@gmail.com"},"directories":{},"maintainers":[{"name":"shubham.antier","email":"shubham.singla@antiersolutions.com"},{"name":"sandeep_sj","email":"sandeepsj26899@gmail.com"},{"name":"abhi883","email":"abhishek.upadhyay@antiersolutions.com"},{"name":"pankaj829","email":"pankajdogra829@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/warrant-react_0.1.0_1788161383607_0.8928360695395372"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-31T07:29:43.447Z","0.1.0":"2026-08-31T07:29:43.733Z","modified":"2026-08-31T07:29:44.017Z"},"maintainers":[{"name":"shubham.antier","email":"shubham.singla@antiersolutions.com"},{"name":"sandeep_sj","email":"sandeepsj26899@gmail.com"},{"name":"abhi883","email":"abhishek.upadhyay@antiersolutions.com"},{"name":"pankaj829","email":"pankajdogra829@gmail.com"}],"description":"React components for KYI Warrant — MandateForm and deterministic Readback","homepage":"https://docs.abstraxn.com/guides/kyi/sdk-quickstart","keywords":["abstraxn","kyi","warrant","react","mandate","policy","web3","ai-agent"],"author":{"name":"Abstraxn Labs"},"license":"MIT","readme":"# @abstraxn/warrant-react\n\nReact components for **KYI Framework → Warrant** — structured mandate forms and deterministic English readback (never LLM).\n\nUse with `@abstraxn/warrant` on the server to seal mandates after the owner reviews the readback and signs.\n\nRelated packages:\n\n| Package | Role |\n|---------|------|\n| `@abstraxn/warrant` | Server / Node client |\n| `@abstraxn/warrant-react` | MandateForm + Readback |\n| `@abstraxn/warrant-verifier` | Offline receipt verify + CLI |\n\n## Installation\n\n```bash\nnpm install @abstraxn/warrant-react @abstraxn/warrant\n```\n\n```bash\nyarn add @abstraxn/warrant-react @abstraxn/warrant\n```\n\n```bash\npnpm add @abstraxn/warrant-react @abstraxn/warrant\n```\n\n## Prerequisites\n\n- **React** >= 18\n- **`@abstraxn/warrant`** (peer / dependency for `RuleSet` types)\n\n---\n\n## Basic integration\n\n### MandateForm + Readback\n\n```tsx\nimport { MandateForm, Readback, mandateReadback } from '@abstraxn/warrant-react';\nimport { Warrant } from '@abstraxn/warrant';\n\nexport function CreateMandatePage() {\n  return (\n    <MandateForm\n      initial={{\n        domain: 'web3',\n        amountMaxPerAction: 100,\n        currency: 'USD',\n        categoryDenylist: '',\n        counterpartyAllowlist: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n      }}\n      submitLabel=\"Review & continue\"\n      onSubmit={async ({ domain, rules, readback }) => {\n        // 1. Show readback to the owner (also rendered live inside the form)\n        console.log(readback);\n\n        // 2. Owner signs mandate hash (passkey / wallet) — your app\n        const owner_signature = await signMandateHash(/* … */);\n        const owner_pubkey_ref = 'wallet:0x…';\n\n        // 3. Seal via server SDK (application API key — keep on backend)\n        const admin = new Warrant({\n          apiUrl: process.env.NEXT_PUBLIC_WARRANT_URL!,\n          apiKey: process.env.ABSTRAXN_API_KEY!,\n        });\n        await admin.createMandate({\n          agent_id: 'agent_web3_demo',\n          principal_id: 'owner_demo',\n          domain,\n          rules,\n          owner_signature,\n          owner_pubkey_ref,\n        });\n      }}\n    />\n  );\n}\n```\n\n### Standalone Readback\n\n```tsx\nimport { Readback, mandateReadback } from '@abstraxn/warrant-react';\nimport type { RuleSet } from '@abstraxn/warrant';\n\nconst rules: RuleSet = {\n  rules: [\n    { type: 'amount_max_per_action', value: 100, currency: 'USD' },\n  ],\n};\n\nconst text = mandateReadback(rules, 'web3');\n\nreturn <Readback text={text} />;\n```\n\n---\n\n## API reference\n\n### `<MandateForm />`\n\nStructured fields only — no free-text policy rules.\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `onSubmit` | `(payload) => void \\| Promise<void>` | — | Receives `{ domain, rules, readback }` |\n| `initial` | `Partial<MandateFormValues>` | food / INR defaults | Prefill form fields |\n| `submitLabel` | `string` | `'Review & continue'` | Submit button label |\n| `disabled` | `boolean` | `false` | Disable inputs / submit |\n\n```typescript\ntype MandateFormValues = {\n  domain: string;\n  amountMaxPerAction: number;\n  currency: string;\n  categoryDenylist: string;      // comma-separated\n  counterpartyAllowlist: string; // comma-separated\n};\n```\n\n### `<Readback />`\n\nRenders the deterministic English summary.\n\n| Prop | Type | Description |\n|------|------|-------------|\n| `text` | `string` | Output of `mandateReadback()` |\n\n### `mandateReadback(rules, domain)`\n\nBuilds a stable English paragraph from a `RuleSet`. Sorting is deterministic so the same rules always produce the same string.\n\n---\n\n## Design rules\n\n- **Structured fields only** — owners never type free-text policies\n- **Deterministic readback** — template sentences, not an LLM\n- **Agent never sees rules** — runtime only gets ALLOW / DENY / ESCALATE\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-f6f79c0d4c9fd133c47c43fa51325cc3"}