Features How It Works Security Docs
EN CN TW JP

SDK

JavaScript SDK for wallet integration and on-chain compliance.

Installation

npm
npm install @fidesorigin/sdk
yarn
yarn add @fidesorigin/sdk

Quick Start

Initialize SDK

TypeScript
import { FidesOrigin } from '@fidesorigin/sdk';

const fides = new FidesOrigin({
  apiKey: 'YOUR_API_KEY',
  network: 'sepolia' // or 'mainnet', 'base'
});

Check Address Risk

TypeScript
const result = await fides.evaluateAddress('0x...');

console.log(result.riskTier); // 'LOW', 'MEDIUM', 'HIGH', 'CRITICAL'
console.log(result.isSanctioned); // true or false

Subscribe to Events

TypeScript
fides.on('RiskDetected', (event) => {
  console.log('Risk detected:', event.address, event.riskTier);
});

fides.on('SanctionAdded', (event) => {
  console.log('Sanction added:', event.address);
});

Core API

Method Returns Description
connect(provider) Promise<void> Connect to Web3 provider
evaluateAddress(addr) Promise<RiskProfile> Get risk profile for address
evaluateTx(tx) Promise<TxResult> Pre-screen transaction
subscribe(event) EventEmitter Subscribe to on-chain events
disconnect() void Clean up connections

Solidity Integration

Import FidesOrigin contracts directly into your Solidity project:

Solidity 0.8.20
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@fidesorigin/contracts/CompliantStableCoin.sol";

contract MyStableCoin is CompliantStableCoin {
    constructor()
        CompliantStableCoin("MyStableCoin", "MSC")
    {
        // Configure policy
        policy = IssuerPolicy({
            maxTxAmount: 1_000_000 * 10**6,
            dailyLimit: 10_000_000 * 10**6,
            allowMediumRisk: true,
            allowHighRisk: false,
            blockMixer: true,
            requireDestinationKYC: true,
            cooldownPeriod: 24 hours
        });
    }
}

Types

TypeScript
interface RiskProfile {
  address: string;
  riskScore: number;
  riskTier: 'UNKNOWN' | 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
  isSanctioned: boolean;
  tags: string[];
  entityName: string;
  lastUpdated: string;
}

interface TxResult {
  allowed: boolean;
  riskScore: number;
  riskTier: string;
  quarantineRequired: boolean;
  reason: string | null;
}