@antseed/node 0.1.0
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/README.md +411 -0
- package/contracts/AntseedEscrow.sol +310 -0
- package/contracts/MockUSDC.sol +64 -0
- package/contracts/README.md +102 -0
- package/dist/config/encryption.d.ts +17 -0
- package/dist/config/encryption.d.ts.map +1 -0
- package/dist/config/encryption.js +49 -0
- package/dist/config/encryption.js.map +1 -0
- package/dist/config/plugin-config-manager.d.ts +31 -0
- package/dist/config/plugin-config-manager.d.ts.map +1 -0
- package/dist/config/plugin-config-manager.js +135 -0
- package/dist/config/plugin-config-manager.js.map +1 -0
- package/dist/config/plugin-loader.d.ts +25 -0
- package/dist/config/plugin-loader.d.ts.map +1 -0
- package/dist/config/plugin-loader.js +64 -0
- package/dist/config/plugin-loader.js.map +1 -0
- package/dist/discovery/announcer.d.ts +44 -0
- package/dist/discovery/announcer.d.ts.map +1 -0
- package/dist/discovery/announcer.js +129 -0
- package/dist/discovery/announcer.js.map +1 -0
- package/dist/discovery/bootstrap.d.ts +13 -0
- package/dist/discovery/bootstrap.d.ts.map +1 -0
- package/dist/discovery/bootstrap.js +39 -0
- package/dist/discovery/bootstrap.js.map +1 -0
- package/dist/discovery/default-metadata-resolver.d.ts +16 -0
- package/dist/discovery/default-metadata-resolver.d.ts.map +1 -0
- package/dist/discovery/default-metadata-resolver.js +16 -0
- package/dist/discovery/default-metadata-resolver.js.map +1 -0
- package/dist/discovery/dht-health.d.ts +38 -0
- package/dist/discovery/dht-health.d.ts.map +1 -0
- package/dist/discovery/dht-health.js +101 -0
- package/dist/discovery/dht-health.js.map +1 -0
- package/dist/discovery/dht-node.d.ts +34 -0
- package/dist/discovery/dht-node.d.ts.map +1 -0
- package/dist/discovery/dht-node.js +168 -0
- package/dist/discovery/dht-node.js.map +1 -0
- package/dist/discovery/http-metadata-resolver.d.ts +15 -0
- package/dist/discovery/http-metadata-resolver.d.ts.map +1 -0
- package/dist/discovery/http-metadata-resolver.js +33 -0
- package/dist/discovery/http-metadata-resolver.js.map +1 -0
- package/dist/discovery/index.d.ts +16 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +15 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/metadata-codec.d.ts +22 -0
- package/dist/discovery/metadata-codec.d.ts.map +1 -0
- package/dist/discovery/metadata-codec.js +390 -0
- package/dist/discovery/metadata-codec.js.map +1 -0
- package/dist/discovery/metadata-resolver.d.ts +9 -0
- package/dist/discovery/metadata-resolver.d.ts.map +1 -0
- package/dist/discovery/metadata-resolver.js +2 -0
- package/dist/discovery/metadata-resolver.js.map +1 -0
- package/dist/discovery/metadata-server.d.ts +16 -0
- package/dist/discovery/metadata-server.d.ts.map +1 -0
- package/dist/discovery/metadata-server.js +59 -0
- package/dist/discovery/metadata-server.js.map +1 -0
- package/dist/discovery/metadata-validator.d.ts +12 -0
- package/dist/discovery/metadata-validator.d.ts.map +1 -0
- package/dist/discovery/metadata-validator.js +153 -0
- package/dist/discovery/metadata-validator.js.map +1 -0
- package/dist/discovery/peer-lookup.d.ts +26 -0
- package/dist/discovery/peer-lookup.d.ts.map +1 -0
- package/dist/discovery/peer-lookup.js +86 -0
- package/dist/discovery/peer-lookup.js.map +1 -0
- package/dist/discovery/peer-metadata.d.ts +31 -0
- package/dist/discovery/peer-metadata.d.ts.map +1 -0
- package/dist/discovery/peer-metadata.js +2 -0
- package/dist/discovery/peer-metadata.js.map +1 -0
- package/dist/discovery/peer-selector.d.ts +33 -0
- package/dist/discovery/peer-selector.d.ts.map +1 -0
- package/dist/discovery/peer-selector.js +80 -0
- package/dist/discovery/peer-selector.js.map +1 -0
- package/dist/discovery/profile-manager.d.ts +50 -0
- package/dist/discovery/profile-manager.d.ts.map +1 -0
- package/dist/discovery/profile-manager.js +105 -0
- package/dist/discovery/profile-manager.js.map +1 -0
- package/dist/discovery/profile-search.d.ts +27 -0
- package/dist/discovery/profile-search.d.ts.map +1 -0
- package/dist/discovery/profile-search.js +75 -0
- package/dist/discovery/profile-search.js.map +1 -0
- package/dist/discovery/reputation-verifier.d.ts +25 -0
- package/dist/discovery/reputation-verifier.d.ts.map +1 -0
- package/dist/discovery/reputation-verifier.js +27 -0
- package/dist/discovery/reputation-verifier.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/buyer-router.d.ts +21 -0
- package/dist/interfaces/buyer-router.d.ts.map +1 -0
- package/dist/interfaces/buyer-router.js +2 -0
- package/dist/interfaces/buyer-router.js.map +1 -0
- package/dist/interfaces/plugin.d.ts +31 -0
- package/dist/interfaces/plugin.d.ts.map +1 -0
- package/dist/interfaces/plugin.js +2 -0
- package/dist/interfaces/plugin.js.map +1 -0
- package/dist/interfaces/seller-provider.d.ts +69 -0
- package/dist/interfaces/seller-provider.d.ts.map +1 -0
- package/dist/interfaces/seller-provider.js +2 -0
- package/dist/interfaces/seller-provider.js.map +1 -0
- package/dist/metering/index.d.ts +7 -0
- package/dist/metering/index.d.ts.map +1 -0
- package/dist/metering/index.js +7 -0
- package/dist/metering/index.js.map +1 -0
- package/dist/metering/receipt-generator.d.ts +49 -0
- package/dist/metering/receipt-generator.d.ts.map +1 -0
- package/dist/metering/receipt-generator.js +74 -0
- package/dist/metering/receipt-generator.js.map +1 -0
- package/dist/metering/receipt-verifier.d.ts +52 -0
- package/dist/metering/receipt-verifier.d.ts.map +1 -0
- package/dist/metering/receipt-verifier.js +63 -0
- package/dist/metering/receipt-verifier.js.map +1 -0
- package/dist/metering/session-tracker.d.ts +59 -0
- package/dist/metering/session-tracker.d.ts.map +1 -0
- package/dist/metering/session-tracker.js +119 -0
- package/dist/metering/session-tracker.js.map +1 -0
- package/dist/metering/storage.d.ts +72 -0
- package/dist/metering/storage.d.ts.map +1 -0
- package/dist/metering/storage.js +446 -0
- package/dist/metering/storage.js.map +1 -0
- package/dist/metering/token-counter.d.ts +50 -0
- package/dist/metering/token-counter.d.ts.map +1 -0
- package/dist/metering/token-counter.js +96 -0
- package/dist/metering/token-counter.js.map +1 -0
- package/dist/metering/usage-aggregator.d.ts +46 -0
- package/dist/metering/usage-aggregator.d.ts.map +1 -0
- package/dist/metering/usage-aggregator.js +170 -0
- package/dist/metering/usage-aggregator.js.map +1 -0
- package/dist/node.d.ts +179 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +1328 -0
- package/dist/node.js.map +1 -0
- package/dist/p2p/connection-auth.d.ts +35 -0
- package/dist/p2p/connection-auth.d.ts.map +1 -0
- package/dist/p2p/connection-auth.js +102 -0
- package/dist/p2p/connection-auth.js.map +1 -0
- package/dist/p2p/connection-manager.d.ts +101 -0
- package/dist/p2p/connection-manager.d.ts.map +1 -0
- package/dist/p2p/connection-manager.js +726 -0
- package/dist/p2p/connection-manager.js.map +1 -0
- package/dist/p2p/handshake.d.ts +47 -0
- package/dist/p2p/handshake.d.ts.map +1 -0
- package/dist/p2p/handshake.js +107 -0
- package/dist/p2p/handshake.js.map +1 -0
- package/dist/p2p/ice-config.d.ts +27 -0
- package/dist/p2p/ice-config.d.ts.map +1 -0
- package/dist/p2p/ice-config.js +43 -0
- package/dist/p2p/ice-config.js.map +1 -0
- package/dist/p2p/identity.d.ts +27 -0
- package/dist/p2p/identity.d.ts.map +1 -0
- package/dist/p2p/identity.js +76 -0
- package/dist/p2p/identity.js.map +1 -0
- package/dist/p2p/index.d.ts +12 -0
- package/dist/p2p/index.d.ts.map +1 -0
- package/dist/p2p/index.js +11 -0
- package/dist/p2p/index.js.map +1 -0
- package/dist/p2p/keepalive.d.ts +49 -0
- package/dist/p2p/keepalive.d.ts.map +1 -0
- package/dist/p2p/keepalive.js +93 -0
- package/dist/p2p/keepalive.js.map +1 -0
- package/dist/p2p/message-protocol.d.ts +50 -0
- package/dist/p2p/message-protocol.d.ts.map +1 -0
- package/dist/p2p/message-protocol.js +134 -0
- package/dist/p2p/message-protocol.js.map +1 -0
- package/dist/p2p/nat-traversal.d.ts +51 -0
- package/dist/p2p/nat-traversal.d.ts.map +1 -0
- package/dist/p2p/nat-traversal.js +135 -0
- package/dist/p2p/nat-traversal.js.map +1 -0
- package/dist/p2p/payment-codec.d.ts +20 -0
- package/dist/p2p/payment-codec.d.ts.map +1 -0
- package/dist/p2p/payment-codec.js +130 -0
- package/dist/p2p/payment-codec.js.map +1 -0
- package/dist/p2p/payment-mux.d.ts +49 -0
- package/dist/p2p/payment-mux.d.ts.map +1 -0
- package/dist/p2p/payment-mux.js +131 -0
- package/dist/p2p/payment-mux.js.map +1 -0
- package/dist/p2p/reconnect.d.ts +48 -0
- package/dist/p2p/reconnect.d.ts.map +1 -0
- package/dist/p2p/reconnect.js +89 -0
- package/dist/p2p/reconnect.js.map +1 -0
- package/dist/payments/balance-manager.d.ts +17 -0
- package/dist/payments/balance-manager.d.ts.map +1 -0
- package/dist/payments/balance-manager.js +54 -0
- package/dist/payments/balance-manager.js.map +1 -0
- package/dist/payments/buyer-payment-manager.d.ts +122 -0
- package/dist/payments/buyer-payment-manager.d.ts.map +1 -0
- package/dist/payments/buyer-payment-manager.js +280 -0
- package/dist/payments/buyer-payment-manager.js.map +1 -0
- package/dist/payments/disputes.d.ts +18 -0
- package/dist/payments/disputes.d.ts.map +1 -0
- package/dist/payments/disputes.js +47 -0
- package/dist/payments/disputes.js.map +1 -0
- package/dist/payments/evm/escrow-client.d.ts +61 -0
- package/dist/payments/evm/escrow-client.d.ts.map +1 -0
- package/dist/payments/evm/escrow-client.js +170 -0
- package/dist/payments/evm/escrow-client.js.map +1 -0
- package/dist/payments/evm/keypair.d.ts +21 -0
- package/dist/payments/evm/keypair.d.ts.map +1 -0
- package/dist/payments/evm/keypair.js +29 -0
- package/dist/payments/evm/keypair.js.map +1 -0
- package/dist/payments/evm/signatures.d.ts +11 -0
- package/dist/payments/evm/signatures.d.ts.map +1 -0
- package/dist/payments/evm/signatures.js +56 -0
- package/dist/payments/evm/signatures.js.map +1 -0
- package/dist/payments/evm/wallet.d.ts +5 -0
- package/dist/payments/evm/wallet.d.ts.map +1 -0
- package/dist/payments/evm/wallet.js +31 -0
- package/dist/payments/evm/wallet.js.map +1 -0
- package/dist/payments/index.d.ts +13 -0
- package/dist/payments/index.d.ts.map +1 -0
- package/dist/payments/index.js +14 -0
- package/dist/payments/index.js.map +1 -0
- package/dist/payments/settlement.d.ts +6 -0
- package/dist/payments/settlement.d.ts.map +1 -0
- package/dist/payments/settlement.js +25 -0
- package/dist/payments/settlement.js.map +1 -0
- package/dist/payments/types.d.ts +66 -0
- package/dist/payments/types.d.ts.map +1 -0
- package/dist/payments/types.js +2 -0
- package/dist/payments/types.js.map +1 -0
- package/dist/proxy/index.d.ts +4 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +4 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/provider-detection.d.ts +20 -0
- package/dist/proxy/provider-detection.d.ts.map +1 -0
- package/dist/proxy/provider-detection.js +61 -0
- package/dist/proxy/provider-detection.js.map +1 -0
- package/dist/proxy/proxy-mux.d.ts +35 -0
- package/dist/proxy/proxy-mux.d.ts.map +1 -0
- package/dist/proxy/proxy-mux.js +137 -0
- package/dist/proxy/proxy-mux.js.map +1 -0
- package/dist/proxy/request-codec.d.ts +33 -0
- package/dist/proxy/request-codec.d.ts.map +1 -0
- package/dist/proxy/request-codec.js +238 -0
- package/dist/proxy/request-codec.js.map +1 -0
- package/dist/reputation/index.d.ts +7 -0
- package/dist/reputation/index.d.ts.map +1 -0
- package/dist/reputation/index.js +6 -0
- package/dist/reputation/index.js.map +1 -0
- package/dist/reputation/rating-manager.d.ts +20 -0
- package/dist/reputation/rating-manager.d.ts.map +1 -0
- package/dist/reputation/rating-manager.js +91 -0
- package/dist/reputation/rating-manager.js.map +1 -0
- package/dist/reputation/report-manager.d.ts +21 -0
- package/dist/reputation/report-manager.d.ts.map +1 -0
- package/dist/reputation/report-manager.js +70 -0
- package/dist/reputation/report-manager.js.map +1 -0
- package/dist/reputation/trust-engine.d.ts +36 -0
- package/dist/reputation/trust-engine.d.ts.map +1 -0
- package/dist/reputation/trust-engine.js +95 -0
- package/dist/reputation/trust-engine.js.map +1 -0
- package/dist/reputation/trust-score.d.ts +43 -0
- package/dist/reputation/trust-score.d.ts.map +1 -0
- package/dist/reputation/trust-score.js +34 -0
- package/dist/reputation/trust-score.js.map +1 -0
- package/dist/reputation/uptime-tracker.d.ts +51 -0
- package/dist/reputation/uptime-tracker.d.ts.map +1 -0
- package/dist/reputation/uptime-tracker.js +123 -0
- package/dist/reputation/uptime-tracker.js.map +1 -0
- package/dist/routing/default-router.d.ts +21 -0
- package/dist/routing/default-router.d.ts.map +1 -0
- package/dist/routing/default-router.js +60 -0
- package/dist/routing/default-router.js.map +1 -0
- package/dist/types/buyer.d.ts +36 -0
- package/dist/types/buyer.d.ts.map +1 -0
- package/dist/types/buyer.js +2 -0
- package/dist/types/buyer.js.map +1 -0
- package/dist/types/capability.d.ts +25 -0
- package/dist/types/capability.d.ts.map +1 -0
- package/dist/types/capability.js +2 -0
- package/dist/types/capability.js.map +1 -0
- package/dist/types/connection.d.ts +27 -0
- package/dist/types/connection.d.ts.map +1 -0
- package/dist/types/connection.js +11 -0
- package/dist/types/connection.js.map +1 -0
- package/dist/types/http.d.ts +19 -0
- package/dist/types/http.d.ts.map +1 -0
- package/dist/types/http.js +2 -0
- package/dist/types/http.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/metering.d.ts +170 -0
- package/dist/types/metering.d.ts.map +1 -0
- package/dist/types/metering.js +2 -0
- package/dist/types/metering.js.map +1 -0
- package/dist/types/peer-profile.d.ts +24 -0
- package/dist/types/peer-profile.d.ts.map +1 -0
- package/dist/types/peer-profile.js +2 -0
- package/dist/types/peer-profile.js.map +1 -0
- package/dist/types/peer.d.ts +56 -0
- package/dist/types/peer.d.ts.map +1 -0
- package/dist/types/peer.js +11 -0
- package/dist/types/peer.js.map +1 -0
- package/dist/types/plugin-config.d.ts +31 -0
- package/dist/types/plugin-config.d.ts.map +1 -0
- package/dist/types/plugin-config.js +2 -0
- package/dist/types/plugin-config.js.map +1 -0
- package/dist/types/protocol.d.ts +141 -0
- package/dist/types/protocol.d.ts.map +1 -0
- package/dist/types/protocol.js +42 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/types/provider.d.ts +38 -0
- package/dist/types/provider.d.ts.map +1 -0
- package/dist/types/provider.js +11 -0
- package/dist/types/provider.js.map +1 -0
- package/dist/types/rating.d.ts +21 -0
- package/dist/types/rating.d.ts.map +1 -0
- package/dist/types/rating.js +2 -0
- package/dist/types/rating.js.map +1 -0
- package/dist/types/report.d.ts +20 -0
- package/dist/types/report.d.ts.map +1 -0
- package/dist/types/report.js +2 -0
- package/dist/types/report.js.map +1 -0
- package/dist/types/seller.d.ts +36 -0
- package/dist/types/seller.d.ts.map +1 -0
- package/dist/types/seller.js +2 -0
- package/dist/types/seller.js.map +1 -0
- package/dist/types/staking.d.ts +16 -0
- package/dist/types/staking.d.ts.map +1 -0
- package/dist/types/staking.js +6 -0
- package/dist/types/staking.js.map +1 -0
- package/dist/utils/debug.d.ts +4 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +25 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/hex.d.ts +3 -0
- package/dist/utils/hex.d.ts.map +1 -0
- package/dist/utils/hex.js +15 -0
- package/dist/utils/hex.js.map +1 -0
- package/package.json +62 -0
- package/scripts/ensure-node-native-modules.mjs +153 -0
- package/scripts/patch-ethers.js +44 -0
- package/src/config/encryption.test.ts +49 -0
- package/src/config/encryption.ts +53 -0
- package/src/config/plugin-config-manager.test.ts +92 -0
- package/src/config/plugin-config-manager.ts +153 -0
- package/src/config/plugin-loader.ts +90 -0
- package/src/discovery/announcer.ts +169 -0
- package/src/discovery/bootstrap.ts +57 -0
- package/src/discovery/default-metadata-resolver.ts +18 -0
- package/src/discovery/dht-health.ts +136 -0
- package/src/discovery/dht-node.ts +191 -0
- package/src/discovery/http-metadata-resolver.ts +47 -0
- package/src/discovery/index.ts +15 -0
- package/src/discovery/metadata-codec.ts +453 -0
- package/src/discovery/metadata-resolver.ts +7 -0
- package/src/discovery/metadata-server.ts +73 -0
- package/src/discovery/metadata-validator.ts +172 -0
- package/src/discovery/peer-lookup.ts +122 -0
- package/src/discovery/peer-metadata.ts +34 -0
- package/src/discovery/peer-selector.ts +134 -0
- package/src/discovery/profile-manager.ts +131 -0
- package/src/discovery/profile-search.ts +100 -0
- package/src/discovery/reputation-verifier.ts +54 -0
- package/src/index.ts +61 -0
- package/src/interfaces/buyer-router.ts +21 -0
- package/src/interfaces/plugin.ts +36 -0
- package/src/interfaces/seller-provider.ts +81 -0
- package/src/metering/index.ts +6 -0
- package/src/metering/receipt-generator.ts +105 -0
- package/src/metering/receipt-verifier.ts +102 -0
- package/src/metering/session-tracker.ts +145 -0
- package/src/metering/storage.ts +600 -0
- package/src/metering/token-counter.ts +127 -0
- package/src/metering/usage-aggregator.ts +236 -0
- package/src/node.ts +1698 -0
- package/src/p2p/connection-auth.ts +152 -0
- package/src/p2p/connection-manager.ts +916 -0
- package/src/p2p/handshake.ts +162 -0
- package/src/p2p/ice-config.ts +59 -0
- package/src/p2p/identity.ts +110 -0
- package/src/p2p/index.ts +11 -0
- package/src/p2p/keepalive.ts +118 -0
- package/src/p2p/message-protocol.ts +171 -0
- package/src/p2p/nat-traversal.ts +169 -0
- package/src/p2p/payment-codec.ts +165 -0
- package/src/p2p/payment-mux.ts +153 -0
- package/src/p2p/reconnect.ts +117 -0
- package/src/payments/balance-manager.ts +77 -0
- package/src/payments/buyer-payment-manager.ts +414 -0
- package/src/payments/disputes.ts +72 -0
- package/src/payments/evm/escrow-client.ts +263 -0
- package/src/payments/evm/keypair.ts +31 -0
- package/src/payments/evm/signatures.ts +103 -0
- package/src/payments/evm/wallet.ts +42 -0
- package/src/payments/index.ts +50 -0
- package/src/payments/settlement.ts +40 -0
- package/src/payments/types.ts +79 -0
- package/src/proxy/index.ts +3 -0
- package/src/proxy/provider-detection.ts +78 -0
- package/src/proxy/proxy-mux.ts +173 -0
- package/src/proxy/request-codec.ts +294 -0
- package/src/reputation/index.ts +6 -0
- package/src/reputation/rating-manager.ts +118 -0
- package/src/reputation/report-manager.ts +91 -0
- package/src/reputation/trust-engine.ts +120 -0
- package/src/reputation/trust-score.ts +74 -0
- package/src/reputation/uptime-tracker.ts +155 -0
- package/src/routing/default-router.ts +75 -0
- package/src/types/bittorrent-dht.d.ts +19 -0
- package/src/types/buyer.ts +37 -0
- package/src/types/capability.ts +34 -0
- package/src/types/connection.ts +29 -0
- package/src/types/http.ts +20 -0
- package/src/types/index.ts +14 -0
- package/src/types/metering.ts +175 -0
- package/src/types/nat-api.d.ts +29 -0
- package/src/types/peer-profile.ts +25 -0
- package/src/types/peer.ts +62 -0
- package/src/types/plugin-config.ts +31 -0
- package/src/types/protocol.ts +162 -0
- package/src/types/provider.ts +40 -0
- package/src/types/rating.ts +23 -0
- package/src/types/report.ts +30 -0
- package/src/types/seller.ts +38 -0
- package/src/types/staking.ts +23 -0
- package/src/utils/debug.ts +30 -0
- package/src/utils/hex.ts +14 -0
- package/tests/balance-manager.test.ts +156 -0
- package/tests/bootstrap.test.ts +108 -0
- package/tests/buyer-payment-manager.test.ts +358 -0
- package/tests/connection-auth.test.ts +87 -0
- package/tests/default-router.test.ts +148 -0
- package/tests/evm-keypair.test.ts +173 -0
- package/tests/identity.test.ts +133 -0
- package/tests/message-protocol.test.ts +212 -0
- package/tests/metadata-codec.test.ts +165 -0
- package/tests/metadata-validator.test.ts +261 -0
- package/tests/metering-storage.test.ts +244 -0
- package/tests/payment-codec.test.ts +95 -0
- package/tests/payment-mux.test.ts +191 -0
- package/tests/peer-selector.test.ts +184 -0
- package/tests/provider-detection.test.ts +107 -0
- package/tests/proxy-mux-security.test.ts +38 -0
- package/tests/receipt.test.ts +215 -0
- package/tests/reputation-integration.test.ts +195 -0
- package/tests/request-codec.test.ts +144 -0
- package/tests/token-counter.test.ts +122 -0
- package/tsconfig.json +9 -0
- package/vitest.config.ts +7 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { MessageType } from '../types/protocol.js';
|
|
2
|
+
import { encodeFrame } from './message-protocol.js';
|
|
3
|
+
import * as codec from './payment-codec.js';
|
|
4
|
+
/**
|
|
5
|
+
* Multiplexes bilateral payment messages over a PeerConnection.
|
|
6
|
+
* Register handlers for each message type, then call handleFrame()
|
|
7
|
+
* when a payment-range frame arrives.
|
|
8
|
+
*/
|
|
9
|
+
export class PaymentMux {
|
|
10
|
+
_connection;
|
|
11
|
+
_messageIdCounter = 0;
|
|
12
|
+
// Handler registrations
|
|
13
|
+
_onSessionLockAuth;
|
|
14
|
+
_onSessionLockConfirm;
|
|
15
|
+
_onSessionLockReject;
|
|
16
|
+
_onSellerReceipt;
|
|
17
|
+
_onBuyerAck;
|
|
18
|
+
_onSessionEnd;
|
|
19
|
+
_onTopUpRequest;
|
|
20
|
+
_onTopUpAuth;
|
|
21
|
+
_onDisputeNotify;
|
|
22
|
+
constructor(connection) {
|
|
23
|
+
this._connection = connection;
|
|
24
|
+
}
|
|
25
|
+
// --- Handler registration ---
|
|
26
|
+
onSessionLockAuth(handler) {
|
|
27
|
+
this._onSessionLockAuth = handler;
|
|
28
|
+
}
|
|
29
|
+
onSessionLockConfirm(handler) {
|
|
30
|
+
this._onSessionLockConfirm = handler;
|
|
31
|
+
}
|
|
32
|
+
onSessionLockReject(handler) {
|
|
33
|
+
this._onSessionLockReject = handler;
|
|
34
|
+
}
|
|
35
|
+
onSellerReceipt(handler) {
|
|
36
|
+
this._onSellerReceipt = handler;
|
|
37
|
+
}
|
|
38
|
+
onBuyerAck(handler) {
|
|
39
|
+
this._onBuyerAck = handler;
|
|
40
|
+
}
|
|
41
|
+
onSessionEnd(handler) {
|
|
42
|
+
this._onSessionEnd = handler;
|
|
43
|
+
}
|
|
44
|
+
onTopUpRequest(handler) {
|
|
45
|
+
this._onTopUpRequest = handler;
|
|
46
|
+
}
|
|
47
|
+
onTopUpAuth(handler) {
|
|
48
|
+
this._onTopUpAuth = handler;
|
|
49
|
+
}
|
|
50
|
+
onDisputeNotify(handler) {
|
|
51
|
+
this._onDisputeNotify = handler;
|
|
52
|
+
}
|
|
53
|
+
// --- Sending ---
|
|
54
|
+
sendSessionLockAuth(payload) {
|
|
55
|
+
this._send(MessageType.SessionLockAuth, codec.encodeSessionLockAuth(payload));
|
|
56
|
+
}
|
|
57
|
+
sendSessionLockConfirm(payload) {
|
|
58
|
+
this._send(MessageType.SessionLockConfirm, codec.encodeSessionLockConfirm(payload));
|
|
59
|
+
}
|
|
60
|
+
sendSessionLockReject(payload) {
|
|
61
|
+
this._send(MessageType.SessionLockReject, codec.encodeSessionLockReject(payload));
|
|
62
|
+
}
|
|
63
|
+
sendSellerReceipt(payload) {
|
|
64
|
+
this._send(MessageType.SellerReceipt, codec.encodeSellerReceipt(payload));
|
|
65
|
+
}
|
|
66
|
+
sendBuyerAck(payload) {
|
|
67
|
+
this._send(MessageType.BuyerAck, codec.encodeBuyerAck(payload));
|
|
68
|
+
}
|
|
69
|
+
sendSessionEnd(payload) {
|
|
70
|
+
this._send(MessageType.SessionEnd, codec.encodeSessionEnd(payload));
|
|
71
|
+
}
|
|
72
|
+
sendTopUpRequest(payload) {
|
|
73
|
+
this._send(MessageType.TopUpRequest, codec.encodeTopUpRequest(payload));
|
|
74
|
+
}
|
|
75
|
+
sendTopUpAuth(payload) {
|
|
76
|
+
this._send(MessageType.TopUpAuth, codec.encodeTopUpAuth(payload));
|
|
77
|
+
}
|
|
78
|
+
sendDisputeNotify(payload) {
|
|
79
|
+
this._send(MessageType.DisputeNotify, codec.encodeDisputeNotify(payload));
|
|
80
|
+
}
|
|
81
|
+
// --- Receiving ---
|
|
82
|
+
/**
|
|
83
|
+
* Returns true if this frame is a payment message and was handled.
|
|
84
|
+
*/
|
|
85
|
+
async handleFrame(frame) {
|
|
86
|
+
switch (frame.type) {
|
|
87
|
+
case MessageType.SessionLockAuth:
|
|
88
|
+
await this._onSessionLockAuth?.(codec.decodeSessionLockAuth(frame.payload));
|
|
89
|
+
return true;
|
|
90
|
+
case MessageType.SessionLockConfirm:
|
|
91
|
+
await this._onSessionLockConfirm?.(codec.decodeSessionLockConfirm(frame.payload));
|
|
92
|
+
return true;
|
|
93
|
+
case MessageType.SessionLockReject:
|
|
94
|
+
await this._onSessionLockReject?.(codec.decodeSessionLockReject(frame.payload));
|
|
95
|
+
return true;
|
|
96
|
+
case MessageType.SellerReceipt:
|
|
97
|
+
await this._onSellerReceipt?.(codec.decodeSellerReceipt(frame.payload));
|
|
98
|
+
return true;
|
|
99
|
+
case MessageType.BuyerAck:
|
|
100
|
+
await this._onBuyerAck?.(codec.decodeBuyerAck(frame.payload));
|
|
101
|
+
return true;
|
|
102
|
+
case MessageType.SessionEnd:
|
|
103
|
+
await this._onSessionEnd?.(codec.decodeSessionEnd(frame.payload));
|
|
104
|
+
return true;
|
|
105
|
+
case MessageType.TopUpRequest:
|
|
106
|
+
await this._onTopUpRequest?.(codec.decodeTopUpRequest(frame.payload));
|
|
107
|
+
return true;
|
|
108
|
+
case MessageType.TopUpAuth:
|
|
109
|
+
await this._onTopUpAuth?.(codec.decodeTopUpAuth(frame.payload));
|
|
110
|
+
return true;
|
|
111
|
+
case MessageType.DisputeNotify:
|
|
112
|
+
await this._onDisputeNotify?.(codec.decodeDisputeNotify(frame.payload));
|
|
113
|
+
return true;
|
|
114
|
+
default:
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** Check if a message type is in the payment range (0x50-0x5F). */
|
|
119
|
+
static isPaymentMessage(type) {
|
|
120
|
+
return type >= 0x50 && type <= 0x5f;
|
|
121
|
+
}
|
|
122
|
+
_send(type, payload) {
|
|
123
|
+
const frame = encodeFrame({
|
|
124
|
+
type,
|
|
125
|
+
messageId: this._messageIdCounter++ & 0xffffffff,
|
|
126
|
+
payload,
|
|
127
|
+
});
|
|
128
|
+
this._connection.send(frame);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=payment-mux.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-mux.js","sourceRoot":"","sources":["../../src/p2p/payment-mux.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** Configuration for the reconnection strategy. */
|
|
2
|
+
export interface ReconnectConfig {
|
|
3
|
+
/** Base delay in milliseconds before the first reconnect attempt. */
|
|
4
|
+
baseDelayMs?: number;
|
|
5
|
+
/** Maximum delay in milliseconds between reconnect attempts. */
|
|
6
|
+
maxDelayMs?: number;
|
|
7
|
+
/** Maximum number of reconnect attempts before giving up. */
|
|
8
|
+
maxAttempts?: number;
|
|
9
|
+
/** Jitter factor (0-1) to randomize the delay. */
|
|
10
|
+
jitterFactor?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ReconnectCallbacks {
|
|
13
|
+
/** Called when a reconnect attempt should be made. */
|
|
14
|
+
onReconnect: (attempt: number) => Promise<boolean>;
|
|
15
|
+
/** Called when all attempts are exhausted. */
|
|
16
|
+
onGiveUp: (totalAttempts: number) => void;
|
|
17
|
+
/** Called when reconnection succeeds. */
|
|
18
|
+
onSuccess: (attempt: number) => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Manages reconnection with exponential backoff and jitter.
|
|
22
|
+
*
|
|
23
|
+
* Delay formula: min(baseDelay * 2^attempt + jitter, maxDelay)
|
|
24
|
+
*/
|
|
25
|
+
export declare class ReconnectManager {
|
|
26
|
+
private _baseDelay;
|
|
27
|
+
private _maxDelay;
|
|
28
|
+
private _maxAttempts;
|
|
29
|
+
private _jitterFactor;
|
|
30
|
+
private _attempt;
|
|
31
|
+
private _callbacks;
|
|
32
|
+
private _timeoutHandle;
|
|
33
|
+
private _active;
|
|
34
|
+
constructor(callbacks: ReconnectCallbacks, config?: ReconnectConfig);
|
|
35
|
+
get attempt(): number;
|
|
36
|
+
get isActive(): boolean;
|
|
37
|
+
/** Calculate delay for the current attempt with exponential backoff + jitter. */
|
|
38
|
+
calculateDelay(attempt: number): number;
|
|
39
|
+
/** Start the reconnection process. */
|
|
40
|
+
start(): void;
|
|
41
|
+
/** Stop the reconnection process. */
|
|
42
|
+
stop(): void;
|
|
43
|
+
/** Reset the attempt counter (e.g., after a successful connection). */
|
|
44
|
+
reset(): void;
|
|
45
|
+
/** Schedule the next reconnect attempt. */
|
|
46
|
+
private _scheduleAttempt;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=reconnect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconnect.d.ts","sourceRoot":"","sources":["../../src/p2p/reconnect.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,yCAAyC;IACzC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,OAAO,CAAS;gBAEZ,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,eAAe;IAQnE,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,iFAAiF;IACjF,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAMvC,sCAAsC;IACtC,KAAK,IAAI,IAAI;IAOb,qCAAqC;IACrC,IAAI,IAAI,IAAI;IAQZ,uEAAuE;IACvE,KAAK,IAAI,IAAI;IAKb,2CAA2C;IAC3C,OAAO,CAAC,gBAAgB;CA4BzB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
const DEFAULT_BASE_DELAY_MS = 1_000;
|
|
2
|
+
const DEFAULT_MAX_DELAY_MS = 30_000;
|
|
3
|
+
const DEFAULT_MAX_ATTEMPTS = 5;
|
|
4
|
+
const DEFAULT_JITTER_FACTOR = 0.3;
|
|
5
|
+
/**
|
|
6
|
+
* Manages reconnection with exponential backoff and jitter.
|
|
7
|
+
*
|
|
8
|
+
* Delay formula: min(baseDelay * 2^attempt + jitter, maxDelay)
|
|
9
|
+
*/
|
|
10
|
+
export class ReconnectManager {
|
|
11
|
+
_baseDelay;
|
|
12
|
+
_maxDelay;
|
|
13
|
+
_maxAttempts;
|
|
14
|
+
_jitterFactor;
|
|
15
|
+
_attempt = 0;
|
|
16
|
+
_callbacks;
|
|
17
|
+
_timeoutHandle = null;
|
|
18
|
+
_active = false;
|
|
19
|
+
constructor(callbacks, config) {
|
|
20
|
+
this._callbacks = callbacks;
|
|
21
|
+
this._baseDelay = config?.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;
|
|
22
|
+
this._maxDelay = config?.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;
|
|
23
|
+
this._maxAttempts = config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
|
|
24
|
+
this._jitterFactor = config?.jitterFactor ?? DEFAULT_JITTER_FACTOR;
|
|
25
|
+
}
|
|
26
|
+
get attempt() {
|
|
27
|
+
return this._attempt;
|
|
28
|
+
}
|
|
29
|
+
get isActive() {
|
|
30
|
+
return this._active;
|
|
31
|
+
}
|
|
32
|
+
/** Calculate delay for the current attempt with exponential backoff + jitter. */
|
|
33
|
+
calculateDelay(attempt) {
|
|
34
|
+
const exponentialDelay = this._baseDelay * Math.pow(2, attempt);
|
|
35
|
+
const jitter = exponentialDelay * this._jitterFactor * Math.random();
|
|
36
|
+
return Math.min(exponentialDelay + jitter, this._maxDelay);
|
|
37
|
+
}
|
|
38
|
+
/** Start the reconnection process. */
|
|
39
|
+
start() {
|
|
40
|
+
if (this._active)
|
|
41
|
+
return;
|
|
42
|
+
this._active = true;
|
|
43
|
+
this._attempt = 0;
|
|
44
|
+
this._scheduleAttempt();
|
|
45
|
+
}
|
|
46
|
+
/** Stop the reconnection process. */
|
|
47
|
+
stop() {
|
|
48
|
+
this._active = false;
|
|
49
|
+
if (this._timeoutHandle) {
|
|
50
|
+
clearTimeout(this._timeoutHandle);
|
|
51
|
+
this._timeoutHandle = null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** Reset the attempt counter (e.g., after a successful connection). */
|
|
55
|
+
reset() {
|
|
56
|
+
this._attempt = 0;
|
|
57
|
+
this.stop();
|
|
58
|
+
}
|
|
59
|
+
/** Schedule the next reconnect attempt. */
|
|
60
|
+
_scheduleAttempt() {
|
|
61
|
+
if (!this._active)
|
|
62
|
+
return;
|
|
63
|
+
if (this._attempt >= this._maxAttempts) {
|
|
64
|
+
this._active = false;
|
|
65
|
+
this._callbacks.onGiveUp(this._attempt);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const delay = this.calculateDelay(this._attempt);
|
|
69
|
+
this._timeoutHandle = setTimeout(async () => {
|
|
70
|
+
if (!this._active)
|
|
71
|
+
return;
|
|
72
|
+
this._attempt++;
|
|
73
|
+
try {
|
|
74
|
+
const success = await this._callbacks.onReconnect(this._attempt);
|
|
75
|
+
if (success) {
|
|
76
|
+
this._active = false;
|
|
77
|
+
this._callbacks.onSuccess(this._attempt);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this._scheduleAttempt();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
this._scheduleAttempt();
|
|
85
|
+
}
|
|
86
|
+
}, delay);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=reconnect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconnect.js","sourceRoot":"","sources":["../../src/p2p/reconnect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { WalletInfo, Transaction, TransactionType } from './types.js';
|
|
2
|
+
export interface UnifiedBalance {
|
|
3
|
+
cryptoUSDC: number;
|
|
4
|
+
inEscrowUSDC: number;
|
|
5
|
+
totalUSD: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class BalanceManager {
|
|
8
|
+
private transactions;
|
|
9
|
+
getBalance(walletInfo: WalletInfo | null, inEscrowUSDC: number): UnifiedBalance;
|
|
10
|
+
recordTransaction(tx: Transaction): void;
|
|
11
|
+
getTransactionHistory(filter?: TransactionType, limit?: number, offset?: number): Transaction[];
|
|
12
|
+
getTotalEarnings(since?: number): number;
|
|
13
|
+
getTotalSpending(since?: number): number;
|
|
14
|
+
save(configDir: string): Promise<void>;
|
|
15
|
+
load(configDir: string): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=balance-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance-manager.d.ts","sourceRoot":"","sources":["../../src/payments/balance-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAqB;IAEzC,UAAU,CACR,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,YAAY,EAAE,MAAM,GACnB,cAAc;IAWjB,iBAAiB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAIxC,qBAAqB,CACnB,MAAM,CAAC,EAAE,eAAe,EACxB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,WAAW,EAAE;IAYhB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAOxC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAOlC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAS7C"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
export class BalanceManager {
|
|
4
|
+
transactions = [];
|
|
5
|
+
getBalance(walletInfo, inEscrowUSDC) {
|
|
6
|
+
const cryptoUSDC = walletInfo ? parseFloat(walletInfo.balanceUSDC) : 0;
|
|
7
|
+
const totalUSD = cryptoUSDC + inEscrowUSDC;
|
|
8
|
+
return {
|
|
9
|
+
cryptoUSDC,
|
|
10
|
+
inEscrowUSDC,
|
|
11
|
+
totalUSD,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
recordTransaction(tx) {
|
|
15
|
+
this.transactions.push(tx);
|
|
16
|
+
}
|
|
17
|
+
getTransactionHistory(filter, limit, offset) {
|
|
18
|
+
let result = this.transactions;
|
|
19
|
+
if (filter) {
|
|
20
|
+
result = result.filter((tx) => tx.type === filter);
|
|
21
|
+
}
|
|
22
|
+
const start = offset ?? 0;
|
|
23
|
+
const end = limit !== undefined ? start + limit : undefined;
|
|
24
|
+
return result.slice(start, end);
|
|
25
|
+
}
|
|
26
|
+
getTotalEarnings(since) {
|
|
27
|
+
return this.transactions
|
|
28
|
+
.filter((tx) => tx.type === 'escrow_release')
|
|
29
|
+
.filter((tx) => (since !== undefined ? tx.timestamp >= since : true))
|
|
30
|
+
.reduce((sum, tx) => sum + tx.amountUSD, 0);
|
|
31
|
+
}
|
|
32
|
+
getTotalSpending(since) {
|
|
33
|
+
return this.transactions
|
|
34
|
+
.filter((tx) => tx.type === 'escrow_lock')
|
|
35
|
+
.filter((tx) => (since !== undefined ? tx.timestamp >= since : true))
|
|
36
|
+
.reduce((sum, tx) => sum + tx.amountUSD, 0);
|
|
37
|
+
}
|
|
38
|
+
async save(configDir) {
|
|
39
|
+
await mkdir(configDir, { recursive: true });
|
|
40
|
+
const filePath = join(configDir, 'transactions.json');
|
|
41
|
+
await writeFile(filePath, JSON.stringify(this.transactions, null, 2), 'utf-8');
|
|
42
|
+
}
|
|
43
|
+
async load(configDir) {
|
|
44
|
+
const filePath = join(configDir, 'transactions.json');
|
|
45
|
+
try {
|
|
46
|
+
const data = await readFile(filePath, 'utf-8');
|
|
47
|
+
this.transactions = JSON.parse(data);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
this.transactions = [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=balance-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance-manager.js","sourceRoot":"","sources":["../../src/payments/balance-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { type AbstractSigner, Wallet } from 'ethers';
|
|
2
|
+
import type { Identity } from '../p2p/identity.js';
|
|
3
|
+
import type { PaymentMux } from '../p2p/payment-mux.js';
|
|
4
|
+
import type { SessionLockConfirmPayload, SessionLockRejectPayload, SellerReceiptPayload, TopUpRequestPayload } from '../types/protocol.js';
|
|
5
|
+
import { BaseEscrowClient } from './evm/escrow-client.js';
|
|
6
|
+
export interface BuyerPaymentConfig {
|
|
7
|
+
/** Default lock amount in USDC base units (6 decimals). e.g. "1000000" = 1 USDC */
|
|
8
|
+
defaultLockAmountUSDC: string;
|
|
9
|
+
/** Base JSON-RPC endpoint */
|
|
10
|
+
rpcUrl: string;
|
|
11
|
+
/** Deployed AntseedEscrow contract address */
|
|
12
|
+
contractAddress: string;
|
|
13
|
+
/** USDC token contract address */
|
|
14
|
+
usdcAddress: string;
|
|
15
|
+
/** Auto-acknowledge seller receipts. Default: true */
|
|
16
|
+
autoAck?: boolean;
|
|
17
|
+
/** Auto-approve top-up requests. Default: true */
|
|
18
|
+
autoTopUp?: boolean;
|
|
19
|
+
/** Maximum total amount the buyer will commit per session (USDC base units). Default: "10000000" (10 USDC) */
|
|
20
|
+
maxSessionBudgetUSDC?: string;
|
|
21
|
+
}
|
|
22
|
+
export type BuyerSessionStatus = 'pending' | 'confirmed' | 'active' | 'ending' | 'ended';
|
|
23
|
+
export interface BuyerSessionState {
|
|
24
|
+
sessionId: string;
|
|
25
|
+
sellerPeerId: string;
|
|
26
|
+
sellerEvmAddress: string;
|
|
27
|
+
lockedAmount: bigint;
|
|
28
|
+
status: BuyerSessionStatus;
|
|
29
|
+
txSignature: string | null;
|
|
30
|
+
lastRunningTotal: bigint;
|
|
31
|
+
lastRequestCount: number;
|
|
32
|
+
createdAt: number;
|
|
33
|
+
updatedAt: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Manages buyer-side bilateral payment sessions across seller connections.
|
|
37
|
+
*
|
|
38
|
+
* Handles the full lifecycle: lock initiation, receipt acknowledgement,
|
|
39
|
+
* top-up approval, and session settlement.
|
|
40
|
+
*/
|
|
41
|
+
export declare class BuyerPaymentManager {
|
|
42
|
+
private readonly _identity;
|
|
43
|
+
private _signer;
|
|
44
|
+
private readonly _escrowClient;
|
|
45
|
+
private readonly _config;
|
|
46
|
+
private readonly _sessions;
|
|
47
|
+
constructor(identity: Identity, config: BuyerPaymentConfig);
|
|
48
|
+
get signer(): AbstractSigner;
|
|
49
|
+
/** @deprecated Use .signer instead */
|
|
50
|
+
get wallet(): Wallet;
|
|
51
|
+
/** Replace the signer at runtime (e.g. with a WalletConnect signer). */
|
|
52
|
+
setSigner(signer: AbstractSigner): void;
|
|
53
|
+
get escrowClient(): BaseEscrowClient;
|
|
54
|
+
/** Get a snapshot of all active sessions. */
|
|
55
|
+
getActiveSessions(): BuyerSessionState[];
|
|
56
|
+
/** Get the session for a given seller peer, if it exists. */
|
|
57
|
+
getSession(sellerPeerId: string): BuyerSessionState | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Generate a session ID, sign a lock authorization, and send it
|
|
60
|
+
* to the seller via PaymentMux.
|
|
61
|
+
*/
|
|
62
|
+
initiateLock(sellerPeerId: string, sellerEvmAddress: string, paymentMux: PaymentMux, lockAmount?: string): Promise<string>;
|
|
63
|
+
/**
|
|
64
|
+
* Called when the seller confirms the lock was committed on-chain.
|
|
65
|
+
*/
|
|
66
|
+
handleLockConfirm(sellerPeerId: string, payload: SessionLockConfirmPayload): void;
|
|
67
|
+
/**
|
|
68
|
+
* Called when the seller rejects the lock.
|
|
69
|
+
*/
|
|
70
|
+
handleLockReject(sellerPeerId: string, payload: SessionLockRejectPayload): void;
|
|
71
|
+
/**
|
|
72
|
+
* Handle a running-total receipt from the seller.
|
|
73
|
+
* If autoAck is enabled, automatically counter-sign and send BuyerAck.
|
|
74
|
+
*/
|
|
75
|
+
handleSellerReceipt(sellerPeerId: string, receipt: SellerReceiptPayload, paymentMux: PaymentMux): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Handle a top-up request from the seller.
|
|
78
|
+
* If autoTopUp is enabled and budget allows, sign and send TopUpAuth.
|
|
79
|
+
* Otherwise, end the session.
|
|
80
|
+
*/
|
|
81
|
+
handleTopUpRequest(sellerPeerId: string, request: TopUpRequestPayload, paymentMux: PaymentMux): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* End a session with the given seller. Signs a settlement message
|
|
84
|
+
* with ECDSA and sends SessionEnd.
|
|
85
|
+
*/
|
|
86
|
+
endSession(sellerPeerId: string, paymentMux: PaymentMux, score?: number): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Deposit USDC into the escrow contract.
|
|
89
|
+
* @param amount Amount in USDC base units (6 decimals).
|
|
90
|
+
*/
|
|
91
|
+
deposit(amount: bigint): Promise<string>;
|
|
92
|
+
/**
|
|
93
|
+
* Withdraw USDC from the escrow contract.
|
|
94
|
+
* @param amount Amount in USDC base units (6 decimals).
|
|
95
|
+
*/
|
|
96
|
+
withdraw(amount: bigint): Promise<string>;
|
|
97
|
+
/**
|
|
98
|
+
* Get the buyer's on-chain escrow balance.
|
|
99
|
+
*/
|
|
100
|
+
getBalance(): Promise<{
|
|
101
|
+
deposited: bigint;
|
|
102
|
+
committed: bigint;
|
|
103
|
+
available: bigint;
|
|
104
|
+
}>;
|
|
105
|
+
/**
|
|
106
|
+
* Release an expired lock (buyer reclaims funds).
|
|
107
|
+
*/
|
|
108
|
+
releaseExpiredLock(sessionId: string): Promise<string>;
|
|
109
|
+
/**
|
|
110
|
+
* Respond to a dispute opened by the seller.
|
|
111
|
+
*/
|
|
112
|
+
respondToDispute(sessionId: string): Promise<string>;
|
|
113
|
+
/**
|
|
114
|
+
* Check if a session lock has been confirmed (for polling).
|
|
115
|
+
*/
|
|
116
|
+
isLockConfirmed(sellerPeerId: string): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Check if a session lock has been rejected (for polling).
|
|
119
|
+
*/
|
|
120
|
+
isLockRejected(sellerPeerId: string): boolean;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=buyer-payment-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buyer-payment-manager.d.ts","sourceRoot":"","sources":["../../src/payments/buyer-payment-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAa1D,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,qBAAqB,EAAE,MAAM,CAAC;IAC9B,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8GAA8G;IAC9G,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;gBAEtD,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB;IAW1D,IAAI,MAAM,IAAI,cAAc,CAE3B;IAED,sCAAsC;IACtC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,wEAAwE;IACxE,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIvC,IAAI,YAAY,IAAI,gBAAgB,CAEnC;IAED,6CAA6C;IAC7C,iBAAiB,IAAI,iBAAiB,EAAE;IAMxC,6DAA6D;IAC7D,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAM/D;;;OAGG;IACG,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC;IA0ClB;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAiBjF;;OAEG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAa/E;;;OAGG;IACG,mBAAmB,CACvB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,oBAAoB,EAC7B,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC;IA2ChB;;;;OAIG;IACG,kBAAkB,CACtB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,EAC5B,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC;IAkDhB;;;OAGG;IACG,UAAU,CACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,EACtB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,IAAI,CAAC;IAuChB;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9C;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAOxF;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D;;OAEG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAK9C;;OAEG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;CAG9C"}
|