# sdk_client - Module WASM Module WebAssembly compilé pour l'intégration des Silent Payments dans l'interface utilisateur `ihm_client`. ## 📋 Vue d'ensemble Ce package contient le module WASM compilé de `sdk_client`, qui fournit les fonctionnalités de Silent Payments pour l'interface utilisateur. ### Fichiers inclus - `sdk_client_bg.wasm` - Module WASM principal (3.3 MB) - `sdk_client.d.ts` - Déclarations TypeScript (12.6 KB) - `sdk_client.js` - Wrapper JavaScript (182 B) - `sdk_client_bg.js` - Code JavaScript généré (38 KB) - `package.json` - Métadonnées du package - `README.md` - Ce fichier ## 🚀 Utilisation ### Import dans TypeScript ```typescript import init, { generate_sp_wallet, lock_freezed_utxos, // ... autres fonctions } from 'pkg/sdk_client'; // Initialiser le module WASM await init(); // Utiliser les fonctions const wallet = generate_sp_wallet(); ``` ### Import dans JavaScript ```javascript import init, { generate_sp_wallet } from 'pkg/sdk_client'; // Initialiser le module WASM await init(); // Utiliser les fonctions const wallet = generate_sp_wallet(); ``` ## 🔧 Configuration ### Variables d'environnement ```bash # Configuration pour le développement NODE_ENV=development VITE_WASM_PATH=./pkg/sdk_client_bg.wasm # Configuration pour la production NODE_ENV=production VITE_WASM_PATH=/assets/sdk_client_bg.wasm ``` ### Configuration Vite ```typescript // vite.config.ts import { defineConfig } from 'vite'; import wasm from 'vite-plugin-wasm'; export default defineConfig({ plugins: [ wasm(), // ... autres plugins ], optimizeDeps: { exclude: ['pkg/sdk_client'] } }); ``` ## 📚 API Reference ### Fonctions principales #### `generate_sp_wallet()` Génère un nouveau wallet Silent Payment. **Retourne :** `Wallet` - Instance du wallet généré #### `lock_freezed_utxos(wallet: Wallet, utxos: UTXO[])` Verrouille les UTXOs gelés dans le wallet. **Paramètres :** - `wallet` - Instance du wallet - `utxos` - Liste des UTXOs à verrouiller **Retourne :** `boolean` - Succès de l'opération ### Types TypeScript ```typescript interface Wallet { id: string; address: string; balance: number; // ... autres propriétés } interface UTXO { txid: string; vout: number; amount: number; // ... autres propriétés } ``` ## 🧪 Tests ### Tests unitaires ```bash # Tests des fonctions WASM npm run test:wasm # Tests avec couverture npm run test:wasm:coverage ``` ### Tests d'intégration ```bash # Tests d'intégration avec l'interface npm run test:integration # Tests end-to-end npm run test:e2e ``` ## 🔍 Debugging ### Logs de développement ```typescript // Activer les logs détaillés import { set_panic_hook } from 'pkg/sdk_client'; set_panic_hook(); ``` ### Inspection du module ```javascript // Inspecter les exports disponibles import * as sdk_client from 'pkg/sdk_client'; console.log(Object.keys(sdk_client)); ``` ## 📦 Build ### Compilation WASM ```bash # Compiler le module WASM cd temp-deps/sdk_client wasm-pack build --target web --out-dir ../../pkg # Ou utiliser le script automatisé ./scripts/setup-remote-deps.sh ``` ### Optimisation ```bash # Optimiser la taille du module wasm-opt -O4 -o sdk_client_bg.wasm sdk_client_bg.wasm # Compresser le module gzip -9 sdk_client_bg.wasm ``` ## 🚨 Dépannage ### Problèmes courants #### Module non trouvé ```bash # Vérifier que le module est compilé ls -la pkg/sdk_client_bg.wasm # Recompiler si nécessaire ./scripts/setup-remote-deps.sh ``` #### Erreurs de type TypeScript ```bash # Régénérer les types cd temp-deps/sdk_client wasm-pack build --target web --out-dir ../../pkg # Vérifier la cohérence des types npm run type-check ``` #### Problèmes de performance ```bash # Vérifier la taille du module ls -lh pkg/sdk_client_bg.wasm # Optimiser si nécessaire wasm-opt -O4 -o pkg/sdk_client_bg.wasm pkg/sdk_client_bg.wasm ``` ## 📈 Performance ### Métriques - **Taille du module** : 3.3 MB (non compressé) - **Temps de chargement** : ~500ms (dépendant du réseau) - **Temps d'initialisation** : ~100ms - **Mémoire utilisée** : ~10MB ### Optimisations 1. **Compression gzip** : Réduit la taille de ~70% 2. **Lazy loading** : Chargement à la demande 3. **Caching** : Mise en cache du module 4. **Preloading** : Préchargement anticipé ## 🔒 Sécurité ### Bonnes pratiques - Ne jamais exposer les clés privées - Valider toutes les entrées utilisateur - Utiliser HTTPS en production - Maintenir les dépendances à jour ### Audit de sécurité ```bash # Vérifier les vulnérabilités npm audit # Audit des dépendances Rust cargo audit ``` ## 📚 Documentation ### Liens utiles - [Documentation WASM](https://webassembly.org/docs/) - [Documentation wasm-pack](https://rustwasm.github.io/docs/wasm-pack/) - [Documentation sdk_client](../temp-deps/sdk_client/README.md) - [Documentation sdk_common](../temp-deps/sdk_common/README.md) ### Exemples - [Exemples d'utilisation](../docs/API.md) - [Tests d'intégration](../tests/) - [Guide de développement](../CONTRIBUTING.md) ## 🤝 Contribution Pour contribuer au module WASM : 1. Modifier le code source dans `temp-deps/sdk_client/` 2. Recompiler avec `./scripts/setup-remote-deps.sh` 3. Tester les changements 4. Mettre à jour la documentation ## 📄 Licence Ce module est sous licence MIT. Voir le fichier LICENSE pour plus de détails. --- **🚀 Module WASM sdk_client - Prêt pour l'intégration !**