@antseed/node 0.2.81 → 0.2.83

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.
Files changed (127) hide show
  1. package/dist/discovery/announcer.d.ts +0 -1
  2. package/dist/discovery/announcer.d.ts.map +1 -1
  3. package/dist/discovery/announcer.js +0 -3
  4. package/dist/discovery/announcer.js.map +1 -1
  5. package/dist/discovery/index.d.ts +0 -1
  6. package/dist/discovery/index.d.ts.map +1 -1
  7. package/dist/discovery/index.js +0 -1
  8. package/dist/discovery/index.js.map +1 -1
  9. package/dist/discovery/peer-metadata.d.ts +0 -1
  10. package/dist/discovery/peer-metadata.d.ts.map +1 -1
  11. package/dist/index.d.ts +1 -3
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -2
  14. package/dist/index.js.map +1 -1
  15. package/dist/node.d.ts.map +1 -1
  16. package/dist/node.js +12 -1
  17. package/dist/node.js.map +1 -1
  18. package/dist/payments/buyer-payment-manager.d.ts +1 -0
  19. package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
  20. package/dist/payments/buyer-payment-manager.js +6 -4
  21. package/dist/payments/buyer-payment-manager.js.map +1 -1
  22. package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -1
  23. package/dist/payments/buyer-payment-negotiator.js +10 -2
  24. package/dist/payments/buyer-payment-negotiator.js.map +1 -1
  25. package/dist/payments/evm/staking-client.d.ts +1 -0
  26. package/dist/payments/evm/staking-client.d.ts.map +1 -1
  27. package/dist/payments/evm/staking-client.js +7 -0
  28. package/dist/payments/evm/staking-client.js.map +1 -1
  29. package/dist/reputation/index.d.ts +0 -3
  30. package/dist/reputation/index.d.ts.map +1 -1
  31. package/dist/reputation/index.js +0 -2
  32. package/dist/reputation/index.js.map +1 -1
  33. package/dist/reputation/on-chain-reputation.d.ts +41 -0
  34. package/dist/reputation/on-chain-reputation.d.ts.map +1 -0
  35. package/dist/reputation/on-chain-reputation.js +95 -0
  36. package/dist/reputation/on-chain-reputation.js.map +1 -0
  37. package/dist/routing/default-router.d.ts +0 -1
  38. package/dist/routing/default-router.d.ts.map +1 -1
  39. package/dist/routing/default-router.js +11 -18
  40. package/dist/routing/default-router.js.map +1 -1
  41. package/dist/types/peer.d.ts +20 -2
  42. package/dist/types/peer.d.ts.map +1 -1
  43. package/package.json +2 -2
  44. package/dist/discovery/default-metadata-resolver.d.ts +0 -16
  45. package/dist/discovery/default-metadata-resolver.d.ts.map +0 -1
  46. package/dist/discovery/default-metadata-resolver.js +0 -16
  47. package/dist/discovery/default-metadata-resolver.js.map +0 -1
  48. package/dist/discovery/peer-selector.d.ts +0 -33
  49. package/dist/discovery/peer-selector.d.ts.map +0 -1
  50. package/dist/discovery/peer-selector.js +0 -80
  51. package/dist/discovery/peer-selector.js.map +0 -1
  52. package/dist/discovery/profile-manager.d.ts +0 -50
  53. package/dist/discovery/profile-manager.d.ts.map +0 -1
  54. package/dist/discovery/profile-manager.js +0 -105
  55. package/dist/discovery/profile-manager.js.map +0 -1
  56. package/dist/discovery/profile-search.d.ts +0 -27
  57. package/dist/discovery/profile-search.d.ts.map +0 -1
  58. package/dist/discovery/profile-search.js +0 -75
  59. package/dist/discovery/profile-search.js.map +0 -1
  60. package/dist/discovery/reputation-verifier.d.ts +0 -5
  61. package/dist/discovery/reputation-verifier.d.ts.map +0 -1
  62. package/dist/discovery/reputation-verifier.js +0 -5
  63. package/dist/discovery/reputation-verifier.js.map +0 -1
  64. package/dist/discovery/stats-verifier.d.ts +0 -27
  65. package/dist/discovery/stats-verifier.d.ts.map +0 -1
  66. package/dist/discovery/stats-verifier.js +0 -38
  67. package/dist/discovery/stats-verifier.js.map +0 -1
  68. package/dist/p2p/handshake.d.ts +0 -47
  69. package/dist/p2p/handshake.d.ts.map +0 -1
  70. package/dist/p2p/handshake.js +0 -107
  71. package/dist/p2p/handshake.js.map +0 -1
  72. package/dist/p2p/reconnect.d.ts +0 -48
  73. package/dist/p2p/reconnect.d.ts.map +0 -1
  74. package/dist/p2p/reconnect.js +0 -89
  75. package/dist/p2p/reconnect.js.map +0 -1
  76. package/dist/payments/disputes.d.ts +0 -18
  77. package/dist/payments/disputes.d.ts.map +0 -1
  78. package/dist/payments/disputes.js +0 -47
  79. package/dist/payments/disputes.js.map +0 -1
  80. package/dist/payments/evm/escrow-client.d.ts +0 -82
  81. package/dist/payments/evm/escrow-client.d.ts.map +0 -1
  82. package/dist/payments/evm/escrow-client.js +0 -277
  83. package/dist/payments/evm/escrow-client.js.map +0 -1
  84. package/dist/payments/evm/keypair.d.ts +0 -10
  85. package/dist/payments/evm/keypair.d.ts.map +0 -1
  86. package/dist/payments/evm/keypair.js +0 -13
  87. package/dist/payments/evm/keypair.js.map +0 -1
  88. package/dist/payments/evm/sessions-client.d.ts +0 -30
  89. package/dist/payments/evm/sessions-client.d.ts.map +0 -1
  90. package/dist/payments/evm/sessions-client.js +0 -61
  91. package/dist/payments/evm/sessions-client.js.map +0 -1
  92. package/dist/payments/evm/wallet.d.ts +0 -5
  93. package/dist/payments/evm/wallet.d.ts.map +0 -1
  94. package/dist/payments/evm/wallet.js +0 -31
  95. package/dist/payments/evm/wallet.js.map +0 -1
  96. package/dist/payments/session-store.d.ts +0 -68
  97. package/dist/payments/session-store.d.ts.map +0 -1
  98. package/dist/payments/session-store.js +0 -272
  99. package/dist/payments/session-store.js.map +0 -1
  100. package/dist/payments/settlement.d.ts +0 -6
  101. package/dist/payments/settlement.d.ts.map +0 -1
  102. package/dist/payments/settlement.js +0 -25
  103. package/dist/payments/settlement.js.map +0 -1
  104. package/dist/proxy/model-api-adapter.d.ts +0 -30
  105. package/dist/proxy/model-api-adapter.d.ts.map +0 -1
  106. package/dist/proxy/model-api-adapter.js +0 -891
  107. package/dist/proxy/model-api-adapter.js.map +0 -1
  108. package/dist/reputation/trust-engine.d.ts +0 -36
  109. package/dist/reputation/trust-engine.d.ts.map +0 -1
  110. package/dist/reputation/trust-engine.js +0 -95
  111. package/dist/reputation/trust-engine.js.map +0 -1
  112. package/dist/reputation/trust-score.d.ts +0 -43
  113. package/dist/reputation/trust-score.d.ts.map +0 -1
  114. package/dist/reputation/trust-score.js +0 -34
  115. package/dist/reputation/trust-score.js.map +0 -1
  116. package/dist/types/model-api.d.ts +0 -4
  117. package/dist/types/model-api.d.ts.map +0 -1
  118. package/dist/types/model-api.js +0 -11
  119. package/dist/types/model-api.js.map +0 -1
  120. package/dist/types/peer-profile.d.ts +0 -24
  121. package/dist/types/peer-profile.d.ts.map +0 -1
  122. package/dist/types/peer-profile.js +0 -2
  123. package/dist/types/peer-profile.js.map +0 -1
  124. package/dist/types/staking.d.ts +0 -16
  125. package/dist/types/staking.d.ts.map +0 -1
  126. package/dist/types/staking.js +0 -6
  127. package/dist/types/staking.js.map +0 -1
