Skip to content

Core SDK (Vanilla TypeScript)

For non-React applications, use the core SDK directly.

Installation

bash
pnpm add @waspada/sdk @waspada/types

Quick Example

typescript
import { WaspadaSDK } from '@waspada/sdk';
import type { WaspadaSdkConfig } from '@waspada/types';

const config: WaspadaSdkConfig = {
  source_platform: 'YOUR_PARTNER_ID',
  signPayload: async (data: string) => {
    // Your backend RS256 signing
    const res = await fetch('/api/sign', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ data }),
    });
    return (await res.json()).signature;
  },
  ocr_languages: ['eng', 'msa'], // Optional, these are the defaults
};

const sdk = new WaspadaSDK(config);

Lifecycle

1. Initialize

typescript
const status = await sdk.initAndCache();

console.log(status.ready);              // true
console.log(status.storage_backend);    // 'OPFS' or 'IndexedDB'
console.log(status.ocr_languages_cached); // ['eng', 'msa']
console.log(status.ner_model_cached);   // true (after async download)

Background Loading

initAndCache() downloads OCR language packs and the NER model in the background. Regex extraction (Tier 1) is available immediately. NER (Tier 2) becomes available once the model finishes downloading.

2. Process Evidence

typescript
const fileInput = document.querySelector<HTMLInputElement>('#file-input');
const file = fileInput.files[0];

const result = await sdk.processEvidence(file);

3. Read Results

typescript
if (result.success) {
  console.log('Extraction Tier:', result.extraction_tier);
  // 'REGEX_ONLY' | 'NER_ENCODER' | 'HYBRID'

  console.log('Confidence:', result.confidence);
  // 0.0 - 1.0

  console.log('Indicators:', result.indicators);
  // { mule_bank_bic, mule_account_number, scammer_alias, malicious_urls }
}

if (result.warnings.length > 0) {
  console.warn('Warnings:', result.warnings);
}

4. Submit Telemetry

typescript
await sdk.submitTelemetry(result);
// Sends PII-stripped payload to Waspada Gateway

5. Cleanup

typescript
await sdk.terminate();
// Releases OCR workers, NER pipeline, and storage handles

Configuration Reference

PropertyTypeDefaultDescription
source_platformstringYour registered partner ID
signPayload(data: string) => Promise<string>RS256 signing callback
ocr_languagesOcrLanguage[]['eng', 'msa']OCR language packs to pre-cache
gateway_urlstringhttps://api.waspada.aiGateway endpoint
storage_keystring'waspada_store'OPFS/IndexedDB storage key

Supported File Types

TypeExtensionStrategy
PDF (digital).pdfText layer extraction (~10ms/page)
PDF (scanned).pdfOCR fallback (~2-5s/page)
PNG.pngOCR with Otsu's binarization
JPEG.jpg, .jpegOCR with Otsu's binarization
WebP.webpOCR with Otsu's binarization
BMP.bmpOCR with Otsu's binarization

Waspada AI: Enterprise infrastructure powering public defense.