> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fingerprintiq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Browser Signal Type Reference

TypeScript reference for the 41 browser signal collectors exposed by the FingerprintIQ SDK.

## Signal Result Wrapper

Every browser collector returns a `SignalResult<T>`. When a collector cannot run because the API is unavailable, blocked, or restricted by the browser, the SDK returns `null` for that collector rather than throwing.

```typescript
interface SignalResult<T> {
  value: T;
  duration: number; // milliseconds
}
```

The `/v1/identify` request body contains these browser collector results. The compact `identify()` response does not echo them back; fetch the full event server-side with `GET /v1/events/:requestId` when you need raw signal data.

## Collector Map

The SDK currently collects **41 browser signals**:

**Rendering and graphics**

- `canvas`
    - `webgl`
    - `webgpu`
    - `audio`
    - `domRect`
    - `svg`

  **Platform and system**

- `fonts`
    - `webrtc`
    - `navigator`
    - `media`
    - `screen`
    - `speech`
    - `intl`
    - `timezone`
    - `storage`
    - `codec`
    - `platformFeatures`
    - `uaClientHints`
    - `sensorCapabilities`

  **Engine and runtime**

- `wasmTiming`
    - `math`
    - `cssStyle`
    - `cssFeatures`
    - `error`
    - `windowFeatures`
    - `htmlElement`
    - `capabilityVector`
    - `geometryVector`
    - `runtimeVector`

  **Security, Web3, and behavior**

- `integrity`
    - `wallets`
    - `headless`
    - `workerScope`
    - `resistance`
    - `status`
    - `behavioralRisk`
    - `incognito`
    - `devTools`
    - `virtualization`
    - `rooted`
    - `frameDepth`

## Selected Type Shapes

**CanvasSignal**

```typescript
    interface CanvasSignal {
      hash: string;
      isFarbled: boolean;
    }
    ```

  **WebGLSignal**

```typescript
    interface WebGLSignal {
      renderer: string;
      vendor: string;
      extensions: string[];
      params: Record<string, number>;
      gpuTimingMs: number | null;
      isSoftwareRenderer: boolean;
    }
    ```

  **WalletSignal**

```typescript
    interface WalletSignal {
      detected: string[];
      count: number;
      evmProviders: string[];
      solanaProviders: string[];
      multipleWallets: boolean;
      versions: Record<string, string>;
    }
    ```

  **TimezoneSignal**

```typescript
    interface TimezoneSignal {
      reported: string;
      computed: string | null;
      offsetHistorical: number;
      isSpoofed: boolean;
      hash: string;
    }
    ```

  **CssFeatureSignal**

```typescript
    interface CssFeatureSignal {
      features: Record<string, boolean>;
      supportedCount: number;
      hash: string;
    }
    ```

  **FrameDepthSignal**

```typescript
    interface FrameDepthSignal {
      isFramed: boolean;
      depth: number;
      topAccessible: boolean;
      crossOriginBoundary: boolean;
      hash: string;
    }
    ```

  **BehavioralRiskSignal**

```typescript
    interface BehavioralRiskSignal {
      elapsedMs: number;
      totalEventCount: number;
      pointerMoveCount: number;
      pointerDistancePx: number;
      pointerDirectionChanges: number;
      pointerStraightness: number | null;
      clickCount: number;
      scrollEventCount: number;
      scrollBurstCount: number;
      keyEventCount: number;
      inputEventCount: number;
      focusTransitions: number;
      blurTransitions: number;
      visibilityTransitions: number;
      meanPointerIntervalMs: number | null;
      meanKeyIntervalMs: number | null;
      classification: "insufficient_data" | "low_interaction" | "human_like" | "synthetic_like";
      riskScore: number;
      reasons: string[];
      hash: string;
    }
    ```

  **HeadlessSignal**

```typescript
    interface HeadlessSignal {
      isHeadless: boolean;
      markers: string[];
    }
    ```

## Canonical Schema

The canonical source of truth for browser signal types is:

- [`sdk/src/types.ts`](https://github.com/fingerprintiq/js/blob/main/src/types.ts)

That file defines:

- every browser collector interface
- the `ClientSignals` map used in the identify request payload
- the compact `IdentifyResponse` returned by `identify()`

If you are building custom server-side scoring, use this page to orient yourself and `sdk/src/types.ts` for the exact current schema.