@antseed/node 0.2.27 → 0.2.28

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 (234) hide show
  1. package/README.md +14 -13
  2. package/dist/buyer-request-handler.d.ts +41 -0
  3. package/dist/buyer-request-handler.d.ts.map +1 -0
  4. package/dist/buyer-request-handler.js +254 -0
  5. package/dist/buyer-request-handler.js.map +1 -0
  6. package/dist/discovery/announcer.d.ts +5 -4
  7. package/dist/discovery/announcer.d.ts.map +1 -1
  8. package/dist/discovery/announcer.js +11 -18
  9. package/dist/discovery/announcer.js.map +1 -1
  10. package/dist/discovery/index.d.ts +0 -1
  11. package/dist/discovery/index.d.ts.map +1 -1
  12. package/dist/discovery/index.js +0 -1
  13. package/dist/discovery/index.js.map +1 -1
  14. package/dist/discovery/metadata-codec.d.ts +2 -2
  15. package/dist/discovery/metadata-codec.d.ts.map +1 -1
  16. package/dist/discovery/metadata-codec.js +47 -72
  17. package/dist/discovery/metadata-codec.js.map +1 -1
  18. package/dist/discovery/metadata-validator.js +6 -6
  19. package/dist/discovery/metadata-validator.js.map +1 -1
  20. package/dist/discovery/peer-lookup.d.ts.map +1 -1
  21. package/dist/discovery/peer-lookup.js +1 -2
  22. package/dist/discovery/peer-lookup.js.map +1 -1
  23. package/dist/discovery/peer-metadata.d.ts +3 -5
  24. package/dist/discovery/peer-metadata.d.ts.map +1 -1
  25. package/dist/discovery/peer-metadata.js +1 -1
  26. package/dist/discovery/reputation-verifier.d.ts +2 -25
  27. package/dist/discovery/reputation-verifier.d.ts.map +1 -1
  28. package/dist/discovery/reputation-verifier.js +2 -48
  29. package/dist/discovery/reputation-verifier.js.map +1 -1
  30. package/dist/discovery/stats-verifier.d.ts +27 -0
  31. package/dist/discovery/stats-verifier.d.ts.map +1 -0
  32. package/dist/discovery/stats-verifier.js +38 -0
  33. package/dist/discovery/stats-verifier.js.map +1 -0
  34. package/dist/index.d.ts +10 -7
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +8 -5
  37. package/dist/index.js.map +1 -1
  38. package/dist/metering/index.d.ts +1 -0
  39. package/dist/metering/index.d.ts.map +1 -1
  40. package/dist/metering/index.js +1 -0
  41. package/dist/metering/index.js.map +1 -1
  42. package/dist/metering/receipt-generator.d.ts +4 -4
  43. package/dist/metering/receipt-generator.d.ts.map +1 -1
  44. package/dist/metering/receipt-verifier.d.ts +6 -6
  45. package/dist/metering/receipt-verifier.d.ts.map +1 -1
  46. package/dist/metering/receipt-verifier.js +1 -1
  47. package/dist/metering/seller-session-tracker.d.ts +91 -0
  48. package/dist/metering/seller-session-tracker.d.ts.map +1 -0
  49. package/dist/metering/seller-session-tracker.js +261 -0
  50. package/dist/metering/seller-session-tracker.js.map +1 -0
  51. package/dist/metering/storage.d.ts +11 -5
  52. package/dist/metering/storage.d.ts.map +1 -1
  53. package/dist/metering/storage.js +28 -80
  54. package/dist/metering/storage.js.map +1 -1
  55. package/dist/node.d.ts +69 -117
  56. package/dist/node.d.ts.map +1 -1
  57. package/dist/node.js +240 -1269
  58. package/dist/node.js.map +1 -1
  59. package/dist/p2p/connection-auth.d.ts +2 -1
  60. package/dist/p2p/connection-auth.d.ts.map +1 -1
  61. package/dist/p2p/connection-auth.js +6 -6
  62. package/dist/p2p/connection-auth.js.map +1 -1
  63. package/dist/p2p/connection-manager.d.ts +3 -2
  64. package/dist/p2p/connection-manager.d.ts.map +1 -1
  65. package/dist/p2p/connection-manager.js +6 -6
  66. package/dist/p2p/connection-manager.js.map +1 -1
  67. package/dist/p2p/identity.d.ts +22 -15
  68. package/dist/p2p/identity.d.ts.map +1 -1
  69. package/dist/p2p/identity.js +66 -51
  70. package/dist/p2p/identity.js.map +1 -1
  71. package/dist/p2p/index.d.ts +1 -1
  72. package/dist/p2p/index.d.ts.map +1 -1
  73. package/dist/p2p/index.js +1 -1
  74. package/dist/p2p/index.js.map +1 -1
  75. package/dist/p2p/payment-codec.d.ts +4 -8
  76. package/dist/p2p/payment-codec.d.ts.map +1 -1
  77. package/dist/p2p/payment-codec.js +27 -57
  78. package/dist/p2p/payment-codec.js.map +1 -1
  79. package/dist/p2p/payment-mux.d.ts +4 -10
  80. package/dist/p2p/payment-mux.d.ts.map +1 -1
  81. package/dist/p2p/payment-mux.js +11 -33
  82. package/dist/p2p/payment-mux.js.map +1 -1
  83. package/dist/payments/balance-manager.d.ts +2 -2
  84. package/dist/payments/balance-manager.d.ts.map +1 -1
  85. package/dist/payments/balance-manager.js +5 -5
  86. package/dist/payments/balance-manager.js.map +1 -1
  87. package/dist/payments/buyer-payment-manager.d.ts +154 -21
  88. package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
  89. package/dist/payments/buyer-payment-manager.js +540 -166
  90. package/dist/payments/buyer-payment-manager.js.map +1 -1
  91. package/dist/payments/buyer-payment-negotiator.d.ts +84 -0
  92. package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -0
  93. package/dist/payments/buyer-payment-negotiator.js +624 -0
  94. package/dist/payments/buyer-payment-negotiator.js.map +1 -0
  95. package/dist/payments/chain-config.d.ts +10 -4
  96. package/dist/payments/chain-config.d.ts.map +1 -1
  97. package/dist/payments/chain-config.js +19 -9
  98. package/dist/payments/chain-config.js.map +1 -1
  99. package/dist/payments/channel-session-state.d.ts +13 -0
  100. package/dist/payments/channel-session-state.d.ts.map +1 -0
  101. package/dist/payments/channel-session-state.js +25 -0
  102. package/dist/payments/channel-session-state.js.map +1 -0
  103. package/dist/payments/channel-store.d.ts +87 -0
  104. package/dist/payments/channel-store.d.ts.map +1 -0
  105. package/dist/payments/channel-store.js +276 -0
  106. package/dist/payments/channel-store.js.map +1 -0
  107. package/dist/payments/evm/ants-token-client.d.ts +1 -1
  108. package/dist/payments/evm/ants-token-client.d.ts.map +1 -1
  109. package/dist/payments/evm/ants-token-client.js +3 -4
  110. package/dist/payments/evm/ants-token-client.js.map +1 -1
  111. package/dist/payments/evm/base-evm-client.d.ts +10 -1
  112. package/dist/payments/evm/base-evm-client.d.ts.map +1 -1
  113. package/dist/payments/evm/base-evm-client.js +34 -1
  114. package/dist/payments/evm/base-evm-client.js.map +1 -1
  115. package/dist/payments/evm/channels-client.d.ts +51 -0
  116. package/dist/payments/evm/channels-client.d.ts.map +1 -0
  117. package/dist/payments/evm/channels-client.js +101 -0
  118. package/dist/payments/evm/channels-client.js.map +1 -0
  119. package/dist/payments/evm/deposits-client.d.ts +30 -0
  120. package/dist/payments/evm/deposits-client.d.ts.map +1 -0
  121. package/dist/payments/evm/deposits-client.js +78 -0
  122. package/dist/payments/evm/deposits-client.js.map +1 -0
  123. package/dist/payments/evm/emissions-client.d.ts +3 -4
  124. package/dist/payments/evm/emissions-client.d.ts.map +1 -1
  125. package/dist/payments/evm/emissions-client.js +11 -30
  126. package/dist/payments/evm/emissions-client.js.map +1 -1
  127. package/dist/payments/evm/identity-client.d.ts +10 -23
  128. package/dist/payments/evm/identity-client.d.ts.map +1 -1
  129. package/dist/payments/evm/identity-client.js +43 -100
  130. package/dist/payments/evm/identity-client.js.map +1 -1
  131. package/dist/payments/evm/keypair.d.ts +3 -14
  132. package/dist/payments/evm/keypair.d.ts.map +1 -1
  133. package/dist/payments/evm/keypair.js +4 -20
  134. package/dist/payments/evm/keypair.js.map +1 -1
  135. package/dist/payments/evm/sessions-client.d.ts +30 -0
  136. package/dist/payments/evm/sessions-client.d.ts.map +1 -0
  137. package/dist/payments/evm/sessions-client.js +61 -0
  138. package/dist/payments/evm/sessions-client.js.map +1 -0
  139. package/dist/payments/evm/signatures.d.ts +43 -12
  140. package/dist/payments/evm/signatures.d.ts.map +1 -1
  141. package/dist/payments/evm/signatures.js +62 -45
  142. package/dist/payments/evm/signatures.js.map +1 -1
  143. package/dist/payments/evm/staking-client.d.ts +24 -0
  144. package/dist/payments/evm/staking-client.d.ts.map +1 -0
  145. package/dist/payments/evm/staking-client.js +54 -0
  146. package/dist/payments/evm/staking-client.js.map +1 -0
  147. package/dist/payments/evm/stats-client.d.ts +20 -0
  148. package/dist/payments/evm/stats-client.d.ts.map +1 -0
  149. package/dist/payments/evm/stats-client.js +25 -0
  150. package/dist/payments/evm/stats-client.js.map +1 -0
  151. package/dist/payments/index.d.ts +17 -10
  152. package/dist/payments/index.d.ts.map +1 -1
  153. package/dist/payments/index.js +15 -8
  154. package/dist/payments/index.js.map +1 -1
  155. package/dist/payments/pricing.d.ts +25 -0
  156. package/dist/payments/pricing.d.ts.map +1 -0
  157. package/dist/payments/pricing.js +33 -0
  158. package/dist/payments/pricing.js.map +1 -0
  159. package/dist/payments/readiness.d.ts +4 -3
  160. package/dist/payments/readiness.d.ts.map +1 -1
  161. package/dist/payments/readiness.js +11 -18
  162. package/dist/payments/readiness.js.map +1 -1
  163. package/dist/payments/seller-payment-manager.d.ts +72 -47
  164. package/dist/payments/seller-payment-manager.d.ts.map +1 -1
  165. package/dist/payments/seller-payment-manager.js +558 -275
  166. package/dist/payments/seller-payment-manager.js.map +1 -1
  167. package/dist/payments/session-store.d.ts +3 -0
  168. package/dist/payments/session-store.d.ts.map +1 -1
  169. package/dist/payments/session-store.js +31 -2
  170. package/dist/payments/session-store.js.map +1 -1
  171. package/dist/payments/types.d.ts +5 -3
  172. package/dist/payments/types.d.ts.map +1 -1
  173. package/dist/proxy/proxy-mux.d.ts.map +1 -1
  174. package/dist/proxy/proxy-mux.js +3 -2
  175. package/dist/proxy/proxy-mux.js.map +1 -1
  176. package/dist/proxy/request-codec.d.ts.map +1 -1
  177. package/dist/proxy/request-codec.js +3 -0
  178. package/dist/proxy/request-codec.js.map +1 -1
  179. package/dist/reputation/rating-manager.d.ts.map +1 -1
  180. package/dist/reputation/rating-manager.js +2 -4
  181. package/dist/reputation/rating-manager.js.map +1 -1
  182. package/dist/reputation/report-manager.d.ts.map +1 -1
  183. package/dist/reputation/report-manager.js +2 -4
  184. package/dist/reputation/report-manager.js.map +1 -1
  185. package/dist/routing/default-router.d.ts.map +1 -1
  186. package/dist/routing/default-router.js +4 -9
  187. package/dist/routing/default-router.js.map +1 -1
  188. package/dist/seller-request-handler.d.ts +54 -0
  189. package/dist/seller-request-handler.d.ts.map +1 -0
  190. package/dist/seller-request-handler.js +359 -0
  191. package/dist/seller-request-handler.js.map +1 -0
  192. package/dist/storage/migrate.d.ts +13 -0
  193. package/dist/storage/migrate.d.ts.map +1 -0
  194. package/dist/storage/migrate.js +28 -0
  195. package/dist/storage/migrate.js.map +1 -0
  196. package/dist/storage/migrations/channels/001_create_tables.d.ts +3 -0
  197. package/dist/storage/migrations/channels/001_create_tables.d.ts.map +1 -0
  198. package/dist/storage/migrations/channels/001_create_tables.js +45 -0
  199. package/dist/storage/migrations/channels/001_create_tables.js.map +1 -0
  200. package/dist/storage/migrations/channels/002_add_auth_sig_columns.d.ts +3 -0
  201. package/dist/storage/migrations/channels/002_add_auth_sig_columns.d.ts.map +1 -0
  202. package/dist/storage/migrations/channels/002_add_auth_sig_columns.js +19 -0
  203. package/dist/storage/migrations/channels/002_add_auth_sig_columns.js.map +1 -0
  204. package/dist/storage/migrations/channels/index.d.ts +3 -0
  205. package/dist/storage/migrations/channels/index.d.ts.map +1 -0
  206. package/dist/storage/migrations/channels/index.js +4 -0
  207. package/dist/storage/migrations/channels/index.js.map +1 -0
  208. package/dist/storage/migrations/metering/001_create_tables.d.ts +3 -0
  209. package/dist/storage/migrations/metering/001_create_tables.d.ts.map +1 -0
  210. package/dist/storage/migrations/metering/001_create_tables.js +80 -0
  211. package/dist/storage/migrations/metering/001_create_tables.js.map +1 -0
  212. package/dist/storage/migrations/metering/index.d.ts +3 -0
  213. package/dist/storage/migrations/metering/index.d.ts.map +1 -0
  214. package/dist/storage/migrations/metering/index.js +3 -0
  215. package/dist/storage/migrations/metering/index.js.map +1 -0
  216. package/dist/types/capability.d.ts +1 -1
  217. package/dist/types/metering.d.ts +1 -1
  218. package/dist/types/peer.d.ts +10 -11
  219. package/dist/types/peer.d.ts.map +1 -1
  220. package/dist/types/peer.js +7 -3
  221. package/dist/types/peer.js.map +1 -1
  222. package/dist/types/protocol.d.ts +22 -70
  223. package/dist/types/protocol.d.ts.map +1 -1
  224. package/dist/types/protocol.js +1 -3
  225. package/dist/types/protocol.js.map +1 -1
  226. package/dist/types/rating.d.ts +1 -1
  227. package/dist/types/rating.d.ts.map +1 -1
  228. package/dist/types/report.d.ts +1 -1
  229. package/dist/types/report.d.ts.map +1 -1
  230. package/dist/utils/response-usage.d.ts +10 -0
  231. package/dist/utils/response-usage.d.ts.map +1 -0
  232. package/dist/utils/response-usage.js +34 -0
  233. package/dist/utils/response-usage.js.map +1 -0
  234. package/package.json +3 -3
