The TypeScript SDK runs in two environments off the same package: Both load the same Emscripten WASM build of the C++ core for serialization and audio framing.

Install

npm install @telequick/sdk

Browser setup

The WASM module loads on demand; just include the JS bundle and the .wasm file via your bundler’s asset pipeline. With Vite / webpack / esbuild the package’s exports do this transparently. For raw <script> usage:
<script type="module">
  import { TeleQuickClient } from "https://cdn.jsdelivr.net/npm/@telequick/sdk/+esm";

  const client = new TeleQuickClient(
    "https://engine.telequick.dev:9090",
    BROWSER_JWT,
    /* isBrowserToken */ true,
  );
  await client.connect();
</script>
BROWSER_JWT is a short-lived (≤ 5 min) token your backend mints from the service account. Don’t ship the service account itself to the browser.

Node setup

import { TeleQuickClient } from "@telequick/sdk";

const client = new TeleQuickClient(
  "quic://engine.telequick.dev:9090",
  process.env.TELEQUICK_CREDENTIALS,  // path to service-account.json
);
await client.connect();

Self-signed dev certificates

If you’re connecting to a dev gateway with a self-signed cert, pass the SHA-256 fingerprint as the fourth constructor arg (base64-encoded):
const client = new TeleQuickClient(
  "https://localhost:9090",
  jwt, true,
  "p3O4OqK5xV3JZBQu8wDZS6cCQyXHeb2J0kyN5h0r5pE=",
);
Browsers only allow serverCertificateHashes for hosts in their dev allow-list (localhost, *.localhost). Use a real cert in production.

TypeScript types

The package ships full .d.ts types — no @types/@telequick/sdk required.
import {
  TeleQuickClient,
  CallEvent,
  DialOptions,
  BulkDialOptions,
} from "@telequick/sdk";