@@ -1,38 +0,0 @@
1
- import { peerIdToAddress } from "../types/peer.js";
2
- /**
3
- * Verify a peer's claimed on-chain stats against the AntseedStats contract.
4
- * Uses the staking client to look up the agentId from the peer's EVM address
5
- * (derived from peerId), then fetches stats from the StatsClient and compares
6
- * claimed vs actual.
7
- */
8
- export async function verifyStats(statsClient, stakingClient, metadata) {
9
- const evmAddress = peerIdToAddress(metadata.peerId);
10
- const agentId = await stakingClient.getAgentId(evmAddress);
11
- const stats = await statsClient.getStats(agentId);
12
- // Map AgentStats fields to the verification format:
13
- // - channelCount is the total completed channels
14
- // - ghostCount maps to dispute count (channels where provider went silent)
15
- // - Use channelCount as the reputation metric (higher = more trusted)
16
- const actualReputation = stats.channelCount;
17
- const actualChannelCount = stats.channelCount;
18
- const actualDisputeCount = stats.ghostCount;
19
- // Always compare against on-chain data.
20
- // If peer omits stats fields, treat as unverified — prevents bypass
21
- // by simply not claiming any values.
22
- const valid = metadata.onChainReputation !== undefined &&
23
- metadata.onChainChannelCount !== undefined &&
24
- metadata.onChainDisputeCount !== undefined &&
25
- metadata.onChainReputation === actualReputation &&
26
- metadata.onChainChannelCount === actualChannelCount &&
27
- metadata.onChainDisputeCount === actualDisputeCount;
28
- return {
29
- valid,
30
- actualReputation,
31
- actualChannelCount,
32
- actualDisputeCount,
33
- claimedReputation: metadata.onChainReputation,
34
- claimedChannelCount: metadata.onChainChannelCount,
35
- claimedDisputeCount: metadata.onChainDisputeCount,
36
- };
37
- }
38
- //# sourceMappingURL=stats-verifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stats-verifier.js","sourceRoot":"","sources":["../../src/discovery/stats-verifier.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAmBnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAwB,EACxB,aAA4B,EAC5B,QAAsB;IAEtB,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAElD,oDAAoD;IACpD,iDAAiD;IACjD,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC;IAC5C,MAAM,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAAC;IAC9C,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,CAAC;IAE5C,wCAAwC;IACxC,oEAAoE;IACpE,qCAAqC;IACrC,MAAM,KAAK,GACT,QAAQ,CAAC,iBAAiB,KAAK,SAAS;QACxC,QAAQ,CAAC,mBAAmB,KAAK,SAAS;QAC1C,QAAQ,CAAC,mBAAmB,KAAK,SAAS;QAC1C,QAAQ,CAAC,iBAAiB,KAAK,gBAAgB;QAC/C,QAAQ,CAAC,mBAAmB,KAAK,kBAAkB;QACnD,QAAQ,CAAC,mBAAmB,KAAK,kBAAkB,CAAC;IAEtD,OAAO;QACL,KAAK;QACL,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;KAClD,CAAC;AACJ,CAAC"}
@@ -1,47 +0,0 @@
1
- import { type PeerId } from "../types/peer.js";
2
- import { MessageType } from "../types/protocol.js";
3
- import type { PeerConnection } from "./connection-manager.js";
4
- export interface HandshakeResult {
5
- remotePeerId: PeerId;
6
- verified: boolean;
7
- }
8
- /**
9
- * Build the HandshakeInit payload:
10
- * [32 bytes pubkey] [32 bytes nonce] [64 bytes signature(nonce)]
11
- */
12
- export declare function buildHandshakeInit(publicKey: Uint8Array, privateKey: Uint8Array): Promise<{
13
- payload: Uint8Array;
14
- nonce: Uint8Array;
15
- }>;
16
- /**
17
- * Verify a received HandshakeInit payload.
18
- * Returns the remote peer's public key and nonce if valid.
19
- */
20
- export declare function verifyHandshakeInit(payload: Uint8Array): Promise<{
21
- remotePubKey: Uint8Array;
22
- nonce: Uint8Array;
23
- valid: boolean;
24
- }>;
25
- /**
26
- * Build a HandshakeAck payload:
27
- * [32 bytes pubkey] [32 bytes echo-nonce] [64 bytes signature(echo-nonce)]
28
- */
29
- export declare function buildHandshakeAck(publicKey: Uint8Array, privateKey: Uint8Array, remoteNonce: Uint8Array): Promise<Uint8Array>;
30
- /**
31
- * Verify a received HandshakeAck payload against the nonce we originally sent.
32
- */
33
- export declare function verifyHandshakeAck(payload: Uint8Array, originalNonce: Uint8Array): Promise<{
34
- remotePubKey: Uint8Array;
35
- valid: boolean;
36
- }>;
37
- /**
38
- * Perform the full handshake as the initiator.
39
- * Sends HandshakeInit, waits for HandshakeAck, verifies.
40
- */
41
- export declare function performHandshake(conn: PeerConnection, localPublicKey: Uint8Array, localPrivateKey: Uint8Array, sendFn: (type: MessageType, payload: Uint8Array) => void, waitForMessage: (type: MessageType, timeoutMs: number) => Promise<Uint8Array>): Promise<HandshakeResult>;
42
- /**
43
- * Respond to a handshake as the responder.
44
- * Waits for HandshakeInit, verifies, sends HandshakeAck.
45
- */
46
- export declare function respondToHandshake(conn: PeerConnection, localPublicKey: Uint8Array, localPrivateKey: Uint8Array, sendFn: (type: MessageType, payload: Uint8Array) => void, waitForMessage: (type: MessageType, timeoutMs: number) => Promise<Uint8Array>): Promise<HandshakeResult>;
47
- //# sourceMappingURL=handshake.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/p2p/handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAY,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAQ9D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AASD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,CAUrD;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC;IAAE,YAAY,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAY1E;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,UAAU,CAAC,CASrB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,UAAU,EACnB,aAAa,EAAE,UAAU,GACxB,OAAO,CAAC;IAAE,YAAY,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAiBvD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,cAAc,EAAE,UAAU,EAC1B,eAAe,EAAE,UAAU,EAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,KAAK,IAAI,EACxD,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,GAC5E,OAAO,CAAC,eAAe,CAAC,CAgB1B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,EACpB,cAAc,EAAE,UAAU,EAC1B,eAAe,EAAE,UAAU,EAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,KAAK,IAAI,EACxD,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,GAC5E,OAAO,CAAC,eAAe,CAAC,CAgB1B"}
@@ -1,107 +0,0 @@
1
- import { toPeerId } from "../types/peer.js";
2
- import { MessageType } from "../types/protocol.js";
3
- import { ConnectionState } from "../types/connection.js";
4
- import { signData, verifySignature, bytesToHex } from "./identity.js";
5
- /** Nonce size in bytes. */
6
- const NONCE_SIZE = 32;
7
- /** Handshake timeout in milliseconds. */
8
- const HANDSHAKE_TIMEOUT_MS = 10_000;
9
- /** Generate a random nonce for the handshake challenge. */
10
- function generateNonce() {
11
- const nonce = new Uint8Array(NONCE_SIZE);
12
- crypto.getRandomValues(nonce);
13
- return nonce;
14
- }
15
- /**
16
- * Build the HandshakeInit payload:
17
- * [32 bytes pubkey] [32 bytes nonce] [64 bytes signature(nonce)]
18
- */
19
- export async function buildHandshakeInit(publicKey, privateKey) {
20
- const nonce = generateNonce();
21
- const signature = await signData(privateKey, nonce);
22
- const payload = new Uint8Array(32 + 32 + 64);
23
- payload.set(publicKey, 0);
24
- payload.set(nonce, 32);
25
- payload.set(signature, 64);
26
- return { payload, nonce };
27
- }
28
- /**
29
- * Verify a received HandshakeInit payload.
30
- * Returns the remote peer's public key and nonce if valid.
31
- */
32
- export async function verifyHandshakeInit(payload) {
33
- if (payload.length !== 128) {
34
- return { remotePubKey: new Uint8Array(32), nonce: new Uint8Array(32), valid: false };
35
- }
36
- const remotePubKey = payload.slice(0, 32);
37
- const nonce = payload.slice(32, 64);
38
- const signature = payload.slice(64, 128);
39
- const valid = await verifySignature(remotePubKey, signature, nonce);
40
- return { remotePubKey, nonce, valid };
41
- }
42
- /**
43
- * Build a HandshakeAck payload:
44
- * [32 bytes pubkey] [32 bytes echo-nonce] [64 bytes signature(echo-nonce)]
45
- */
46
- export async function buildHandshakeAck(publicKey, privateKey, remoteNonce) {
47
- const signature = await signData(privateKey, remoteNonce);
48
- const payload = new Uint8Array(32 + 32 + 64);
49
- payload.set(publicKey, 0);
50
- payload.set(remoteNonce, 32);
51
- payload.set(signature, 64);
52
- return payload;
53
- }
54
- /**
55
- * Verify a received HandshakeAck payload against the nonce we originally sent.
56
- */
57
- export async function verifyHandshakeAck(payload, originalNonce) {
58
- if (payload.length !== 128) {
59
- return { remotePubKey: new Uint8Array(32), valid: false };
60
- }
61
- const remotePubKey = payload.slice(0, 32);
62
- const echoNonce = payload.slice(32, 64);
63
- const signature = payload.slice(64, 128);
64
- // Verify that the echoed nonce matches what we sent
65
- const nonceMatches = originalNonce.every((b, i) => b === echoNonce[i]);
66
- if (!nonceMatches) {
67
- return { remotePubKey, valid: false };
68
- }
69
- const valid = await verifySignature(remotePubKey, signature, echoNonce);
70
- return { remotePubKey, valid };
71
- }
72
- /**
73
- * Perform the full handshake as the initiator.
74
- * Sends HandshakeInit, waits for HandshakeAck, verifies.
75
- */
76
- export async function performHandshake(conn, localPublicKey, localPrivateKey, sendFn, waitForMessage) {
77
- const { payload, nonce } = await buildHandshakeInit(localPublicKey, localPrivateKey);
78
- sendFn(MessageType.HandshakeInit, payload);
79
- const ackPayload = await waitForMessage(MessageType.HandshakeAck, HANDSHAKE_TIMEOUT_MS);
80
- const { remotePubKey, valid } = await verifyHandshakeAck(ackPayload, nonce);
81
- const remotePeerId = toPeerId(bytesToHex(remotePubKey));
82
- if (valid) {
83
- conn.setState(ConnectionState.Authenticated);
84
- }
85
- else {
86
- conn.setState(ConnectionState.Failed);
87
- }
88
- return { remotePeerId, verified: valid };
89
- }
90
- /**
91
- * Respond to a handshake as the responder.
92
- * Waits for HandshakeInit, verifies, sends HandshakeAck.
93
- */
94
- export async function respondToHandshake(conn, localPublicKey, localPrivateKey, sendFn, waitForMessage) {
95
- const initPayload = await waitForMessage(MessageType.HandshakeInit, HANDSHAKE_TIMEOUT_MS);
96
- const { remotePubKey, nonce, valid } = await verifyHandshakeInit(initPayload);
97
- if (!valid) {
98
- conn.setState(ConnectionState.Failed);
99
- return { remotePeerId: toPeerId(bytesToHex(remotePubKey)), verified: false };
100
- }
101
- const ackPayload = await buildHandshakeAck(localPublicKey, localPrivateKey, nonce);
102
- sendFn(MessageType.HandshakeAck, ackPayload);
103
- const remotePeerId = toPeerId(bytesToHex(remotePubKey));
104
- conn.setState(ConnectionState.Authenticated);
105
- return { remotePeerId, verified: true };
106
- }
107
- //# sourceMappingURL=handshake.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../src/p2p/handshake.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,89 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconnect.js","sourceRoot":"","sources":["../../src/p2p/reconnect.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { PeerId } from '../types/peer.js';
2
- import type { UsageReceipt } from '../types/metering.js';
3
- import type { PaymentDispute } from './types.js';
4
- export declare const DISPUTE_TIMEOUT_MS: number;
5
- export declare function createDispute(channel: {
6
- channelId: string;
7
- sessionId: string;
8
- }, initiatorPeerId: PeerId, reason: string, buyerReceipts: UsageReceipt[], sellerReceipts: UsageReceipt[]): PaymentDispute;
9
- export declare function detectDiscrepancy(buyerReceipts: UsageReceipt[], sellerReceipts: UsageReceipt[], thresholdPercent: number): {
10
- discrepancyDetected: boolean;
11
- buyerTotal: number;
12
- sellerTotal: number;
13
- diffPercent: number;
14
- };
15
- export declare function resolveDispute(dispute: PaymentDispute, resolution: string): PaymentDispute;
16
- export declare function isDisputeExpired(dispute: PaymentDispute): boolean;
17
- export declare function calculateDisputedAmount(buyerReceipts: UsageReceipt[], sellerReceipts: UsageReceipt[]): number;
18
- //# sourceMappingURL=disputes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disputes.d.ts","sourceRoot":"","sources":["../../src/payments/disputes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,kBAAkB,QAAsB,CAAC;AAEtD,wBAAgB,aAAa,CAC3B,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACjD,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,YAAY,EAAE,EAC7B,cAAc,EAAE,YAAY,EAAE,GAC7B,cAAc,CAchB;AAED,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,YAAY,EAAE,EAC7B,cAAc,EAAE,YAAY,EAAE,EAC9B,gBAAgB,EAAE,MAAM,GACvB;IAAE,mBAAmB,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAahG;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,GACjB,cAAc,CAOhB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAEjE;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,YAAY,EAAE,EAC7B,cAAc,EAAE,YAAY,EAAE,GAC7B,MAAM,CAIR"}
@@ -1,47 +0,0 @@
1
- import { randomUUID } from 'node:crypto';
2
- export const DISPUTE_TIMEOUT_MS = 72 * 60 * 60 * 1000;
3
- export function createDispute(channel, initiatorPeerId, reason, buyerReceipts, sellerReceipts) {
4
- return {
5
- disputeId: randomUUID(),
6
- channelId: channel.channelId,
7
- sessionId: channel.sessionId,
8
- initiatorPeerId,
9
- reason,
10
- status: 'open',
11
- buyerReceipts,
12
- sellerReceipts,
13
- createdAt: Date.now(),
14
- resolvedAt: null,
15
- resolution: null,
16
- };
17
- }
18
- export function detectDiscrepancy(buyerReceipts, sellerReceipts, thresholdPercent) {
19
- const buyerTotal = buyerReceipts.reduce((sum, r) => sum + r.tokens.totalTokens, 0);
20
- const sellerTotal = sellerReceipts.reduce((sum, r) => sum + r.tokens.totalTokens, 0);
21
- const max = Math.max(buyerTotal, sellerTotal);
22
- const diffPercent = max === 0 ? 0 : (Math.abs(buyerTotal - sellerTotal) / max) * 100;
23
- const discrepancyDetected = diffPercent > thresholdPercent;
24
- return {
25
- discrepancyDetected,
26
- buyerTotal,
27
- sellerTotal,
28
- diffPercent,
29
- };
30
- }
31
- export function resolveDispute(dispute, resolution) {
32
- return {
33
- ...dispute,
34
- status: 'resolved',
35
- resolvedAt: Date.now(),
36
- resolution,
37
- };
38
- }
39
- export function isDisputeExpired(dispute) {
40
- return Date.now() - dispute.createdAt > DISPUTE_TIMEOUT_MS;
41
- }
42
- export function calculateDisputedAmount(buyerReceipts, sellerReceipts) {
43
- const buyerTotalUsd = buyerReceipts.reduce((sum, r) => sum + r.costCents, 0) / 100;
44
- const sellerTotalUsd = sellerReceipts.reduce((sum, r) => sum + r.costCents, 0) / 100;
45
- return Math.abs(buyerTotalUsd - sellerTotalUsd);
46
- }
47
- //# sourceMappingURL=disputes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disputes.js","sourceRoot":"","sources":["../../src/payments/disputes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtD,MAAM,UAAU,aAAa,CAC3B,OAAiD,EACjD,eAAuB,EACvB,MAAc,EACd,aAA6B,EAC7B,cAA8B;IAE9B,OAAO;QACL,SAAS,EAAE,UAAU,EAAE;QACvB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,eAAe;QACf,MAAM;QACN,MAAM,EAAE,MAAM;QACd,aAAa;QACb,cAAc;QACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,aAA6B,EAC7B,cAA8B,EAC9B,gBAAwB;IAExB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACrF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACrF,MAAM,mBAAmB,GAAG,WAAW,GAAG,gBAAgB,CAAC;IAE3D,OAAO;QACL,mBAAmB;QACnB,UAAU;QACV,WAAW;QACX,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAAuB,EACvB,UAAkB;IAElB,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACtD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,kBAAkB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,aAA6B,EAC7B,cAA8B;IAE9B,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;IACnF,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;IACrF,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC;AAClD,CAAC"}
@@ -1,82 +0,0 @@
1
- import { type AbstractSigner } from 'ethers';
2
- import { BaseEvmClient } from './base-evm-client.js';
3
- export interface BaseEscrowConfig {
4
- /** Base JSON-RPC endpoint (e.g. http://127.0.0.1:8545 for anvil) */
5
- rpcUrl: string;
6
- /** Deployed AntseedEscrow contract address */
7
- contractAddress: string;
8
- /** USDC token contract address */
9
- usdcAddress: string;
10
- /** Confirmation commitment level (not used on EVM, reserved for future) */
11
- commitment?: 'latest' | 'finalized';
12
- }
13
- export interface SessionInfo {
14
- buyer: string;
15
- seller: string;
16
- maxAmount: bigint;
17
- nonce: bigint;
18
- deadline: bigint;
19
- previousConsumption: bigint;
20
- previousSessionId: string;
21
- reservedAt: bigint;
22
- settledAmount: bigint;
23
- settledTokenCount: bigint;
24
- tokenRate: bigint;
25
- status: number;
26
- isFirstSign: boolean;
27
- isProvenSign: boolean;
28
- isQualifiedProvenSign: boolean;
29
- }
30
- export interface BuyerBalanceInfo {
31
- available: bigint;
32
- reserved: bigint;
33
- pendingWithdrawal: bigint;
34
- lastActivityAt: bigint;
35
- }
36
- export interface SellerAccountInfo {
37
- stake: bigint;
38
- earnings: bigint;
39
- stakedAt: bigint;
40
- tokenRate: bigint;
41
- }
42
- export declare class BaseEscrowClient extends BaseEvmClient {
43
- private readonly _usdcAddress;
44
- constructor(config: BaseEscrowConfig);
45
- get usdcAddress(): string;
46
- private _prepareEscrowWrite;
47
- deposit(signer: AbstractSigner, amount: bigint): Promise<string>;
48
- depositFor(signer: AbstractSigner, buyer: string, amount: bigint): Promise<string>;
49
- requestWithdrawal(signer: AbstractSigner, amount: bigint): Promise<string>;
50
- executeWithdrawal(signer: AbstractSigner): Promise<string>;
51
- cancelWithdrawal(signer: AbstractSigner): Promise<string>;
52
- stake(signer: AbstractSigner, amount: bigint): Promise<string>;
53
- unstake(signer: AbstractSigner): Promise<string>;
54
- setTokenRate(signer: AbstractSigner, rate: bigint): Promise<string>;
55
- claimEarnings(signer: AbstractSigner): Promise<string>;
56
- reserve(signer: AbstractSigner, buyer: string, sessionId: string, maxAmount: bigint, nonce: bigint, deadline: bigint, previousConsumption: bigint, previousSessionId: string, buyerSig: string): Promise<string>;
57
- settle(signer: AbstractSigner, sessionId: string, tokenCount: bigint): Promise<string>;
58
- settleTimeout(signer: AbstractSigner, sessionId: string): Promise<string>;
59
- getBuyerBalance(buyerAddr: string): Promise<BuyerBalanceInfo>;
60
- getBuyerCreditLimit(buyerAddr: string): Promise<bigint>;
61
- getSellerAccount(sellerAddr: string): Promise<SellerAccountInfo>;
62
- getSession(sessionId: string): Promise<SessionInfo>;
63
- domainSeparator(): Promise<string>;
64
- getFirstSignCap(): Promise<bigint>;
65
- getLatestSessionId(buyerAddr: string, sellerAddr: string): Promise<string>;
66
- getFirstSessionTimestamp(buyerAddr: string, sellerAddr: string): Promise<bigint>;
67
- getProvenSignCooldown(): Promise<bigint>;
68
- /**
69
- * Fetch all data the buyer needs to display a payment approval card.
70
- * Batches multiple view calls in parallel.
71
- */
72
- getBuyerApprovalContext(buyerAddr: string, sellerAddr: string): Promise<{
73
- buyerBalance: BuyerBalanceInfo;
74
- firstSignCap: bigint;
75
- latestSessionId: string;
76
- firstSessionTimestamp: bigint;
77
- isFirstSign: boolean;
78
- cooldownRemainingSecs: number;
79
- }>;
80
- getUSDCBalance(ownerAddr: string): Promise<bigint>;
81
- }
82
- //# sourceMappingURL=escrow-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"escrow-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/escrow-client.ts"],"names":[],"mappings":"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"}