@@ -1,125 +1,68 @@
1
- import { Contract, encodeBytes32String, keccak256, toUtf8Bytes } from 'ethers';
1
+ import { Contract } from 'ethers';
2
2
  import { BaseEvmClient } from './base-evm-client.js';
3
- const IDENTITY_ABI = [
3
+ const IDENTITY_REGISTRY_ABI = [
4
4
  // Registration
5
- 'function register(bytes32 peerId, string metadataURI) external returns (uint256)',
6
- 'function deregister(uint256 tokenId) external',
7
- 'function updateMetadata(uint256 tokenId, string metadataURI) external',
5
+ 'function register() external returns (uint256)',
6
+ 'function register(string uri) external returns (uint256)',
8
7
  // View — identity lookups
9
- 'function isRegistered(address addr) external view returns (bool)',
10
- 'function getTokenId(address addr) external view returns (uint256)',
11
- 'function getTokenIdByPeerId(bytes32 peerId) external view returns (uint256)',
12
- 'function getPeerId(uint256 tokenId) external view returns (bytes32)',
13
- // Reputation
14
- 'function getReputation(uint256 tokenId) external view returns (uint64 firstSignCount, uint64 qualifiedProvenSignCount, uint64 unqualifiedProvenSignCount, uint64 ghostCount, uint256 totalQualifiedTokenVolume, uint64 lastProvenAt)',
15
- 'function updateReputation(uint256 tokenId, tuple(uint8 updateType, uint256 tokenVolume) update) external',
16
- // Feedback (ERC-8004)
17
- 'function giveFeedback(uint256 agentId, int128 value, uint8 valueDecimals, bytes32 tag1, bytes32 tag2) external',
18
- 'function getSummary(uint256 agentId, bytes32 tag) external view returns (uint256 count, int256 summaryValue, uint8 summaryValueDecimals)',
19
- 'function readFeedback(uint256 agentId, address client, uint256 index) external view returns (tuple(address client, int128 value, uint8 valueDecimals, bytes32 tag1, bytes32 tag2, uint64 timestamp, bool revoked))',
20
- 'function revokeFeedback(uint256 agentId, uint256 index) external',
21
- 'function getFeedbackCount(uint256 agentId, address client) external view returns (uint256)',
22
- // Admin
23
- 'function setEscrowContract(address _escrow) external',
24
- 'function escrowContract() external view returns (address)',
25
- 'function owner() external view returns (address)',
8
+ 'function ownerOf(uint256 agentId) external view returns (address)',
9
+ 'function balanceOf(address owner) external view returns (uint256)',
10
+ // Metadata
11
+ 'function setMetadata(uint256 agentId, string key, bytes value) external',
12
+ 'function getMetadata(uint256 agentId, string key) external view returns (bytes)',
13
+ 'function setAgentURI(uint256 agentId, string uri) external',
26
14
  ];
27
15
  export class IdentityClient extends BaseEvmClient {
28
16
  constructor(config) {
29
17
  super(config.rpcUrl, config.contractAddress);
30
18
  }
31
19
  // ── Write methods ──────────────────────────────────────────────────
32
- async register(signer, peerId, metadataURI) {
20
+ /**
21
+ * Register a new agent identity via ERC-8004 IdentityRegistry.
22
+ * Returns the new agentId. The peerId is the signer's EVM address
23
+ * (ownerOf(agentId)), so no separate metadata storage is needed.
24
+ */
25
+ async register(signer, metadataURI) {
33
26
  const connected = this._ensureConnected(signer);
34
27
  const signerAddress = await connected.getAddress();
35
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, connected);
28
+ const contract = new Contract(this._contractAddress, IDENTITY_REGISTRY_ABI, connected);
29
+ let tx;
36
30
  const nonce = await this._reserveNonce(signerAddress);
37
- const peerIdBytes = keccak256(toUtf8Bytes(peerId));
38
- const tx = await contract.getFunction('register')(peerIdBytes, metadataURI, { nonce });
31
+ if (metadataURI) {
32
+ tx = await contract.getFunction('register(string)')(metadataURI, { nonce });
33
+ }
34
+ else {
35
+ tx = await contract.getFunction('register()')({ nonce });
36
+ }
39
37
  const receipt = await tx.wait();
40
38
  if (!receipt)
41
39
  throw new Error('Transaction was dropped or replaced');
42
- return receipt.hash;
40
+ // Extract agentId from Transfer event (ERC-721 Transfer(address,address,uint256))
41
+ const transferTopic = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
42
+ const transferLog = receipt.logs.find((l) => l.topics?.[0] === transferTopic);
43
+ const rawAgentId = transferLog?.topics?.[3];
44
+ return rawAgentId ? Number(BigInt(rawAgentId)) : 0;
43
45
  }
44
- async deregister(signer, tokenId) {
45
- const connected = this._ensureConnected(signer);
46
- const signerAddress = await connected.getAddress();
47
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, connected);
48
- const nonce = await this._reserveNonce(signerAddress);
49
- const tx = await contract.getFunction('deregister')(tokenId, { nonce });
50
- const receipt = await tx.wait();
51
- if (!receipt)
52
- throw new Error('Transaction was dropped or replaced');
53
- return receipt.hash;
46
+ async setMetadata(signer, agentId, key, value) {
47
+ return this._execWrite(signer, IDENTITY_REGISTRY_ABI, 'setMetadata', agentId, key, value);
54
48
  }
55
- async updateMetadata(signer, tokenId, metadataURI) {
56
- const connected = this._ensureConnected(signer);
57
- const signerAddress = await connected.getAddress();
58
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, connected);
59
- const nonce = await this._reserveNonce(signerAddress);
60
- const tx = await contract.getFunction('updateMetadata')(tokenId, metadataURI, { nonce });
61
- const receipt = await tx.wait();
62
- if (!receipt)
63
- throw new Error('Transaction was dropped or replaced');
64
- return receipt.hash;
65
- }
66
- async submitFeedback(signer, agentId, value, tag) {
67
- const connected = this._ensureConnected(signer);
68
- const signerAddress = await connected.getAddress();
69
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, connected);
70
- const nonce = await this._reserveNonce(signerAddress);
71
- const tagBytes = encodeBytes32String(tag);
72
- const tx = await contract.getFunction('giveFeedback')(agentId, value, 0, tagBytes, tagBytes, { nonce });
73
- const receipt = await tx.wait();
74
- if (!receipt)
75
- throw new Error('Transaction was dropped or replaced');
76
- return receipt.hash;
49
+ async setAgentURI(signer, agentId, uri) {
50
+ return this._execWrite(signer, IDENTITY_REGISTRY_ABI, 'setAgentURI', agentId, uri);
77
51
  }
78
52
  // ── View methods ───────────────────────────────────────────────────
79
53
  async isRegistered(address) {
80
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, this._provider);
81
- return contract.getFunction('isRegistered')(address);
82
- }
83
- async getTokenId(address) {
84
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, this._provider);
85
- const result = await contract.getFunction('getTokenId')(address);
86
- return Number(result);
87
- }
88
- async getTokenIdByPeerId(peerId) {
89
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, this._provider);
90
- const peerIdBytes = keccak256(toUtf8Bytes(peerId));
91
- const result = await contract.getFunction('getTokenIdByPeerId')(peerIdBytes);
92
- return Number(result);
93
- }
94
- async getPeerId(tokenId) {
95
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, this._provider);
96
- return contract.getFunction('getPeerId')(tokenId);
97
- }
98
- async getReputation(tokenId) {
99
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, this._provider);
100
- const result = await contract.getFunction('getReputation')(tokenId);
101
- return {
102
- firstSignCount: Number(result[0]),
103
- qualifiedProvenSignCount: Number(result[1]),
104
- unqualifiedProvenSignCount: Number(result[2]),
105
- ghostCount: Number(result[3]),
106
- totalQualifiedTokenVolume: result[4],
107
- lastProvenAt: Number(result[5]),
108
- };
54
+ const contract = new Contract(this._contractAddress, IDENTITY_REGISTRY_ABI, this._provider);
55
+ const balance = await contract.getFunction('balanceOf')(address);
56
+ return Number(balance) > 0;
109
57
  }
