Files
smom-dbis-138/frontend-dapp/API_REFERENCE.md
defiQUG 50ab378da9 feat: Implement Universal Cross-Chain Asset Hub - All phases complete
PRODUCTION-GRADE IMPLEMENTATION - All 7 Phases Done

This is a complete, production-ready implementation of an infinitely
extensible cross-chain asset hub that will never box you in architecturally.

## Implementation Summary

### Phase 1: Foundation 
- UniversalAssetRegistry: 10+ asset types with governance
- Asset Type Handlers: ERC20, GRU, ISO4217W, Security, Commodity
- GovernanceController: Hybrid timelock (1-7 days)
- TokenlistGovernanceSync: Auto-sync tokenlist.json

### Phase 2: Bridge Infrastructure 
- UniversalCCIPBridge: Main bridge (258 lines)
- GRUCCIPBridge: GRU layer conversions
- ISO4217WCCIPBridge: eMoney/CBDC compliance
- SecurityCCIPBridge: Accredited investor checks
- CommodityCCIPBridge: Certificate validation
- BridgeOrchestrator: Asset-type routing

### Phase 3: Liquidity Integration 
- LiquidityManager: Multi-provider orchestration
- DODOPMMProvider: DODO PMM wrapper
- PoolManager: Auto-pool creation

### Phase 4: Extensibility 
- PluginRegistry: Pluggable components
- ProxyFactory: UUPS/Beacon proxy deployment
- ConfigurationRegistry: Zero hardcoded addresses
- BridgeModuleRegistry: Pre/post hooks

### Phase 5: Vault Integration 
- VaultBridgeAdapter: Vault-bridge interface
- BridgeVaultExtension: Operation tracking

### Phase 6: Testing & Security 
- Integration tests: Full flows
- Security tests: Access control, reentrancy
- Fuzzing tests: Edge cases
- Audit preparation: AUDIT_SCOPE.md

### Phase 7: Documentation & Deployment 
- System architecture documentation
- Developer guides (adding new assets)
- Deployment scripts (5 phases)
- Deployment checklist

## Extensibility (Never Box In)

7 mechanisms to prevent architectural lock-in:
1. Plugin Architecture - Add asset types without core changes
2. Upgradeable Contracts - UUPS proxies
3. Registry-Based Config - No hardcoded addresses
4. Modular Bridges - Asset-specific contracts
5. Composable Compliance - Stackable modules
6. Multi-Source Liquidity - Pluggable providers
7. Event-Driven - Loose coupling

## Statistics

- Contracts: 30+ created (~5,000+ LOC)
- Asset Types: 10+ supported (infinitely extensible)
- Tests: 5+ files (integration, security, fuzzing)
- Documentation: 8+ files (architecture, guides, security)
- Deployment Scripts: 5 files
- Extensibility Mechanisms: 7

## Result

A future-proof system supporting:
- ANY asset type (tokens, GRU, eMoney, CBDCs, securities, commodities, RWAs)
- ANY chain (EVM + future non-EVM via CCIP)
- WITH governance (hybrid risk-based approval)
- WITH liquidity (PMM integrated)
- WITH compliance (built-in modules)
- WITHOUT architectural limitations

Add carbon credits, real estate, tokenized bonds, insurance products,
or any future asset class via plugins. No redesign ever needed.

Status: Ready for Testing → Audit → Production
2026-01-24 07:01:37 -08:00

6.3 KiB

Admin Panel API Reference

AdminContext API

Hooks

useAdmin()

Main hook for accessing admin functionality.

Returns:

{
  // Admin actions
  adminActions: AdminAction[]
  createAdminAction: (action: Omit<AdminAction, 'id' | 'status' | 'createdAt'> | AdminAction) => AdminAction
  updateAdminAction: (id: string, updates: Partial<AdminAction>) => void
  deleteAdminAction: (id: string) => void
  
  // Audit logs
  auditLogs: AuditLog[]
  addAuditLog: (log: Omit<AuditLog, 'id' | 'timestamp'>) => void
  exportAuditLogs: () => string
  
  // Preferences
  preferences: AdminPreferences
  updatePreferences: (updates: Partial<AdminPreferences>) => void
  
  // Impersonation
  impersonationAddress: string | null
  setImpersonationAddress: (address: string | null) => void
  isImpersonating: boolean
  
  // Admin check
  isAdmin: boolean
}

Types

AdminAction

interface AdminAction {
  id: string
  type: string
  contractAddress: `0x${string}`
  functionName: string
  args: unknown[]
  status: TransactionRequestStatus
  hash?: `0x${string}`
  error?: string
  createdAt: number
  executedAt?: number
}

AuditLog

interface AuditLog {
  id: string
  user: string
  action: string
  resourceType: string
  resourceId: string
  details?: any
  status: 'success' | 'error'
  timestamp: number
}

AdminPreferences

