feat: [BBND-1329] sdk new methods#839
Conversation
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: rbermejo <ruben@io.builders>
- Enhanced commit-msg hook to verify/auto-add DCO sign-off - Added pre-push hook as final gate requiring both DCO + GPG - Created setup-git.sh script for developer onboarding - Updated CONTRIBUTING.md with setup instructions The enforcement layers: 1. pre-commit: lint-staged for code quality 2. commit-msg: DCO verification + auto-addition + commitlint 3. pre-push: blocks push without DCO + GPG signatures Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: rbermejo <ruben@io.builders>
Reorganize the monolithic registry generator into a well-structured module with clear separation of concerns: Core Components: - extractor.ts: Contract metadata extraction from artifacts - scanner.ts: Filesystem scanning and contract discovery - generator.ts: Code generation logic (formerly registryGenerator.ts) - pipeline.ts: Main generation orchestration - types.ts: Centralized type definitions Utilities: - abiExtractor: ABI parsing and extraction - fileUtils: File I/O operations - logging: Structured logging - solidityParser: Comprehensive Solidity parser avoiding TypeChain Benefits: - Eliminated 6+ second TypeChain import overhead - Improved maintainability with single-responsibility modules - Better testability with isolated concerns - Flexible caching support via --use-cache flag - New npm script: npm run generate:registry:cached Infrastructure: - Updated barrel exports (index.ts files) - Cleaned up atsRegistry.data.ts (removed unused exports) - Updated CLI entry point with improved argument parsing - Enhanced logging capabilities - Updated integration tests Removed: - Old generateRegistry.ts monolithic entry point - Duplicated operations from infrastructure layer Reorganized files: - scripts/tools/generators/registryGenerator.ts → registry-generator/core/generator.ts - scripts/infrastructure/operations/generateRegistryPipeline.ts → registry-generator/pipeline.ts Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: rbermejo <ruben@io.builders>
Migrate from ts-node with tsconfig-paths/register to tsx for faster, simpler TypeScript script execution. Remove redundant ts-node configuration from tsconfig.json since tsx handles path aliases natively. Changes: - packages/ats/contracts/package.json: Replace all ts-node invocations with tsx in CLI entry points (deploy*, upgrade*, generate:registry) - packages/ats/contracts/tsconfig.json: Remove ts-node configuration block - package.json: Add convenience scripts for contracts utilities exposed at root level (test:scripts:unit:parallel, test:scripts:integration:parallel, upgrade:previewnet, generate:registry, local:hardhat, size, slither, doc) Benefits: - Faster script execution with tsx (no tsconfig-paths dependency) - Simpler configuration (one less configuration block) - Better IDE integration and debugging support - Scripts available directly from monorepo root for convenience Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: rbermejo <ruben@io.builders>
The pre-push hook was incorrectly rejecting commits that had valid GPG signatures but whose public keys were not in the local keyring. This caused pushes to fail when rebasing from branches with commits signed by other team members. Changed from `git verify-commit` (requires public key) to `git log --format=%G?` which checks if a signature EXISTS without requiring verification. The hook now accepts any signature status except 'N' (no signature). Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: adrian <adrian@io.builders>
Signed-off-by: adrian <adrian@io.builders>
Signed-off-by: adrian <adrian@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Branch Comparison Report: develop vs feat/BBND-1329-SDKNewMethodsExecutive SummaryThe feat/BBND-1329-SDKNewMethods branch successfully implements the required SDK methods for managing interest rates, KPIs, scheduled tasks, and enhanced bond functionality. The implementation follows the established patterns and architecture of the codebase. ✅ Successfully Implemented Components1. SDK Structure - COMPLIANTRequired Structure: 2. Fixed Rate Methods - COMPLIANTCommands:
Queries:
3. KPI Linked Rate Methods - COMPLIANTCommands:
Queries:
View Models:
4. KPIs Latest Methods - COMPLIANTCommands:
Queries:
5. Scheduled Coupon Listing Methods - COMPLIANTQueries:
6. Bond Enhancements - COMPLIANTNew Queries:
New Creation Commands:
✅ Implementation Pattern CompliancePort/In Interfaces
Request Objects
Command/Query Pattern
Dependency Injection
Transaction Adapters
Gas Constants
✅ Testing CoverageUnit Tests Present
Test Coverage Areas
✅ Configuration and IntegrationModule Exports
Error Handling
|
Análisis Detallado por Módulo📈 Fixed Rate Facet
Subtotal Fixed Rate: 2 requeridos → 2 implementados → 2 correctos → 0 sobran → 0 faltan 🎯 KPI Linked Rate Facet
Subtotal KPI Linked Rate: 4 requeridos → 4 implementados → 4 correctos → 0 sobran → 0 faltan 📊 KPIs Latest Facet
Subtotal KPIs Latest: 4 requeridos → 4 implementados → 4 correctos → 0 sobran → 0 faltan 📅 Scheduled Coupon Listing Facet
Subtotal Scheduled Coupon Listing: 2 requeridos → 2 implementados → 2 correctos → 0 sobran → 0 faltan 🏦 Bond Facet Enhancements
Subtotal Bond Enhancements: 5 requeridos → 5 implementados → 5 correctos → 0 sobran → 0 faltan 🏭 Factory Enhancements
Subtotal Factory: 2 requeridos → 2 implementados → 2 correctos → 0 sobran → 0 faltan 📋 Análisis de ViewModels Requeridos
📋 Análisis de Estructura de Directorios Requerida
🎯 Conclusión Final✅ Resultados Excelentes
✅ Calidad de Implementación
✅ Integración Completa
|
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders>
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders>
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders> Signed-off-by: Ruben <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders>
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders> Signed-off-by: Ruben <ruben@io.builders>
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders>
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders>
Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders>
Signed-off-by: rbermejo <ruben@io.builders> Signed-off-by: Alberto Molina <alberto@io.builders> Signed-off-by: jaime-iobermudez <jaime.bermudez@io.builders> Signed-off-by: Miguel_LZPF <miguel.carpena@io.builders> Signed-off-by: Miguel Carpena <miguel.carpena@io.builders> Signed-off-by: Ruben Martinez <ruben.martinez@io.builders> Signed-off-by: adrian <adrian@io.builders> Signed-off-by: Marcos Serradilla Diez <marcos@io.builders> Co-authored-by: Alberto Molina <alberto@io.builders> Co-authored-by: jaime-iobermudez <jaime.bermudez@io.builders> Co-authored-by: Miguel_LZPF <miguel.carpena@io.builders> Co-authored-by: Ruben Martinez <ruben.martinez@io.builders> Co-authored-by: adrian <adrian@io.builders> Co-authored-by: Marcos Serradilla Diez <marcos@io.builders>
Description
Implement new SDK methods for bond management following the CQRS pattern (Commands & Queries) with full Hexagonal Architecture compliance.
This PR adds comprehensive SDK support for Fixed Rate Bonds, KPI-Linked Rate Bonds, Interest Rate Management, KPI Data Tracking, Coupon Ordered Lists, and Scheduled Coupon Listings. Each feature follows the established architecture: Request DTO, Command/Query + Handler, Port/In Facet, Port/Out Adapters (RPC + Hedera), Domain Models, DI registration, and unit/integration tests.
New Commands (6):
CreateBondFixedRate- Create bonds with fixed interest ratesCreateBondKpiLinkedRate- Create bonds with KPI-linked dynamic ratesSetRate- Set fixed interest rate for a bond securitySetInterestRate- Configure full interest rate parameters (max/base/min rates, start period, penalties)SetImpactData- Configure KPI impact parameters (deviation caps/floors, baseline, adjustment precision)AddKpiData- Submit KPI data for KPI-linked bondsNew Queries (10):
GetRate/GetInterestRate/GetImpactData- Retrieve interest rate configurationsGetLatestKpiData/GetMinDate/IsCheckPointDate- KPI data and checkpoint validationGetCouponsOrderedList/GetCouponsOrderedListTotal/GetCouponFromOrderedListAt- Paginated coupon queriesScheduledCouponListingCount/GetScheduledCouponListing- Scheduled coupon task queriesNew Domain Models:
BondFixedRateDetails,BondKpiLinkedRateDetails,ImpactData,InterestRate,BondFixedRateDetailsData,BondKpiLinkedRateDetailsData,FactorySecurityToken,InvalidNegativeRateNew Port/In Facets:
FixedRate,KpiLinkedRate,Kpis,ScheduledCouponListingNew Request DTOs: 17 new request classes with validation
Adapter Extensions:
RPCTransactionAdapter,HederaTransactionAdapter,RPCQueryAdapter, andTransactionAdapterextended with all new transaction/query methodsFixes BBND-1329
Type of change
Testing
Unit Tests (19 suites):
CreateBondFixedRateCommandHandler,CreateBondKpiLinkedRateCommandHandler,SetRateCommandHandler,SetInterestRateCommandHandler,SetImpactDataCommandHandlerGetRateQueryHandler,GetInterestRateQueryHandler,GetImpactDataQueryHandler,GetCouponFromOrderedListAtQueryHandler,GetCouponsOrderedListQuery,GetMinDateQueryHandler,IsCheckPointDateQueryHandler,ScheduledCouponListingCountQueryHandler,GetScheduledCouponListingQueryHandlerBond,FixedRate,KpiLinkedRate,Kpis,ScheduledCouponListingIntegration Tests (3 suites):
Bond.test.ts- Bond creation and managementBondFixedRate.test.ts- End-to-end fixed-rate bond operationsBondKpiLinkedRate.test.ts- End-to-end KPI-linked bond operationsnpm run test:unit:diff # 19 suites, all passing Test Results Test Suites: 19 passed, 19 total Tests: all passed Snapshots: 0 total Node version: 20 22 24 Checklist Style Guidelines followed ✅ Documentation Updated 📚 Linters - No New Warnings ⚠️ Local Tests Pass ✅ Effective Tests Added ✔️ No reduction of Coverage ✅