110
- async getReputationByPeerId(peerId) {
111
- const tokenId = await this.getTokenIdByPeerId(peerId);
112
- return this.getReputation(tokenId);
58
+ async getAgentWallet(agentId) {
59
+ const contract = new Contract(this._contractAddress, IDENTITY_REGISTRY_ABI, this._provider);
60
+ return contract.getFunction('ownerOf')(agentId);
113
61
  }
114
- async getFeedbackSummary(agentId, tag) {
115
- const contract = new Contract(this._contractAddress, IDENTITY_ABI, this._provider);
116
- const tagBytes = encodeBytes32String(tag);
117
- const result = await contract.getFunction('getSummary')(agentId, tagBytes);
118
- return {
119
- count: Number(result[0]),
120
- summaryValue: result[1],
121
- summaryValueDecimals: Number(result[2]),
122
- };
62
+ async getMetadata(agentId, key) {
63
+ const contract = new Contract(this._contractAddress, IDENTITY_REGISTRY_ABI, this._provider);
64
+ const result = await contract.getFunction('getMetadata')(agentId, key);
65
+ return new Uint8Array(Buffer.from(result.slice(2), 'hex'));
123
66
  }
124
67
  }
125
68
  //# sourceMappingURL=identity-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-client.js","sourceRoot":"","sources":["../../../src/payments/evm/identity-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-client.js","sourceRoot":"","sources":["../../../src/payments/evm/identity-client.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,10 @@
1
- import { Wallet } from 'ethers';
2
1
  import type { Identity } from '../../p2p/identity.js';
3
2
  /**
4
- * Derive a secp256k1 private key from the Ed25519 identity seed.
5
- * Domain-separated to ensure the derived key is independent from the Ed25519 key.
6
- *
7
- * Derivation: keccak256(ed25519_seed || "evm-payment-key") → secp256k1 private key
8
- *
9
- * The Ed25519 seed (identity.privateKey) is 32 bytes. We append a fixed
10
- * domain separator string to prevent the derived key from colliding with
11
- * any other use of the same seed. keccak256 produces a 32-byte output
12
- * which is a valid secp256k1 private key (the probability of hitting an
13
- * invalid key is astronomically low: ~1/2^128).
3
+ * @deprecated Identity IS the EVM wallet now. Use identity.wallet directly.
14
4
  */
15
- export declare function identityToEvmWallet(identity: Identity): Wallet;
5
+ export declare function identityToEvmWallet(identity: Identity): import("ethers").Wallet;
16
6
  /**
17
- * Get the EVM address (0x-prefixed hex) for a Antseed Identity.
18
- * This is the address that appears on-chain as the buyer or seller.
7
+ * @deprecated Identity peerId IS the EVM address. Use `'0x' + identity.peerId` or `identity.wallet.address`.
19
8
  */
20
9
  export declare function identityToEvmAddress(identity: Identity): string;
21
10
  //# sourceMappingURL=keypair.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keypair.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/keypair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAO9D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAE/D"}
1
+ {"version":3,"file":"keypair.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/keypair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,2BAErD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAE/D"}
@@ -1,29 +1,13 @@
1
- import { Wallet, keccak256 } from 'ethers';
2
1
  /**
3
- * Derive a secp256k1 private key from the Ed25519 identity seed.
4
- * Domain-separated to ensure the derived key is independent from the Ed25519 key.
5
- *
6
- * Derivation: keccak256(ed25519_seed || "evm-payment-key") → secp256k1 private key
7
- *
8
- * The Ed25519 seed (identity.privateKey) is 32 bytes. We append a fixed
9
- * domain separator string to prevent the derived key from colliding with
10
- * any other use of the same seed. keccak256 produces a 32-byte output
11
- * which is a valid secp256k1 private key (the probability of hitting an
12
- * invalid key is astronomically low: ~1/2^128).
2
+ * @deprecated Identity IS the EVM wallet now. Use identity.wallet directly.
13
3
  */
14
4
  export function identityToEvmWallet(identity) {
15
- const domainSeparator = new TextEncoder().encode('evm-payment-key');
16
- const combined = new Uint8Array(identity.privateKey.length + domainSeparator.length);
17
- combined.set(identity.privateKey, 0);
18
- combined.set(domainSeparator, identity.privateKey.length);
19
- const privateKey = keccak256(combined);
20
- return new Wallet(privateKey);
5
+ return identity.wallet;
21
6
  }
22
7
  /**
23
- * Get the EVM address (0x-prefixed hex) for a Antseed Identity.
24
- * This is the address that appears on-chain as the buyer or seller.
8
+ * @deprecated Identity peerId IS the EVM address. Use `'0x' + identity.peerId` or `identity.wallet.address`.
25
9
  */
26
10
  export function identityToEvmAddress(identity) {
27
- return identityToEvmWallet(identity).address;
11
+ return identity.wallet.address;
28
12
  }
29
13
  //# sourceMappingURL=keypair.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keypair.js","sourceRoot":"","sources":["../../../src/payments/evm/keypair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAG3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACpD,MAAM,eAAe,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACrF,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACrD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"keypair.js","sourceRoot":"","sources":["../../../src/payments/evm/keypair.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACpD,OAAO,QAAQ,CAAC,MAAM,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACrD,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type AbstractSigner } from 'ethers';
2
+ import { BaseEvmClient } from './base-evm-client.js';
3
+ export interface SessionsClientConfig {
4
+ rpcUrl: string;
5
+ contractAddress: string;
6
+ }
7
+ export interface SessionInfo {
8
+ buyer: string;
9
+ seller: string;
10
+ deposit: bigint;
11
+ settled: bigint;
12
+ metadataHash: string;
13
+ deadline: bigint;
14
+ settledAt: bigint;
15
+ closeRequestedAt: bigint;
16
+ status: number;
17
+ }
18
+ export declare class SessionsClient extends BaseEvmClient {
19
+ constructor(config: SessionsClientConfig);
20
+ reserve(signer: AbstractSigner, buyer: string, salt: string, maxAmount: bigint, deadline: bigint, buyerSig: string): Promise<string>;
21
+ settle(signer: AbstractSigner, channelId: string, cumulativeAmount: bigint, metadata: string, buyerSig: string): Promise<string>;
22
+ close(signer: AbstractSigner, channelId: string, finalAmount: bigint, metadata: string, buyerSig: string): Promise<string>;
23
+ requestTimeout(signer: AbstractSigner, channelId: string): Promise<string>;
24
+ withdraw(signer: AbstractSigner, channelId: string): Promise<string>;
25
+ getSession(channelId: string): Promise<SessionInfo>;
26
+ domainSeparator(): Promise<string>;
27
+ getFirstSignCap(): Promise<bigint>;
28
+ computeChannelId(buyer: string, seller: string, salt: string): Promise<string>;
29
+ }
30
+ //# sourceMappingURL=sessions-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/sessions-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD,qBAAa,cAAe,SAAQ,aAAa;gBACnC,MAAM,EAAE,oBAAoB;IAIlC,OAAO,CACX,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAOZ,MAAM,CACV,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAOZ,KAAK,CACT,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAOZ,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1E,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgBnD,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAIrF"}
@@ -0,0 +1,61 @@
1
+ import { Contract } from 'ethers';
2
+ import { BaseEvmClient } from './base-evm-client.js';
3
+ const SESSIONS_ABI = [
4
+ 'function reserve(address buyer, bytes32 salt, uint128 maxAmount, uint256 deadline, bytes buyerSig) external',
5
+ 'function settle(bytes32 channelId, uint128 cumulativeAmount, bytes metadata, bytes buyerSig) external',
6
+ 'function close(bytes32 channelId, uint128 finalAmount, bytes metadata, bytes buyerSig) external',
7
+ 'function requestTimeout(bytes32 channelId) external',
8
+ 'function withdraw(bytes32 channelId) external',
9
+ 'function sessions(bytes32 channelId) external view returns (address buyer, address seller, uint128 deposit, uint128 settled, bytes32 metadataHash, uint256 deadline, uint256 settledAt, uint256 closeRequestedAt, uint8 status)',
10
+ 'function computeChannelId(address buyer, address seller, bytes32 salt) external pure returns (bytes32)',
11
+ 'function domainSeparator() external view returns (bytes32)',
12
+ 'function FIRST_SIGN_CAP() external view returns (uint256)',
13
+ ];
14
+ export class SessionsClient extends BaseEvmClient {
15
+ constructor(config) {
16
+ super(config.rpcUrl, config.contractAddress);
17
+ }
18
+ async reserve(signer, buyer, salt, maxAmount, deadline, buyerSig) {
19
+ return this._execWrite(signer, SESSIONS_ABI, 'reserve', buyer, salt, maxAmount, deadline, buyerSig);
20
+ }
21
+ async settle(signer, channelId, cumulativeAmount, metadata, buyerSig) {
22
+ return this._execWrite(signer, SESSIONS_ABI, 'settle', channelId, cumulativeAmount, metadata, buyerSig);
23
+ }
24
+ async close(signer, channelId, finalAmount, metadata, buyerSig) {
25
+ return this._execWrite(signer, SESSIONS_ABI, 'close', channelId, finalAmount, metadata, buyerSig);
26
+ }
27
+ async requestTimeout(signer, channelId) {
28
+ return this._execWrite(signer, SESSIONS_ABI, 'requestTimeout', channelId);
29
+ }
30
+ async withdraw(signer, channelId) {
31
+ return this._execWrite(signer, SESSIONS_ABI, 'withdraw', channelId);
32
+ }
33
+ async getSession(channelId) {
34
+ const contract = new Contract(this._contractAddress, SESSIONS_ABI, this._provider);
35
+ const result = await contract.getFunction('sessions')(channelId);
36
+ return {
37
+ buyer: result[0],
38
+ seller: result[1],
39
+ deposit: result[2],
40
+ settled: result[3],
41
+ metadataHash: result[4],
42
+ deadline: result[5],
43
+ settledAt: result[6],
44
+ closeRequestedAt: result[7],
45
+ status: Number(result[8]),
46
+ };
47
+ }
48
+ async domainSeparator() {
49
+ const contract = new Contract(this._contractAddress, SESSIONS_ABI, this._provider);
50
+ return contract.getFunction('domainSeparator')();
51
+ }
52
+ async getFirstSignCap() {
53
+ const contract = new Contract(this._contractAddress, SESSIONS_ABI, this._provider);
54
+ return contract.getFunction('FIRST_SIGN_CAP')();
55
+ }
56
+ async computeChannelId(buyer, seller, salt) {
57
+ const contract = new Contract(this._contractAddress, SESSIONS_ABI, this._provider);
58
+ return contract.getFunction('computeChannelId')(buyer, seller, salt);
59
+ }
60
+ }
61
+ //# sourceMappingURL=sessions-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions-client.js","sourceRoot":"","sources":["../../../src/payments/evm/sessions-client.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,55 @@
1
1
  import { type AbstractSigner, type TypedDataDomain } from 'ethers';
2
- import type { Identity } from '../../p2p/identity.js';
3
2
  export declare const SPENDING_AUTH_TYPES: {
4
3
  SpendingAuth: {
5
4
  name: string;
6
5
  type: string;
7
6
  }[];
8
7
  };
8
+ export declare const RESERVE_AUTH_TYPES: {
9
+ ReserveAuth: {
10
+ name: string;
11
+ type: string;
12
+ }[];
13
+ };
14
+ export declare const SET_OPERATOR_TYPES: {
15
+ SetOperator: {
16
+ name: string;
17
+ type: string;
18
+ }[];
19
+ };
9
20
  export interface SpendingAuthMessage {
10
- seller: string;
11
- sessionId: string;
21
+ channelId: string;
22
+ cumulativeAmount: bigint;
23
+ metadataHash: string;
24
+ }
25
+ export interface ReserveAuthMessage {
26
+ channelId: string;
12
27
  maxAmount: bigint;
13
- nonce: number;
14
- deadline: number;
15
- previousConsumption: bigint;
16
- previousSessionId: string;
28
+ deadline: bigint;
29
+ }
30
+ export interface SetOperatorMessage {
31
+ operator: string;
32
+ nonce: bigint;
33
+ }
34
+ export interface SpendingAuthMetadata {
35
+ cumulativeInputTokens: bigint;
36
+ cumulativeOutputTokens: bigint;
37
+ cumulativeLatencyMs: bigint;
38
+ cumulativeRequestCount: bigint;
17
39
  }
18
- export declare function makeEscrowDomain(chainId: number, contractAddress: string): TypedDataDomain;
40
+ export declare const METADATA_VERSION = 1n;
41
+ export declare function encodeMetadata(metadata: SpendingAuthMetadata): string;
42
+ export declare function computeMetadataHash(metadata: SpendingAuthMetadata): string;
43
+ export declare const ZERO_METADATA: SpendingAuthMetadata;
44
+ export declare const ZERO_METADATA_HASH: string;
45
+ /**
46
+ * Compute the deterministic channelId.
47
+ * Must match: keccak256(abi.encode(buyer, seller, salt))
48
+ */
49
+ export declare function computeChannelId(buyer: string, seller: string, salt: string): string;
50
+ export declare function makeChannelsDomain(chainId: number, contractAddress: string): TypedDataDomain;
51
+ export declare function makeDepositsDomain(chainId: number, contractAddress: string): TypedDataDomain;
19
52
  export declare function signSpendingAuth(signer: AbstractSigner, domain: TypedDataDomain, msg: SpendingAuthMessage): Promise<string>;
20
- export declare function buildReceiptMessage(sessionId: Uint8Array, runningTotal: bigint, requestCount: number, responseHash: Uint8Array): Uint8Array;
21
- export declare function buildAckMessage(sessionId: Uint8Array, runningTotal: bigint, requestCount: number): Uint8Array;
22
- export declare function signMessageEd25519(identity: Identity, message: Uint8Array): Promise<Uint8Array>;
23
- export declare function verifyMessageEd25519(publicKey: Uint8Array, signature: Uint8Array, message: Uint8Array): Promise<boolean>;
53
+ export declare function signReserveAuth(signer: AbstractSigner, domain: TypedDataDomain, msg: ReserveAuthMessage): Promise<string>;
54
+ export declare function signSetOperator(signer: AbstractSigner, domain: TypedDataDomain, msg: SetOperatorMessage): Promise<string>;
24
55
  //# sourceMappingURL=signatures.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/signatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOtD,eAAO,MAAM,mBAAmB;;;;;CAU/B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,eAAe,CAO1F;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAMD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,UAAU,EACrB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,GACvB,UAAU,CAaZ;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,UAAU,EACrB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,UAAU,CAWZ;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,UAAU,CAAC,CAErB;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB"}
1
+ {"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/signatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAuB,MAAM,QAAQ,CAAC;AAMxF,eAAO,MAAM,mBAAmB;;;;;CAM/B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;CAM9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;CAK9B,CAAC;AAMF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,MAAM,WAAW,oBAAoB;IACnC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAMrE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAE1E;AAED,eAAO,MAAM,aAAa,EAAE,oBAK3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAA2C,CAAC;AAM7E;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,MAAM,CAMR;AAMD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,eAAe,CAO5F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,eAAe,CAO5F;AAMD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,MAAM,CAAC,CAEjB"}
@@ -1,65 +1,82 @@
1
- import { signData, verifySignature } from '../../p2p/identity.js';
1
+ import { AbiCoder, keccak256 } from 'ethers';
2
2
  // =========================================================================
3
- // EIP-712 Spending Authorization (on-chain) verified by contract
3
+ // EIP-712 Types AntSeed SpendingAuth (cumulative payment authorization)
4
4
  // =========================================================================
5
5
  export const SPENDING_AUTH_TYPES = {
6
6
  SpendingAuth: [
7
- { name: 'seller', type: 'address' },
8
- { name: 'sessionId', type: 'bytes32' },
9
- { name: 'maxAmount', type: 'uint256' },
10
- { name: 'nonce', type: 'uint256' },
7
+ { name: 'channelId', type: 'bytes32' },
8
+ { name: 'cumulativeAmount', type: 'uint256' },
9
+ { name: 'metadataHash', type: 'bytes32' },
10
+ ],
11
+ };
12
+ export const RESERVE_AUTH_TYPES = {
13
+ ReserveAuth: [
14
+ { name: 'channelId', type: 'bytes32' },
15
+ { name: 'maxAmount', type: 'uint128' },
11
16
  { name: 'deadline', type: 'uint256' },
12
- { name: 'previousConsumption', type: 'uint256' },
13
- { name: 'previousSessionId', type: 'bytes32' },
14
17
  ],
15
18
  };
16
- export function makeEscrowDomain(chainId, contractAddress) {
19
+ export const SET_OPERATOR_TYPES = {
20
+ SetOperator: [
21
+ { name: 'operator', type: 'address' },
22
+ { name: 'nonce', type: 'uint256' },
23
+ ],
24
+ };
25
+ export const METADATA_VERSION = 1n;
26
+ export function encodeMetadata(metadata) {
27
+ const coder = AbiCoder.defaultAbiCoder();
28
+ return coder.encode(['uint256', 'uint256', 'uint256', 'uint256', 'uint256'], [METADATA_VERSION, metadata.cumulativeInputTokens, metadata.cumulativeOutputTokens, metadata.cumulativeLatencyMs, metadata.cumulativeRequestCount]);
29
+ }
30
+ export function computeMetadataHash(metadata) {
31
+ return keccak256(encodeMetadata(metadata));
32
+ }
33
+ export const ZERO_METADATA = {
34
+ cumulativeInputTokens: 0n,
35
+ cumulativeOutputTokens: 0n,
36
+ cumulativeLatencyMs: 0n,
37
+ cumulativeRequestCount: 0n,
38
+ };
39
+ export const ZERO_METADATA_HASH = computeMetadataHash(ZERO_METADATA);
40
+ // =========================================================================
41
+ // Channel ID computation (must match AntseedChannels.computeChannelId)
42
+ // =========================================================================
43
+ /**
44
+ * Compute the deterministic channelId.
45
+ * Must match: keccak256(abi.encode(buyer, seller, salt))
46
+ */
47
+ export function computeChannelId(buyer, seller, salt) {
48
+ const coder = AbiCoder.defaultAbiCoder();
49
+ return keccak256(coder.encode(['address', 'address', 'bytes32'], [buyer, seller, salt]));
50
+ }
51
+ // =========================================================================
52
+ // EIP-712 Domain helpers
53
+ // =========================================================================
54
+ export function makeChannelsDomain(chainId, contractAddress) {
17
55
  return {
18
- name: 'AntseedEscrow',
56
+ name: 'AntseedChannels',
19
57
  version: '1',
20
58
  chainId,
21
59
  verifyingContract: contractAddress,
22
60
  };
23
61
  }
24
- export async function signSpendingAuth(signer, domain, msg) {
25
- return signer.signTypedData(domain, SPENDING_AUTH_TYPES, msg);
62
+ export function makeDepositsDomain(chainId, contractAddress) {
63
+ return {
64
+ name: 'AntseedDeposits',
65
+ version: '1',
66
+ chainId,
67
+ verifyingContract: contractAddress,
68
+ };
26
69
  }
27
70
  // =========================================================================
28
- // Ed25519 signatures (off-chain P2P) — bilateral receipt proof
71
+ // Signing functions — EIP-712 (on-chain)
29
72
  // =========================================================================
30
- export function buildReceiptMessage(sessionId, runningTotal, requestCount, responseHash) {
31
- if (sessionId.length !== 32)
32
- throw new Error(`sessionId must be 32 bytes, got ${sessionId.length}`);
33
- if (responseHash.length !== 32)
34
- throw new Error(`responseHash must be 32 bytes, got ${responseHash.length}`);
35
- const msg = new Uint8Array(76);
36
- msg.set(sessionId, 0);
37
- const totalBuf = new ArrayBuffer(8);
38
- new DataView(totalBuf).setBigUint64(0, runningTotal, true);
39
- msg.set(new Uint8Array(totalBuf), 32);
40
- const countBuf = new ArrayBuffer(4);
41
- new DataView(countBuf).setUint32(0, requestCount, true);
42
- msg.set(new Uint8Array(countBuf), 40);
43
- msg.set(responseHash, 44);
44
- return msg;
45
- }
46
- export function buildAckMessage(sessionId, runningTotal, requestCount) {
47
- if (sessionId.length !== 32)
48
- throw new Error(`sessionId must be 32 bytes, got ${sessionId.length}`);
49
- const msg = new Uint8Array(44);
50
- msg.set(sessionId, 0);
51
- const totalBuf = new ArrayBuffer(8);
52
- new DataView(totalBuf).setBigUint64(0, runningTotal, true);
53
- msg.set(new Uint8Array(totalBuf), 32);
54
- const countBuf = new ArrayBuffer(4);
55
- new DataView(countBuf).setUint32(0, requestCount, true);
56
- msg.set(new Uint8Array(countBuf), 40);
57
- return msg;
73
+ export async function signSpendingAuth(signer, domain, msg) {
74
+ return signer.signTypedData(domain, SPENDING_AUTH_TYPES, msg);
58
75
  }
59
- export async function signMessageEd25519(identity, message) {
60
- return signData(identity.privateKey, message);
76
+ export async function signReserveAuth(signer, domain, msg) {
77
+ return signer.signTypedData(domain, RESERVE_AUTH_TYPES, msg);
61
78
  }
62
- export async function verifyMessageEd25519(publicKey, signature, message) {
63
- return verifySignature(publicKey, signature, message);
79
+ export async function signSetOperator(signer, domain, msg) {
80
+ return signer.signTypedData(domain, SET_OPERATOR_TYPES, msg);
64
81
  }
65
82
  //# sourceMappingURL=signatures.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signatures.js","sourceRoot":"","sources":["../../../src/payments/evm/signatures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signatures.js","sourceRoot":"","sources":["../../../src/payments/evm/signatures.ts"],"names":[],"mappings":"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"}