# Global AML & Sanctions Engine (GASE)

## Overview

GASE is the global AML and sanctions engine providing sovereign sanctions list synchronization, automated risk tiering of transactions, PEP graph linking, and Suspicious Activity Score (SAS) calculation.

## Core Functions

- **Sovereign Sanctions List Synchronization**: Unified sanctions list from OFAC, EU, UN, etc.
- **Automated Risk Tiering**: Assign risk tiers (TIER_1 to TIER_4) to entities
- **PEP Graph Linking**: Graph structure for Politically Exposed Persons and relationships
- **Suspicious Activity Score (SAS)**: Multi-factor risk scoring for transactions

## Sanctions Matching Logic

```
if fuzzy_match(entity.name, sanctions_list) > 0.93:
    block_transaction()
```

## API Endpoints

### Synchronize Sanctions
```http
POST /api/v1/gase/sanctions/sync
```

### Search Sanctions
```http
POST /api/v1/gase/sanctions/search
```

### Add PEP
```http
POST /api/v1/gase/pep/add
```

### Find PEP Connections
```http
GET /api/v1/gase/pep/:entityId/connections?maxDepth=2
```

### Calculate SAS
```http
POST /api/v1/gase/sas/calculate
GET /api/v1/gase/sas/:transactionId
```

### Risk Tiering
```http
GET /api/v1/gase/risk-tier/:entityId
POST /api/v1/gase/risk-tier/:entityId/assign
```

## Usage Example

```typescript
import { gaseService } from '@/core/compliance/gase';

// Synchronize sanctions lists
await gaseService.syncSanctionsLists();

// Search sanctions
const matches = await gaseService.searchSanctions('entity-name', 0.93);

// Calculate SAS
const sas = await gaseService.calculateSAS(transactionId, entityId);

// Assign risk tier
const riskTier = await gaseService.assignRiskTier(entityId);
```

## Database Models

- `GlobalSanctionsList`: Unified sanctions list
- `PEPGraphNode`: PEP graph nodes
- `PEPGraphEdge`: PEP relationships
- `SuspiciousActivityScore`: SAS calculations
- `RiskTier`: Risk tier assignments

