open-index/open-npm huggingface dataset:
npm package: @quorum-sdk/sdk
Description: Quorum Protocol JavaScript/TypeScript SDK — browser and Node.js
Author: Wafula-Ian01
Latest version: 2.0.0

# @quorum-sdk/sdk

JavaScript/TypeScript SDK for the Quorum Protocol API.
Works in browsers (via Argon2 WebAssembly) and Node.js.

## Install

```bash
npm install @quorum-sdk/sdk
```

## Quick start

```typescript
import { QuorumClient, deriveShare, verifyWebhookSignature } from '@quorum-sdk/sdk';

const client = new QuorumClient({
  baseURL: 'https://api.quorum.dev',
  apiKey:  'qrm_...',
});

// Server side — create an auth request
const req = await client.createRequest({
  groupId:          'your-group-uuid',
  actionDescriptor: 'Approve fund transfer of UGX 5,000,000',
  payloadHash:      'sha256_hex_of_your_payload',
  expiresIn:        300,
});
console.log(req.id, req.status); // "pending"

// Member side — derive share and authorise (browser)
const shareHex = await deriveShare(memberPin, memberSaltHex);
await client.authorize({ requestId: req.id, memberId, shareHex, token });

// Webhook receiver — verify signature
const ok = await verifyWebhookSignature(requestBody, webhookSecret, signatureHeader);
```

## Argon2id parameters

The SDK uses identical parameters to `quorum-engine`:

| Parameter | Value |
|---|---|
| Algorithm | Argon2id |
| Memory | 64 MB (65,536 KiB) |
| Time | 3 passes |
| Parallelism | 1 |
| Output | 32 bytes |
npm package: @quorum-sdk/widget
Description: Quorum Protocol embeddable PIN-entry widget — React
Latest version: 2.0.0

# @quorum/widget

Embeddable React PIN-entry widget for the Quorum Protocol.
Drop it into any React app — zero backend changes required.

## Install

```bash
npm install @quorum-sdk/widget @quorum-sdk/sdk
```

## Usage

```tsx
import { QuorumWidget } from '@quorum-sdk/widget';
import '@quorum-sdk/widget/style.css';

function ApprovalPage() {
  return (
    <QuorumWidget
      requestId={params.requestId}
      memberId={params.memberId}
      token={params.token}       // from the email/push approval link
      saltHex={member.saltHex}   // fetched from your backend
      apiBaseUrl="https://api.quorum.dev"
      apiKey="qrm_..."
      actionDescriptor="Approve fund transfer of UGX 5,000,000"
      onApproved={() => navigate('/success')}
      onDenied={() => navigate('/denied')}
    />
  );
}
```

## Theming

Override CSS custom properties on any ancestor element:

```css
.my-wrapper {
  --qrm-primary:  #005fab;   /* your brand colour */
  --qrm-bg:       #f0f4f8;
  --qrm-radius:   12px;
  --qrm-font:     'Inter', sans-serif;
}
```