@toon-protocol/connector 3.3.1 → 3.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/btp/btp-claim-types.d.ts +52 -0
- package/dist/btp/btp-claim-types.d.ts.map +1 -0
- package/dist/btp/btp-claim-types.js +209 -0
- package/dist/btp/btp-claim-types.js.map +1 -0
- package/dist/btp/btp-client-manager.d.ts +30 -0
- package/dist/btp/btp-client-manager.d.ts.map +1 -0
- package/dist/btp/btp-client-manager.js +153 -0
- package/dist/btp/btp-client-manager.js.map +1 -0
- package/dist/btp/btp-client.d.ts +58 -0
- package/dist/btp/btp-client.d.ts.map +1 -0
- package/dist/btp/btp-client.js +485 -0
- package/dist/btp/btp-client.js.map +1 -0
- package/dist/btp/btp-message-parser.d.ts +4 -0
- package/dist/btp/btp-message-parser.d.ts.map +1 -0
- package/dist/btp/btp-message-parser.js +211 -0
- package/dist/btp/btp-message-parser.js.map +1 -0
- package/dist/btp/btp-server.d.ts +33 -0
- package/dist/btp/btp-server.d.ts.map +1 -0
- package/dist/btp/btp-server.js +485 -0
- package/dist/btp/btp-server.js.map +1 -0
- package/dist/btp/btp-types.d.ts +43 -0
- package/dist/btp/btp-types.d.ts.map +1 -0
- package/dist/btp/btp-types.js +44 -0
- package/dist/btp/btp-types.js.map +1 -0
- package/dist/btp/inbound-claim-validator.d.ts +20 -0
- package/dist/btp/inbound-claim-validator.d.ts.map +1 -0
- package/dist/btp/inbound-claim-validator.js +150 -0
- package/dist/btp/inbound-claim-validator.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +175 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/onboarding-wizard.d.ts +7 -0
- package/dist/cli/onboarding-wizard.d.ts.map +1 -0
- package/dist/cli/onboarding-wizard.js +257 -0
- package/dist/cli/onboarding-wizard.js.map +1 -0
- package/dist/cli/types.d.ts +38 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +3 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/config/config-loader.d.ts +24 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +436 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/environment-validator.d.ts +4 -0
- package/dist/config/environment-validator.d.ts.map +1 -0
- package/dist/config/environment-validator.js +239 -0
- package/dist/config/environment-validator.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/key-manager-config.d.ts +7 -0
- package/dist/config/key-manager-config.d.ts.map +1 -0
- package/dist/config/key-manager-config.js +209 -0
- package/dist/config/key-manager-config.js.map +1 -0
- package/dist/config/topology-validator.d.ts +14 -0
- package/dist/config/topology-validator.d.ts.map +1 -0
- package/dist/config/topology-validator.js +142 -0
- package/dist/config/topology-validator.js.map +1 -0
- package/dist/config/types.d.ts +226 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +52 -0
- package/dist/config/types.js.map +1 -0
- package/dist/core/connector-node.d.ts +91 -0
- package/dist/core/connector-node.d.ts.map +1 -0
- package/dist/core/connector-node.js +1322 -0
- package/dist/core/connector-node.js.map +1 -0
- package/dist/core/local-delivery-client.d.ts +16 -0
- package/dist/core/local-delivery-client.d.ts.map +1 -0
- package/dist/core/local-delivery-client.js +160 -0
- package/dist/core/local-delivery-client.js.map +1 -0
- package/dist/core/packet-handler.d.ts +57 -0
- package/dist/core/packet-handler.d.ts.map +1 -0
- package/dist/core/packet-handler.js +655 -0
- package/dist/core/packet-handler.js.map +1 -0
- package/dist/core/payment-handler.d.ts +26 -0
- package/dist/core/payment-handler.d.ts.map +1 -0
- package/dist/core/payment-handler.js +106 -0
- package/dist/core/payment-handler.js.map +1 -0
- package/dist/discovery/index.d.ts +3 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +6 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/peer-discovery-service.d.ts +29 -0
- package/dist/discovery/peer-discovery-service.d.ts.map +1 -0
- package/dist/discovery/peer-discovery-service.js +230 -0
- package/dist/discovery/peer-discovery-service.js.map +1 -0
- package/dist/discovery/types.d.ts +38 -0
- package/dist/discovery/types.d.ts.map +1 -0
- package/dist/discovery/types.js +3 -0
- package/dist/discovery/types.js.map +1 -0
- package/dist/encoding/oer-parser.d.ts +39 -0
- package/dist/encoding/oer-parser.d.ts.map +1 -0
- package/dist/encoding/oer-parser.js +154 -0
- package/dist/encoding/oer-parser.js.map +1 -0
- package/dist/facilitator/index.d.ts +2 -0
- package/dist/facilitator/index.d.ts.map +1 -0
- package/dist/facilitator/index.js +7 -0
- package/dist/facilitator/index.js.map +1 -0
- package/dist/facilitator/spsp-client.d.ts +18 -0
- package/dist/facilitator/spsp-client.d.ts.map +1 -0
- package/dist/facilitator/spsp-client.js +95 -0
- package/dist/facilitator/spsp-client.js.map +1 -0
- package/dist/http/admin-api-inventory.d.ts +29 -0
- package/dist/http/admin-api-inventory.d.ts.map +1 -0
- package/dist/http/admin-api-inventory.js +480 -0
- package/dist/http/admin-api-inventory.js.map +1 -0
- package/dist/http/admin-api.d.ts +182 -0
- package/dist/http/admin-api.d.ts.map +1 -0
- package/dist/http/admin-api.js +1324 -0
- package/dist/http/admin-api.js.map +1 -0
- package/dist/http/admin-server.d.ts +49 -0
- package/dist/http/admin-server.d.ts.map +1 -0
- package/dist/http/admin-server.js +160 -0
- package/dist/http/admin-server.js.map +1 -0
- package/dist/http/health-server.d.ts +22 -0
- package/dist/http/health-server.d.ts.map +1 -0
- package/dist/http/health-server.js +192 -0
- package/dist/http/health-server.js.map +1 -0
- package/dist/http/ilp-send-handler.d.ts +15 -0
- package/dist/http/ilp-send-handler.d.ts.map +1 -0
- package/dist/http/ilp-send-handler.js +167 -0
- package/dist/http/ilp-send-handler.js.map +1 -0
- package/dist/http/types.d.ts +43 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/http/types.js +3 -0
- package/dist/http/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/lib.d.ts +22 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +39 -0
- package/dist/lib.js.map +1 -0
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +79 -0
- package/dist/main.js.map +1 -0
- package/dist/observability/metrics-registry.d.ts +39 -0
- package/dist/observability/metrics-registry.d.ts.map +1 -0
- package/dist/observability/metrics-registry.js +151 -0
- package/dist/observability/metrics-registry.js.map +1 -0
- package/dist/routing/packet-processor.d.ts +36 -0
- package/dist/routing/packet-processor.d.ts.map +1 -0
- package/dist/routing/packet-processor.js +112 -0
- package/dist/routing/packet-processor.js.map +1 -0
- package/dist/routing/packet-worker.d.ts +10 -0
- package/dist/routing/packet-worker.d.ts.map +1 -0
- package/dist/routing/packet-worker.js +34 -0
- package/dist/routing/packet-worker.js.map +1 -0
- package/dist/routing/routing-table.d.ts +15 -0
- package/dist/routing/routing-table.d.ts.map +1 -0
- package/dist/routing/routing-table.js +63 -0
- package/dist/routing/routing-table.js.map +1 -0
- package/dist/routing/worker-pool.d.ts +43 -0
- package/dist/routing/worker-pool.d.ts.map +1 -0
- package/dist/routing/worker-pool.js +228 -0
- package/dist/routing/worker-pool.js.map +1 -0
- package/dist/security/alert-notifier.d.ts +34 -0
- package/dist/security/alert-notifier.d.ts.map +1 -0
- package/dist/security/alert-notifier.js +136 -0
- package/dist/security/alert-notifier.js.map +1 -0
- package/dist/security/audit-logger.d.ts +34 -0
- package/dist/security/audit-logger.d.ts.map +1 -0
- package/dist/security/audit-logger.js +132 -0
- package/dist/security/audit-logger.js.map +1 -0
- package/dist/security/backends/environment-backend.d.ts +15 -0
- package/dist/security/backends/environment-backend.d.ts.map +1 -0
- package/dist/security/backends/environment-backend.js +56 -0
- package/dist/security/backends/environment-backend.js.map +1 -0
- package/dist/security/fraud-detector.d.ts +79 -0
- package/dist/security/fraud-detector.d.ts.map +1 -0
- package/dist/security/fraud-detector.js +147 -0
- package/dist/security/fraud-detector.js.map +1 -0
- package/dist/security/key-manager-signer.d.ts +15 -0
- package/dist/security/key-manager-signer.d.ts.map +1 -0
- package/dist/security/key-manager-signer.js +91 -0
- package/dist/security/key-manager-signer.js.map +1 -0
- package/dist/security/key-manager.d.ts +69 -0
- package/dist/security/key-manager.d.ts.map +1 -0
- package/dist/security/key-manager.js +79 -0
- package/dist/security/key-manager.js.map +1 -0
- package/dist/security/key-rotation-manager.d.ts +27 -0
- package/dist/security/key-rotation-manager.d.ts.map +1 -0
- package/dist/security/key-rotation-manager.js +142 -0
- package/dist/security/key-rotation-manager.js.map +1 -0
- package/dist/security/rate-limit-config.d.ts +7 -0
- package/dist/security/rate-limit-config.d.ts.map +1 -0
- package/dist/security/rate-limit-config.js +57 -0
- package/dist/security/rate-limit-config.js.map +1 -0
- package/dist/security/rate-limiter.d.ts +46 -0
- package/dist/security/rate-limiter.d.ts.map +1 -0
- package/dist/security/rate-limiter.js +170 -0
- package/dist/security/rate-limiter.js.map +1 -0
- package/dist/security/reputation-tracker.d.ts +30 -0
- package/dist/security/reputation-tracker.d.ts.map +1 -0
- package/dist/security/reputation-tracker.js +111 -0
- package/dist/security/reputation-tracker.js.map +1 -0
- package/dist/security/rules/balance-manipulation-rule.d.ts +23 -0
- package/dist/security/rules/balance-manipulation-rule.d.ts.map +1 -0
- package/dist/security/rules/balance-manipulation-rule.js +70 -0
- package/dist/security/rules/balance-manipulation-rule.js.map +1 -0
- package/dist/security/rules/double-spend-detection-rule.d.ts +23 -0
- package/dist/security/rules/double-spend-detection-rule.d.ts.map +1 -0
- package/dist/security/rules/double-spend-detection-rule.js +61 -0
- package/dist/security/rules/double-spend-detection-rule.js.map +1 -0
- package/dist/security/rules/rapid-channel-closure-rule.d.ts +16 -0
- package/dist/security/rules/rapid-channel-closure-rule.d.ts.map +1 -0
- package/dist/security/rules/rapid-channel-closure-rule.js +57 -0
- package/dist/security/rules/rapid-channel-closure-rule.js.map +1 -0
- package/dist/security/rules/sudden-traffic-spike-rule.d.ts +18 -0
- package/dist/security/rules/sudden-traffic-spike-rule.d.ts.map +1 -0
- package/dist/security/rules/sudden-traffic-spike-rule.js +92 -0
- package/dist/security/rules/sudden-traffic-spike-rule.js.map +1 -0
- package/dist/security/rules/unusual-settlement-amount-rule.d.ts +12 -0
- package/dist/security/rules/unusual-settlement-amount-rule.d.ts.map +1 -0
- package/dist/security/rules/unusual-settlement-amount-rule.js +33 -0
- package/dist/security/rules/unusual-settlement-amount-rule.js.map +1 -0
- package/dist/security/token-bucket.d.ts +16 -0
- package/dist/security/token-bucket.d.ts.map +1 -0
- package/dist/security/token-bucket.js +49 -0
- package/dist/security/token-bucket.js.map +1 -0
- package/dist/security/violation-counter.d.ts +11 -0
- package/dist/security/violation-counter.d.ts.map +1 -0
- package/dist/security/violation-counter.js +61 -0
- package/dist/security/violation-counter.js.map +1 -0
- package/dist/settlement/account-id-generator.d.ts +4 -0
- package/dist/settlement/account-id-generator.d.ts.map +1 -0
- package/dist/settlement/account-id-generator.js +38 -0
- package/dist/settlement/account-id-generator.js.map +1 -0
- package/dist/settlement/account-manager.d.ts +51 -0
- package/dist/settlement/account-manager.d.ts.map +1 -0
- package/dist/settlement/account-manager.js +459 -0
- package/dist/settlement/account-manager.js.map +1 -0
- package/dist/settlement/account-metadata.d.ts +11 -0
- package/dist/settlement/account-metadata.d.ts.map +1 -0
- package/dist/settlement/account-metadata.js +40 -0
- package/dist/settlement/account-metadata.js.map +1 -0
- package/dist/settlement/channel-manager.d.ts +67 -0
- package/dist/settlement/channel-manager.d.ts.map +1 -0
- package/dist/settlement/channel-manager.js +226 -0
- package/dist/settlement/channel-manager.js.map +1 -0
- package/dist/settlement/claim-receiver-db-schema.d.ts +4 -0
- package/dist/settlement/claim-receiver-db-schema.d.ts.map +1 -0
- package/dist/settlement/claim-receiver-db-schema.js +25 -0
- package/dist/settlement/claim-receiver-db-schema.js.map +1 -0
- package/dist/settlement/claim-receiver.d.ts +67 -0
- package/dist/settlement/claim-receiver.d.ts.map +1 -0
- package/dist/settlement/claim-receiver.js +707 -0
- package/dist/settlement/claim-receiver.js.map +1 -0
- package/dist/settlement/claim-redemption-service.d.ts +39 -0
- package/dist/settlement/claim-redemption-service.d.ts.map +1 -0
- package/dist/settlement/claim-redemption-service.js +189 -0
- package/dist/settlement/claim-redemption-service.js.map +1 -0
- package/dist/settlement/claim-sender-db-schema.d.ts +3 -0
- package/dist/settlement/claim-sender-db-schema.d.ts.map +1 -0
- package/dist/settlement/claim-sender-db-schema.js +18 -0
- package/dist/settlement/claim-sender-db-schema.js.map +1 -0
- package/dist/settlement/claim-sender.d.ts +24 -0
- package/dist/settlement/claim-sender.d.ts.map +1 -0
- package/dist/settlement/claim-sender.js +146 -0
- package/dist/settlement/claim-sender.js.map +1 -0
- package/dist/settlement/eip712-helper.d.ts +13 -0
- package/dist/settlement/eip712-helper.d.ts.map +1 -0
- package/dist/settlement/eip712-helper.js +24 -0
- package/dist/settlement/eip712-helper.js.map +1 -0
- package/dist/settlement/in-memory-ledger-client.d.ts +40 -0
- package/dist/settlement/in-memory-ledger-client.d.ts.map +1 -0
- package/dist/settlement/in-memory-ledger-client.js +177 -0
- package/dist/settlement/in-memory-ledger-client.js.map +1 -0
- package/dist/settlement/ledger-client.d.ts +22 -0
- package/dist/settlement/ledger-client.d.ts.map +1 -0
- package/dist/settlement/ledger-client.js +3 -0
- package/dist/settlement/ledger-client.js.map +1 -0
- package/dist/settlement/metrics-collector.d.ts +29 -0
- package/dist/settlement/metrics-collector.d.ts.map +1 -0
- package/dist/settlement/metrics-collector.js +81 -0
- package/dist/settlement/metrics-collector.js.map +1 -0
- package/dist/settlement/mina-payment-channel-sdk.d.ts +73 -0
- package/dist/settlement/mina-payment-channel-sdk.d.ts.map +1 -0
- package/dist/settlement/mina-payment-channel-sdk.js +538 -0
- package/dist/settlement/mina-payment-channel-sdk.js.map +1 -0
- package/dist/settlement/payment-channel-sdk.d.ts +59 -0
- package/dist/settlement/payment-channel-sdk.d.ts.map +1 -0
- package/dist/settlement/payment-channel-sdk.js +677 -0
- package/dist/settlement/payment-channel-sdk.js.map +1 -0
- package/dist/settlement/per-packet-claim-service.d.ts +39 -0
- package/dist/settlement/per-packet-claim-service.d.ts.map +1 -0
- package/dist/settlement/per-packet-claim-service.js +342 -0
- package/dist/settlement/per-packet-claim-service.js.map +1 -0
- package/dist/settlement/privacy/index.d.ts +3 -0
- package/dist/settlement/privacy/index.d.ts.map +1 -0
- package/dist/settlement/privacy/index.js +11 -0
- package/dist/settlement/privacy/index.js.map +1 -0
- package/dist/settlement/privacy/nip59-claim-wrapper.d.ts +60 -0
- package/dist/settlement/privacy/nip59-claim-wrapper.d.ts.map +1 -0
- package/dist/settlement/privacy/nip59-claim-wrapper.js +361 -0
- package/dist/settlement/privacy/nip59-claim-wrapper.js.map +1 -0
- package/dist/settlement/provider/chain-provider-registry.d.ts +20 -0
- package/dist/settlement/provider/chain-provider-registry.d.ts.map +1 -0
- package/dist/settlement/provider/chain-provider-registry.js +53 -0
- package/dist/settlement/provider/chain-provider-registry.js.map +1 -0
- package/dist/settlement/provider/evm-payment-channel-provider.d.ts +31 -0
- package/dist/settlement/provider/evm-payment-channel-provider.d.ts.map +1 -0
- package/dist/settlement/provider/evm-payment-channel-provider.js +207 -0
- package/dist/settlement/provider/evm-payment-channel-provider.js.map +1 -0
- package/dist/settlement/provider/index.d.ts +6 -0
- package/dist/settlement/provider/index.d.ts.map +1 -0
- package/dist/settlement/provider/index.js +16 -0
- package/dist/settlement/provider/index.js.map +1 -0
- package/dist/settlement/provider/mina-payment-channel-provider.d.ts +43 -0
- package/dist/settlement/provider/mina-payment-channel-provider.d.ts.map +1 -0
- package/dist/settlement/provider/mina-payment-channel-provider.js +330 -0
- package/dist/settlement/provider/mina-payment-channel-provider.js.map +1 -0
- package/dist/settlement/provider/payment-channel-provider.d.ts +88 -0
- package/dist/settlement/provider/payment-channel-provider.d.ts.map +1 -0
- package/dist/settlement/provider/payment-channel-provider.js +3 -0
- package/dist/settlement/provider/payment-channel-provider.js.map +1 -0
- package/dist/settlement/provider/solana-payment-channel-provider.d.ts +38 -0
- package/dist/settlement/provider/solana-payment-channel-provider.d.ts.map +1 -0
- package/dist/settlement/provider/solana-payment-channel-provider.js +262 -0
- package/dist/settlement/provider/solana-payment-channel-provider.js.map +1 -0
- package/dist/settlement/sent-claims-queries.d.ts +23 -0
- package/dist/settlement/sent-claims-queries.d.ts.map +1 -0
- package/dist/settlement/sent-claims-queries.js +134 -0
- package/dist/settlement/sent-claims-queries.js.map +1 -0
- package/dist/settlement/settlement-api.d.ts +37 -0
- package/dist/settlement/settlement-api.d.ts.map +1 -0
- package/dist/settlement/settlement-api.js +172 -0
- package/dist/settlement/settlement-api.js.map +1 -0
- package/dist/settlement/settlement-coordinator.d.ts +47 -0
- package/dist/settlement/settlement-coordinator.d.ts.map +1 -0
- package/dist/settlement/settlement-coordinator.js +166 -0
- package/dist/settlement/settlement-coordinator.js.map +1 -0
- package/dist/settlement/settlement-executor.d.ts +51 -0
- package/dist/settlement/settlement-executor.d.ts.map +1 -0
- package/dist/settlement/settlement-executor.js +265 -0
- package/dist/settlement/settlement-executor.js.map +1 -0
- package/dist/settlement/settlement-monitor.d.ts +30 -0
- package/dist/settlement/settlement-monitor.d.ts.map +1 -0
- package/dist/settlement/settlement-monitor.js +141 -0
- package/dist/settlement/settlement-monitor.js.map +1 -0
- package/dist/settlement/solana-payment-channel-sdk.d.ts +79 -0
- package/dist/settlement/solana-payment-channel-sdk.d.ts.map +1 -0
- package/dist/settlement/solana-payment-channel-sdk.js +636 -0
- package/dist/settlement/solana-payment-channel-sdk.js.map +1 -0
- package/dist/settlement/tigerbeetle-batch-writer.d.ts +58 -0
- package/dist/settlement/tigerbeetle-batch-writer.d.ts.map +1 -0
- package/dist/settlement/tigerbeetle-batch-writer.js +162 -0
- package/dist/settlement/tigerbeetle-batch-writer.js.map +1 -0
- package/dist/settlement/tigerbeetle-client.d.ts +40 -0
- package/dist/settlement/tigerbeetle-client.d.ts.map +1 -0
- package/dist/settlement/tigerbeetle-client.js +279 -0
- package/dist/settlement/tigerbeetle-client.js.map +1 -0
- package/dist/settlement/tigerbeetle-errors.d.ts +23 -0
- package/dist/settlement/tigerbeetle-errors.d.ts.map +1 -0
- package/dist/settlement/tigerbeetle-errors.js +58 -0
- package/dist/settlement/tigerbeetle-errors.js.map +1 -0
- package/dist/settlement/types.d.ts +64 -0
- package/dist/settlement/types.d.ts.map +1 -0
- package/dist/settlement/types.js +42 -0
- package/dist/settlement/types.js.map +1 -0
- package/dist/settlement/unified-settlement-executor.d.ts +34 -0
- package/dist/settlement/unified-settlement-executor.d.ts.map +1 -0
- package/dist/settlement/unified-settlement-executor.js +145 -0
- package/dist/settlement/unified-settlement-executor.js.map +1 -0
- package/dist/test-utils/index.d.ts +3 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/test-utils/index.js +15 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/test-utils/isolated-test-env.d.ts +31 -0
- package/dist/test-utils/isolated-test-env.d.ts.map +1 -0
- package/dist/test-utils/isolated-test-env.js +127 -0
- package/dist/test-utils/isolated-test-env.js.map +1 -0
- package/dist/test-utils/mock-factories-patch.d.ts +2 -0
- package/dist/test-utils/mock-factories-patch.d.ts.map +1 -0
- package/dist/test-utils/mock-factories-patch.js +3 -0
- package/dist/test-utils/mock-factories-patch.js.map +1 -0
- package/dist/test-utils/mock-factories.d.ts +22 -0
- package/dist/test-utils/mock-factories.d.ts.map +1 -0
- package/dist/test-utils/mock-factories.js +56 -0
- package/dist/test-utils/mock-factories.js.map +1 -0
- package/dist/transport/direct-transport-provider.d.ts +12 -0
- package/dist/transport/direct-transport-provider.d.ts.map +1 -0
- package/dist/transport/direct-transport-provider.js +27 -0
- package/dist/transport/direct-transport-provider.js.map +1 -0
- package/dist/transport/index.d.ts +7 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +16 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/managed-anon-client.d.ts +47 -0
- package/dist/transport/managed-anon-client.d.ts.map +1 -0
- package/dist/transport/managed-anon-client.js +265 -0
- package/dist/transport/managed-anon-client.js.map +1 -0
- package/dist/transport/probe-tcp-port.d.ts +3 -0
- package/dist/transport/probe-tcp-port.d.ts.map +1 -0
- package/dist/transport/probe-tcp-port.js +59 -0
- package/dist/transport/probe-tcp-port.js.map +1 -0
- package/dist/transport/socks-transport-provider.d.ts +29 -0
- package/dist/transport/socks-transport-provider.d.ts.map +1 -0
- package/dist/transport/socks-transport-provider.js +136 -0
- package/dist/transport/socks-transport-provider.js.map +1 -0
- package/dist/transport/socks-url.d.ts +6 -0
- package/dist/transport/socks-url.d.ts.map +1 -0
- package/dist/transport/socks-url.js +29 -0
- package/dist/transport/socks-url.js.map +1 -0
- package/dist/transport/transport-provider.d.ts +9 -0
- package/dist/transport/transport-provider.d.ts.map +1 -0
- package/dist/transport/transport-provider.js +3 -0
- package/dist/transport/transport-provider.js.map +1 -0
- package/dist/utils/connection-pool.d.ts +42 -0
- package/dist/utils/connection-pool.d.ts.map +1 -0
- package/dist/utils/connection-pool.js +209 -0
- package/dist/utils/connection-pool.js.map +1 -0
- package/dist/utils/evm-rpc-connection-pool.d.ts +8 -0
- package/dist/utils/evm-rpc-connection-pool.d.ts.map +1 -0
- package/dist/utils/evm-rpc-connection-pool.js +40 -0
- package/dist/utils/evm-rpc-connection-pool.js.map +1 -0
- package/dist/utils/logger.d.ts +6 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +58 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/optional-require.d.ts +2 -0
- package/dist/utils/optional-require.d.ts.map +1 -0
- package/dist/utils/optional-require.js +54 -0
- package/dist/utils/optional-require.js.map +1 -0
- package/dist/utils/redact.d.ts +3 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +21 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/wallet/audit-logger.d.ts +22 -0
- package/dist/wallet/audit-logger.d.ts.map +1 -0
- package/dist/wallet/audit-logger.js +120 -0
- package/dist/wallet/audit-logger.js.map +1 -0
- package/dist/wallet/fraud-detector-interface.d.ts +14 -0
- package/dist/wallet/fraud-detector-interface.d.ts.map +1 -0
- package/dist/wallet/fraud-detector-interface.js +3 -0
- package/dist/wallet/fraud-detector-interface.js.map +1 -0
- package/dist/wallet/key-manager.d.ts +6 -0
- package/dist/wallet/key-manager.d.ts.map +1 -0
- package/dist/wallet/key-manager.js +3 -0
- package/dist/wallet/key-manager.js.map +1 -0
- package/dist/wallet/rate-limiter.d.ts +26 -0
- package/dist/wallet/rate-limiter.d.ts.map +1 -0
- package/dist/wallet/rate-limiter.js +114 -0
- package/dist/wallet/rate-limiter.js.map +1 -0
- package/dist/wallet/suspicious-activity-detector.d.ts +25 -0
- package/dist/wallet/suspicious-activity-detector.d.ts.map +1 -0
- package/dist/wallet/suspicious-activity-detector.js +97 -0
- package/dist/wallet/suspicious-activity-detector.js.map +1 -0
- package/dist/wallet/treasury-wallet.d.ts +20 -0
- package/dist/wallet/treasury-wallet.d.ts.map +1 -0
- package/dist/wallet/treasury-wallet.js +151 -0
- package/dist/wallet/treasury-wallet.js.map +1 -0
- package/dist/wallet/wallet-authentication.d.ts +31 -0
- package/dist/wallet/wallet-authentication.d.ts.map +1 -0
- package/dist/wallet/wallet-authentication.js +102 -0
- package/dist/wallet/wallet-authentication.js.map +1 -0
- package/dist/wallet/wallet-db-schema.d.ts +11 -0
- package/dist/wallet/wallet-db-schema.d.ts.map +1 -0
- package/dist/wallet/wallet-db-schema.js +79 -0
- package/dist/wallet/wallet-db-schema.js.map +1 -0
- package/dist/wallet/wallet-security.d.ts +58 -0
- package/dist/wallet/wallet-security.d.ts.map +1 -0
- package/dist/wallet/wallet-security.js +148 -0
- package/dist/wallet/wallet-security.js.map +1 -0
- package/dist/wallet/wallet-seed-manager.d.ts +65 -0
- package/dist/wallet/wallet-seed-manager.d.ts.map +1 -0
- package/dist/wallet/wallet-seed-manager.js +418 -0
- package/dist/wallet/wallet-seed-manager.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Router } from 'express';
|
|
2
|
+
import type { Logger } from 'pino';
|
|
3
|
+
import type { AccountManager } from './account-manager';
|
|
4
|
+
import type { SettlementMonitor } from './settlement-monitor';
|
|
5
|
+
import { SettlementState } from '../config/types';
|
|
6
|
+
export interface SettlementAPIConfig {
|
|
7
|
+
accountManager: AccountManager;
|
|
8
|
+
settlementMonitor: SettlementMonitor;
|
|
9
|
+
logger: Logger;
|
|
10
|
+
authToken?: string;
|
|
11
|
+
defaultTokenId?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ExecuteSettlementRequest {
|
|
14
|
+
peerId: string;
|
|
15
|
+
tokenId?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ExecuteSettlementResponse {
|
|
18
|
+
success: boolean;
|
|
19
|
+
peerId: string;
|
|
20
|
+
tokenId: string;
|
|
21
|
+
previousBalance: string;
|
|
22
|
+
newBalance: string;
|
|
23
|
+
settledAmount: string;
|
|
24
|
+
timestamp: string;
|
|
25
|
+
}
|
|
26
|
+
export interface SettlementStatusResponse {
|
|
27
|
+
peerId: string;
|
|
28
|
+
tokenId: string;
|
|
29
|
+
currentBalance: string;
|
|
30
|
+
settlementState: SettlementState;
|
|
31
|
+
timestamp: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ErrorResponse {
|
|
34
|
+
error: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function createSettlementRouter(config: SettlementAPIConfig): Promise<Router>;
|
|
37
|
+
//# sourceMappingURL=settlement-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settlement-api.d.ts","sourceRoot":"","sources":["../../src/settlement/settlement-api.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAmC,MAAM,SAAS,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAA0B,MAAM,iBAAiB,CAAC;AAY1E,MAAM,WAAW,mBAAmB;IAKlC,cAAc,EAAE,cAAc,CAAC;IAO/B,iBAAiB,EAAE,iBAAiB,CAAC;IAMrC,MAAM,EAAE,MAAM,CAAC;IAOf,SAAS,CAAC,EAAE,MAAM,CAAC;IAMnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAUD,MAAM,WAAW,wBAAwB;IAMvC,MAAM,EAAE,MAAM,CAAC;IAOf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgBD,MAAM,WAAW,yBAAyB;IAKxC,OAAO,EAAE,OAAO,CAAC;IAKjB,MAAM,EAAE,MAAM,CAAC;IAKf,OAAO,EAAE,MAAM,CAAC;IAOhB,eAAe,EAAE,MAAM,CAAC;IAOxB,UAAU,EAAE,MAAM,CAAC;IAOnB,aAAa,EAAE,MAAM,CAAC;IAMtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD,MAAM,WAAW,wBAAwB;IAIvC,MAAM,EAAE,MAAM,CAAC;IAKf,OAAO,EAAE,MAAM,CAAC;IAMhB,cAAc,EAAE,MAAM,CAAC;IAQvB,eAAe,EAAE,eAAe,CAAC;IAMjC,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,MAAM,WAAW,aAAa;IAK5B,KAAK,EAAE,MAAM,CAAC;CACf;AA0ND,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyMzF"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSettlementRouter = createSettlementRouter;
|
|
4
|
+
const optional_require_1 = require("../utils/optional-require");
|
|
5
|
+
async function executeMockSettlement(config, peerId, tokenId) {
|
|
6
|
+
const logger = config.logger.child({
|
|
7
|
+
component: 'settlement-execution',
|
|
8
|
+
peerId,
|
|
9
|
+
tokenId,
|
|
10
|
+
});
|
|
11
|
+
logger.info('Executing mock settlement');
|
|
12
|
+
config.settlementMonitor.markSettlementInProgress(peerId, tokenId);
|
|
13
|
+
try {
|
|
14
|
+
const balanceBefore = await config.accountManager.getAccountBalance(peerId, tokenId);
|
|
15
|
+
const settledAmount = balanceBefore.creditBalance;
|
|
16
|
+
logger.info({ settledAmount: settledAmount.toString() }, 'Settlement amount calculated');
|
|
17
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
18
|
+
await config.accountManager.recordSettlement(peerId, tokenId, settledAmount);
|
|
19
|
+
const balanceAfter = await config.accountManager.getAccountBalance(peerId, tokenId);
|
|
20
|
+
if (balanceAfter.creditBalance !== 0n) {
|
|
21
|
+
logger.error({
|
|
22
|
+
balanceBefore: balanceBefore.creditBalance.toString(),
|
|
23
|
+
balanceAfter: balanceAfter.creditBalance.toString(),
|
|
24
|
+
}, 'Settlement did not reduce balance to zero');
|
|
25
|
+
throw new Error('Settlement verification failed: balance not reduced to zero');
|
|
26
|
+
}
|
|
27
|
+
config.settlementMonitor.markSettlementCompleted(peerId, tokenId);
|
|
28
|
+
logger.info({
|
|
29
|
+
settlement_type: 'MOCK',
|
|
30
|
+
settledAmount: settledAmount.toString(),
|
|
31
|
+
balanceBefore: balanceBefore.creditBalance.toString(),
|
|
32
|
+
balanceAfter: balanceAfter.creditBalance.toString(),
|
|
33
|
+
}, 'Mock settlement executed successfully');
|
|
34
|
+
logger.warn('MOCK: Settlement logged to TigerBeetle, but no real blockchain transaction sent (Epic 7)');
|
|
35
|
+
return {
|
|
36
|
+
success: true,
|
|
37
|
+
peerId,
|
|
38
|
+
tokenId,
|
|
39
|
+
previousBalance: balanceBefore.creditBalance.toString(),
|
|
40
|
+
newBalance: balanceAfter.creditBalance.toString(),
|
|
41
|
+
settledAmount: settledAmount.toString(),
|
|
42
|
+
timestamp: new Date().toISOString(),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
logger.error({
|
|
47
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
48
|
+
}, 'Mock settlement execution failed');
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function createAuthMiddleware(authToken) {
|
|
53
|
+
if (!authToken || authToken.trim() === '') {
|
|
54
|
+
return (_req, _res, next) => {
|
|
55
|
+
next();
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return (req, res, next) => {
|
|
59
|
+
const authHeader = req.headers.authorization;
|
|
60
|
+
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
61
|
+
return res.status(401).json({
|
|
62
|
+
error: 'Unauthorized: Bearer token required',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const token = authHeader.substring(7);
|
|
66
|
+
if (token !== authToken) {
|
|
67
|
+
return res.status(403).json({
|
|
68
|
+
error: 'Forbidden: Invalid token',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
next();
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
async function createSettlementRouter(config) {
|
|
75
|
+
const { default: express } = await (0, optional_require_1.requireOptional)('express', 'HTTP admin/health APIs');
|
|
76
|
+
const router = express.Router();
|
|
77
|
+
const logger = config.logger.child({ component: 'settlement-api' });
|
|
78
|
+
router.use(express.json());
|
|
79
|
+
router.use(createAuthMiddleware(config.authToken));
|
|
80
|
+
if (!config.authToken || config.authToken.trim() === '') {
|
|
81
|
+
logger.warn('Settlement API authentication DISABLED (no SETTLEMENT_AUTH_TOKEN configured)');
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
logger.info('Settlement API authentication ENABLED');
|
|
85
|
+
}
|
|
86
|
+
config.settlementMonitor.on('SETTLEMENT_REQUIRED', async (event) => {
|
|
87
|
+
try {
|
|
88
|
+
logger.info({
|
|
89
|
+
peerId: event.peerId,
|
|
90
|
+
tokenId: event.tokenId,
|
|
91
|
+
currentBalance: event.currentBalance.toString(),
|
|
92
|
+
threshold: event.threshold.toString(),
|
|
93
|
+
}, 'Automatic settlement triggered by threshold detection');
|
|
94
|
+
await executeMockSettlement(config, event.peerId, event.tokenId);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
logger.error({
|
|
98
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
99
|
+
peerId: event.peerId,
|
|
100
|
+
tokenId: event.tokenId,
|
|
101
|
+
}, 'Automatic settlement failed');
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
logger.info('SettlementMonitor attached to SettlementAPI, automatic settlement enabled');
|
|
105
|
+
router.post('/settlement/execute', async (req, res) => {
|
|
106
|
+
try {
|
|
107
|
+
const { peerId, tokenId = config.defaultTokenId ?? 'M2M' } = req.body;
|
|
108
|
+
if (!peerId || typeof peerId !== 'string') {
|
|
109
|
+
res.status(400).json({
|
|
110
|
+
error: 'Invalid peerId',
|
|
111
|
+
});
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (tokenId && typeof tokenId !== 'string') {
|
|
115
|
+
res.status(400).json({
|
|
116
|
+
error: 'Invalid tokenId',
|
|
117
|
+
});
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
logger.info({ peerId, tokenId }, 'Settlement execution requested');
|
|
121
|
+
const result = await executeMockSettlement(config, peerId, tokenId);
|
|
122
|
+
res.status(200).json(result);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
logger.error({
|
|
126
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
127
|
+
}, 'Settlement execution failed');
|
|
128
|
+
res.status(500).json({
|
|
129
|
+
error: error instanceof Error ? error.message : 'Settlement execution failed',
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
router.get('/settlement/status/:peerId', async (req, res) => {
|
|
134
|
+
try {
|
|
135
|
+
const { peerId } = req.params;
|
|
136
|
+
const tokenId = req.query.tokenId ?? config.defaultTokenId ?? 'M2M';
|
|
137
|
+
if (!peerId) {
|
|
138
|
+
res.status(400).json({
|
|
139
|
+
error: 'peerId required',
|
|
140
|
+
});
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
logger.debug({ peerId, tokenId }, 'Settlement status queried');
|
|
144
|
+
const balance = await config.accountManager.getAccountBalance(peerId, tokenId);
|
|
145
|
+
const state = config.settlementMonitor.getSettlementState(peerId, tokenId);
|
|
146
|
+
const response = {
|
|
147
|
+
peerId,
|
|
148
|
+
tokenId,
|
|
149
|
+
currentBalance: balance.creditBalance.toString(),
|
|
150
|
+
settlementState: state,
|
|
151
|
+
timestamp: new Date().toISOString(),
|
|
152
|
+
};
|
|
153
|
+
res.status(200).json(response);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
logger.error({
|
|
157
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
158
|
+
}, 'Settlement status query failed');
|
|
159
|
+
if (error instanceof Error && error.message.includes('not found')) {
|
|
160
|
+
res.status(404).json({
|
|
161
|
+
error: error.message,
|
|
162
|
+
});
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
res.status(500).json({
|
|
166
|
+
error: error instanceof Error ? error.message : 'Settlement status query failed',
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
return router;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=settlement-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settlement-api.js","sourceRoot":"","sources":["../../src/settlement/settlement-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Logger } from 'pino';
|
|
2
|
+
import type { PaymentChannelSDK } from './payment-channel-sdk';
|
|
3
|
+
import type { MetricsCollector } from './metrics-collector';
|
|
4
|
+
import type { PeerConfig } from './types';
|
|
5
|
+
export interface SettlementOption {
|
|
6
|
+
method: 'evm';
|
|
7
|
+
chain?: string;
|
|
8
|
+
estimatedCost: bigint;
|
|
9
|
+
estimatedLatency: number;
|
|
10
|
+
successRate: number;
|
|
11
|
+
available: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface SettlementRoutingDecision {
|
|
14
|
+
peerId: string;
|
|
15
|
+
tokenId: string;
|
|
16
|
+
amount: bigint;
|
|
17
|
+
selectedMethod: 'evm';
|
|
18
|
+
selectedChain?: string;
|
|
19
|
+
estimatedCost: bigint;
|
|
20
|
+
estimatedLatency: number;
|
|
21
|
+
allOptions: SettlementOption[];
|
|
22
|
+
timestamp: number;
|
|
23
|
+
}
|
|
24
|
+
export interface SettlementCoordinatorConfig {
|
|
25
|
+
peerConfigs: Map<string, PeerConfig>;
|
|
26
|
+
gasPriceCacheDuration?: number;
|
|
27
|
+
}
|
|
28
|
+
export declare class SettlementCoordinator {
|
|
29
|
+
private readonly evmSDK;
|
|
30
|
+
private readonly metricsCollector;
|
|
31
|
+
private readonly config;
|
|
32
|
+
private readonly logger;
|
|
33
|
+
private gasPriceCache?;
|
|
34
|
+
private readonly gasPriceCacheDuration;
|
|
35
|
+
constructor(evmSDK: PaymentChannelSDK, metricsCollector: MetricsCollector, config: SettlementCoordinatorConfig, logger: Logger);
|
|
36
|
+
selectSettlementMethod(peerId: string, tokenId: string, amount: bigint): Promise<SettlementOption>;
|
|
37
|
+
executeSettlementWithFallback(peerId: string, tokenId: string, amount: bigint): Promise<void>;
|
|
38
|
+
private calculateScore;
|
|
39
|
+
private evaluateOptions;
|
|
40
|
+
private circuitBreakerOpen;
|
|
41
|
+
private estimateEVMCost;
|
|
42
|
+
private selectFallbackMethod;
|
|
43
|
+
private executeSettlement;
|
|
44
|
+
private logRoutingDecision;
|
|
45
|
+
private getPeerConfig;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=settlement-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settlement-coordinator.d.ts","sourceRoot":"","sources":["../../src/settlement/settlement-coordinator.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK1C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAKD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,KAAK,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAQD,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,aAAa,CAAC,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;gBAG5B,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,2BAA2B,EACnC,MAAM,EAAE,MAAM;IAiB3B,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;IAmCtB,6BAA6B,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAqDhB,OAAO,CAAC,cAAc;YAyBR,eAAe;IAoD7B,OAAO,CAAC,kBAAkB;YAuBZ,eAAe;YAkCf,oBAAoB;YA6BpB,iBAAiB;IAmC/B,OAAO,CAAC,kBAAkB;YAsCZ,aAAa;CAO5B"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SettlementCoordinator = void 0;
|
|
4
|
+
class SettlementCoordinator {
|
|
5
|
+
evmSDK;
|
|
6
|
+
metricsCollector;
|
|
7
|
+
config;
|
|
8
|
+
logger;
|
|
9
|
+
gasPriceCache;
|
|
10
|
+
gasPriceCacheDuration;
|
|
11
|
+
constructor(evmSDK, metricsCollector, config, logger) {
|
|
12
|
+
this.evmSDK = evmSDK;
|
|
13
|
+
this.metricsCollector = metricsCollector;
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.logger = logger;
|
|
16
|
+
this.gasPriceCacheDuration = config.gasPriceCacheDuration ?? 30000;
|
|
17
|
+
}
|
|
18
|
+
async selectSettlementMethod(peerId, tokenId, amount) {
|
|
19
|
+
this.logger.info({ peerId, tokenId, amount: amount.toString() }, 'Selecting settlement method');
|
|
20
|
+
const allOptions = await this.evaluateOptions(peerId, tokenId, amount);
|
|
21
|
+
const availableOptions = allOptions.filter((opt) => opt.available);
|
|
22
|
+
if (availableOptions.length === 0) {
|
|
23
|
+
this.logger.error({ peerId, tokenId, allOptions }, 'No available settlement methods');
|
|
24
|
+
throw new Error('No available settlement methods');
|
|
25
|
+
}
|
|
26
|
+
const optimal = availableOptions.reduce((best, current) => this.calculateScore(current) > this.calculateScore(best) ? current : best);
|
|
27
|
+
this.logRoutingDecision(peerId, tokenId, amount, optimal, allOptions);
|
|
28
|
+
return optimal;
|
|
29
|
+
}
|
|
30
|
+
async executeSettlementWithFallback(peerId, tokenId, amount) {
|
|
31
|
+
this.logger.info({ peerId, tokenId, amount: amount.toString() }, 'Executing settlement');
|
|
32
|
+
const primary = await this.selectSettlementMethod(peerId, tokenId, amount);
|
|
33
|
+
try {
|
|
34
|
+
await this.executeSettlement(primary, peerId, tokenId, amount);
|
|
35
|
+
this.metricsCollector.recordSuccess(primary.method);
|
|
36
|
+
this.logger.info({ peerId, method: primary.method }, 'Settlement succeeded');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
this.metricsCollector.recordFailure(primary.method);
|
|
41
|
+
this.logger.warn({ peerId, primaryMethod: primary.method, error: error.message }, 'Primary settlement failed, trying fallback');
|
|
42
|
+
const fallback = await this.selectFallbackMethod(peerId, tokenId, amount, primary);
|
|
43
|
+
if (!fallback) {
|
|
44
|
+
this.logger.error({ peerId, tokenId }, 'All settlement methods failed');
|
|
45
|
+
throw new Error('All settlement methods failed');
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
await this.executeSettlement(fallback, peerId, tokenId, amount);
|
|
49
|
+
this.metricsCollector.recordSuccess(fallback.method);
|
|
50
|
+
this.logger.info({ peerId, fallbackMethod: fallback.method }, 'Fallback settlement succeeded');
|
|
51
|
+
}
|
|
52
|
+
catch (fallbackError) {
|
|
53
|
+
this.metricsCollector.recordFailure(fallback.method);
|
|
54
|
+
this.logger.error({ peerId, tokenId }, 'All settlement methods failed');
|
|
55
|
+
throw new Error('All settlement methods failed');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
calculateScore(option) {
|
|
60
|
+
const costScore = 1 / (Number(option.estimatedCost) + 1);
|
|
61
|
+
const successScore = option.successRate;
|
|
62
|
+
const latencyScore = 1 / (option.estimatedLatency + 1);
|
|
63
|
+
return costScore * 0.5 + successScore * 0.3 + latencyScore * 0.2;
|
|
64
|
+
}
|
|
65
|
+
async evaluateOptions(peerId, tokenId, amount) {
|
|
66
|
+
const options = [];
|
|
67
|
+
const peerConfig = await this.getPeerConfig(peerId);
|
|
68
|
+
const canUseEVM = peerConfig.settlementPreference === 'evm' || peerConfig.settlementPreference === 'both';
|
|
69
|
+
if (canUseEVM && peerConfig.evmAddress) {
|
|
70
|
+
try {
|
|
71
|
+
const evmCost = await this.estimateEVMCost(tokenId, amount);
|
|
72
|
+
const evmSuccessRate = this.metricsCollector.getSuccessRate('evm');
|
|
73
|
+
const circuitBreakerOpen = this.circuitBreakerOpen('evm');
|
|
74
|
+
options.push({
|
|
75
|
+
method: 'evm',
|
|
76
|
+
chain: 'base-l2',
|
|
77
|
+
estimatedCost: evmCost,
|
|
78
|
+
estimatedLatency: 3,
|
|
79
|
+
successRate: evmSuccessRate,
|
|
80
|
+
available: !circuitBreakerOpen,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
this.logger.warn({ error: error.message }, 'EVM cost estimation failed');
|
|
85
|
+
options.push({
|
|
86
|
+
method: 'evm',
|
|
87
|
+
chain: 'base-l2',
|
|
88
|
+
estimatedCost: 0n,
|
|
89
|
+
estimatedLatency: 3,
|
|
90
|
+
successRate: 0,
|
|
91
|
+
available: false,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return options;
|
|
96
|
+
}
|
|
97
|
+
circuitBreakerOpen(method) {
|
|
98
|
+
const state = this.metricsCollector.getCircuitBreakerState(method);
|
|
99
|
+
if (state.isOpen) {
|
|
100
|
+
this.logger.warn({ method, failureRate: state.failureRate }, 'Circuit breaker opened for settlement method');
|
|
101
|
+
}
|
|
102
|
+
return state.isOpen;
|
|
103
|
+
}
|
|
104
|
+
async estimateEVMCost(_tokenId, _amount) {
|
|
105
|
+
const now = Date.now();
|
|
106
|
+
if (this.gasPriceCache && now - this.gasPriceCache.timestamp < this.gasPriceCacheDuration) {
|
|
107
|
+
const gasUnits = 50000n;
|
|
108
|
+
return this.gasPriceCache.price * gasUnits;
|
|
109
|
+
}
|
|
110
|
+
const provider = this.evmSDK.provider;
|
|
111
|
+
const feeData = await provider.getFeeData();
|
|
112
|
+
const gasPrice = feeData.gasPrice ?? 1000000n;
|
|
113
|
+
this.gasPriceCache = { price: gasPrice, timestamp: now };
|
|
114
|
+
const gasUnits = 50000n;
|
|
115
|
+
return gasPrice * gasUnits;
|
|
116
|
+
}
|
|
117
|
+
async selectFallbackMethod(peerId, tokenId, amount, primary) {
|
|
118
|
+
const allOptions = await this.evaluateOptions(peerId, tokenId, amount);
|
|
119
|
+
const alternatives = allOptions.filter((opt) => opt.method !== primary.method && opt.available);
|
|
120
|
+
if (alternatives.length === 0) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
return alternatives.reduce((best, current) => this.calculateScore(current) > this.calculateScore(best) ? current : best);
|
|
124
|
+
}
|
|
125
|
+
async executeSettlement(option, peerId, tokenId, amount) {
|
|
126
|
+
this.logger.info({ method: option.method, peerId, tokenId, amount: amount.toString() }, 'Settlement executed');
|
|
127
|
+
const peerConfig = await this.getPeerConfig(peerId);
|
|
128
|
+
if (option.method === 'evm') {
|
|
129
|
+
if (!peerConfig.evmAddress) {
|
|
130
|
+
throw new Error(`Peer ${peerId} missing evmAddress for EVM settlement`);
|
|
131
|
+
}
|
|
132
|
+
const settlementTimeout = 86400;
|
|
133
|
+
await this.evmSDK.openChannel(peerConfig.evmAddress, tokenId, settlementTimeout, amount);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
logRoutingDecision(peerId, tokenId, amount, selected, allOptions) {
|
|
137
|
+
const decision = {
|
|
138
|
+
peerId,
|
|
139
|
+
tokenId,
|
|
140
|
+
amount,
|
|
141
|
+
selectedMethod: selected.method,
|
|
142
|
+
selectedChain: selected.chain,
|
|
143
|
+
estimatedCost: selected.estimatedCost,
|
|
144
|
+
estimatedLatency: selected.estimatedLatency,
|
|
145
|
+
allOptions: allOptions.map((opt) => ({
|
|
146
|
+
method: opt.method,
|
|
147
|
+
chain: opt.chain,
|
|
148
|
+
available: opt.available,
|
|
149
|
+
estimatedCost: opt.estimatedCost,
|
|
150
|
+
successRate: opt.successRate,
|
|
151
|
+
estimatedLatency: opt.estimatedLatency,
|
|
152
|
+
})),
|
|
153
|
+
timestamp: Date.now(),
|
|
154
|
+
};
|
|
155
|
+
this.logger.info(decision, 'Settlement routing decision');
|
|
156
|
+
}
|
|
157
|
+
async getPeerConfig(peerId) {
|
|
158
|
+
const config = this.config.peerConfigs.get(peerId);
|
|
159
|
+
if (!config) {
|
|
160
|
+
throw new Error(`Peer not found: ${peerId}`);
|
|
161
|
+
}
|
|
162
|
+
return config;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.SettlementCoordinator = SettlementCoordinator;
|
|
166
|
+
//# sourceMappingURL=settlement-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settlement-coordinator.js","sourceRoot":"","sources":["../../src/settlement/settlement-coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
|
+
import { Logger } from 'pino';
|
|
3
|
+
import { SettlementState } from '../config/types';
|
|
4
|
+
import { AccountManager } from './account-manager';
|
|
5
|
+
import { SettlementMonitor } from './settlement-monitor';
|
|
6
|
+
import type { PerPacketClaimService } from './per-packet-claim-service';
|
|
7
|
+
import type { ChainProviderRegistry } from './provider/chain-provider-registry';
|
|
8
|
+
import type { ChannelManager } from './channel-manager';
|
|
9
|
+
import type { ClaimReceiver } from './claim-receiver';
|
|
10
|
+
export interface SettlementExecutorConfig {
|
|
11
|
+
nodeId: string;
|
|
12
|
+
defaultSettlementTimeout: number;
|
|
13
|
+
initialDepositMultiplier: number;
|
|
14
|
+
minDepositThreshold: number;
|
|
15
|
+
maxRetries: number;
|
|
16
|
+
retryDelayMs: number;
|
|
17
|
+
tokenAddressMap: Map<string, string>;
|
|
18
|
+
peerIdToAddressMap: Map<string, string>;
|
|
19
|
+
peerIdToChainMap: Map<string, string>;
|
|
20
|
+
}
|
|
21
|
+
export declare class SettlementExecutor extends EventEmitter {
|
|
22
|
+
private readonly config;
|
|
23
|
+
private readonly accountManager;
|
|
24
|
+
private readonly chainProviderRegistry;
|
|
25
|
+
private readonly settlementMonitor;
|
|
26
|
+
private readonly logger;
|
|
27
|
+
private readonly boundHandleSettlement;
|
|
28
|
+
private perPacketClaimService;
|
|
29
|
+
private claimReceiver;
|
|
30
|
+
private channelManager;
|
|
31
|
+
private settlementChain;
|
|
32
|
+
private stopping;
|
|
33
|
+
constructor(config: SettlementExecutorConfig, accountManager: AccountManager, chainProviderRegistry: ChainProviderRegistry, settlementMonitor: SettlementMonitor, logger: Logger);
|
|
34
|
+
setPerPacketClaimService(service: PerPacketClaimService): void;
|
|
35
|
+
setClaimReceiver(receiver: ClaimReceiver): void;
|
|
36
|
+
setChannelManager(channelManager: ChannelManager): void;
|
|
37
|
+
start(): void;
|
|
38
|
+
stop(): Promise<void>;
|
|
39
|
+
private handleSettlement;
|
|
40
|
+
private _processSettlement;
|
|
41
|
+
private executeSettlement;
|
|
42
|
+
private findChannelForPeer;
|
|
43
|
+
private openChannelAndSettle;
|
|
44
|
+
private settleViaExistingChannel;
|
|
45
|
+
private retryWithBackoff;
|
|
46
|
+
private isRetryableError;
|
|
47
|
+
registerPeerChain(peerId: string, chainId: string): void;
|
|
48
|
+
registerPeerAddress(peerId: string, address: string): void;
|
|
49
|
+
getSettlementState(peerId: string, tokenId: string): SettlementState;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=settlement-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settlement-executor.d.ts","sourceRoot":"","sources":["../../src/settlement/settlement-executor.ts"],"names":[],"mappings":"AAwBA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,eAAe,EAA0B,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAKhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAgBtD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB,EAAE,MAAM,CAAC;IACjC,wBAAwB,EAAE,MAAM,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AA0BD,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;IAC9D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAA+B;IAMrD,OAAO,CAAC,eAAe,CAAoC;IAM3D,OAAO,CAAC,QAAQ,CAAS;gBAevB,MAAM,EAAE,wBAAwB,EAChC,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM;IA4BhB,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAW9D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAS/C,iBAAiB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAavD,KAAK,IAAI,IAAI;IAmBP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB3B,OAAO,CAAC,gBAAgB;YA+BV,kBAAkB;YA8DlB,iBAAiB;YA2DjB,kBAAkB;YA0ClB,oBAAoB;YA0FpB,wBAAwB;YAyFxB,gBAAgB;IAsD9B,OAAO,CAAC,gBAAgB;IAyCxB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAuBxD,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAoB1D,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe;CAGrE"}
|