interface AdminPreferences {
  defaultExecutionMethod: 'direct' | 'multisig' | 'timelock'
  showAdvancedOptions: boolean
  autoApprove: boolean
  theme: 'dark' | 'light'
}

Utility Functions

Security Utilities (src/utils/security.ts)

validateAddress(address: string)

Validates an Ethereum address and returns checksummed version.

Parameters:

  • address: string - Address to validate

Returns:

{
  valid: boolean
  checksummed?: string
  error?: string
}

generateSecureId()

Generates a cryptographically secure random ID.

Returns: string

rateLimit(action: string, limit: number, window: number)

Checks if an action exceeds rate limit.

Parameters:

  • action: string - Action identifier
  • limit: number - Maximum number of actions
  • window: number - Time window in milliseconds

Returns: boolean - true if within limit

Encryption Utilities (src/utils/encryption.ts)

encryptData(data: string, key: string)

Encrypts data using AES-256-GCM.

Parameters:

  • data: string - Data to encrypt
  • key: string - Encryption key

Returns: Promise<string> - Encrypted data (hex)

decryptData(encrypted: string, key: string)

Decrypts encrypted data.

Parameters:

  • encrypted: string - Encrypted data (hex)
  • key: string - Decryption key

Returns: Promise<string> - Decrypted data

SecureStorage

Class for secure localStorage with encryption.

Methods:

  • setItem(key: string, value: string): Promise<void>
  • getItem(key: string): Promise<string | null>
  • removeItem(key: string): void
  • clear(): void

ENS Utilities (src/utils/ens.ts)

resolveENS(address: string)

Resolves an address to ENS name.

Parameters:

  • address: string - Ethereum address

Returns: Promise<string | null> - ENS name or null

resolveAddress(name: string)

Resolves an ENS name to address.

Parameters:

  • name: string - ENS name (e.g., "vitalik.eth")

Returns: Promise<string | null> - Address or null

clearENSCache()

Clears the ENS cache.

Returns: void

Safe SDK Helpers (src/helpers/admin/safeHelpers.ts)

validateSafeConfig(config: SafeConfig)

Validates Safe wallet configuration.

Parameters:

  • config: SafeConfig - Safe configuration

Returns:

{
  valid: boolean
  error?: string
}

estimateSafeGas(transaction: SafeTransaction, owners: Address[], threshold: number)

Estimates gas for Safe transaction.

Returns:

{
  safeTxGas: bigint
  baseGas: bigint
  totalGas: bigint
}

Transaction Simulator (src/utils/transactionSimulator.ts)

simulateFunctionCall(publicClient, contractAddress, abi, functionName, args, from?)

Simulates a contract function call.

Returns: Promise<SimulationResult>

simulateBatch(publicClient, calls)

Simulates a batch of calls.

Returns: Promise<SimulationResult[]>

Real-time Monitoring (src/utils/realtimeMonitor.ts)

getRealtimeMonitor(wsUrl?)

Gets the real-time monitor instance.

Returns: RealtimeMonitor

Methods:

  • subscribeToBlocks(chainId, callback)
  • subscribeToTransaction(txHash, callback)
  • subscribeToContractEvents(contractAddress, eventName, callback)
  • subscribeToStateChanges(contractAddress, callback)
  • connect(wsUrl?)
  • disconnect()

Contract Events (src/utils/contractEvents.ts)

subscribeToContractEvents(publicClient, contractAddress, abi, eventName, callback, fromBlock?)

Subscribes to contract events.

Returns: Promise<() => void> - Unsubscribe function

waitForEvent(publicClient, contractAddress, abi, eventName, timeout?)

Waits for a specific event to occur.

Returns: Promise<ContractEvent>

getRecentEvents(publicClient, contractAddress, abi, eventName, blockRange?)

Gets recent events for a contract.

Returns: Promise<ContractEvent[]>

Gas Oracle (src/helpers/admin/gasOracle.ts)

fetchGasPrices()

Fetches current gas price recommendations from Etherscan.

Returns: Promise<GasPriceRecommendation | null>

getRecommendedGasPrice(recommendations, urgency)

Gets recommended gas price based on urgency.

Parameters:

  • recommendations: GasPriceRecommendation
  • urgency: 'slow' | 'standard' | 'fast'

Returns: Gas price recommendation object

Session Manager (src/utils/sessionManager.ts)

SessionManager

Class for managing admin sessions.

Methods:

  • startSession(user: string): void
  • extendSession(): void
  • endSession(): void
  • isSessionValid(): boolean
  • getSessionData(): SessionData | null
  • clearExpiredSessions(): void

Constants (src/utils/constants.ts)

DEFAULTS

Default configuration values.

STORAGE_KEYS

LocalStorage key constants.

RATE_LIMITS

Rate limiting configuration.


Note: This API reference covers the main utilities and hooks. For component-specific APIs, refer to individual component documentation.