## ARCHITECTURE ### Contexte - Service serveur « sdk-signer » pour gérer des messages typés via WebSocket. - Fournit des opérations de processus, hashing/merkle, gestion de device et validation d’état. ### Composants - src/index.ts: point d’entrée, exporte Service, Server, config, models et utilitaires. - src/simple-server.ts: serveur WebSocket simple (gestion des connections et du cycle de vie). - src/service.ts: logique métier des messages et routage par type. - src/relay-manager.ts: interaction avec le réseau de relais. - src/database.service.ts: persistance simple pour l’état serveur si nécessaire. - src/models.ts: énumérations et types de messages, priorités, statuts de livraison. - src/config.ts: configuration serveur (port, clés, délais, options). - src/utils.ts, src/wasm_compat.ts: utilitaires globaux et compatibilité WASM si utilisée. ### Flux et dépendances - Client se connecte en WebSocket → message LISTENING → échanges de messages typés corrélés. - Gestion du messageId pour corrélation, priorités de traitement et statut de livraison. ### Données et modèles - Typage via MessageType et statuts (DeliveryStatus), niveaux de priorité (MessagePriority). - Dérivation de contrats communs alignés avec le client (sdk_signer_client). ### Sécurité - Clé API côté serveur (vérification attendue au niveau des messages entrants). - Logs d’erreurs et gestion de timeouts. ### Observabilité - Journalisation des connexions, erreurs, et transitions d’état des processus.