@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
@@ -0,0 +1,24 @@
1
+ import type { AbstractSigner } from 'ethers';
2
+ import { BaseEvmClient } from './base-evm-client.js';
3
+ export interface StakingClientConfig {
4
+ rpcUrl: string;
5
+ contractAddress: string;
6
+ usdcAddress: string;
7
+ }
8
+ export interface SellerAccountInfo {
9
+ stake: bigint;
10
+ stakedAt: bigint;
11
+ }
12
+ export declare class StakingClient extends BaseEvmClient {
13
+ private readonly _usdcAddress;
14
+ constructor(config: StakingClientConfig);
15
+ stake(signer: AbstractSigner, agentId: number, amount: bigint): Promise<string>;
16
+ stakeFor(signer: AbstractSigner, seller: string, agentId: number, amount: bigint): Promise<string>;
17
+ unstake(signer: AbstractSigner): Promise<string>;
18
+ validateSeller(sellerAddr: string): Promise<boolean>;
19
+ getSellerAccount(sellerAddr: string): Promise<SellerAccountInfo>;
20
+ getStake(sellerAddr: string): Promise<bigint>;
21
+ isStakedAboveMin(sellerAddr: string): Promise<boolean>;
22
+ getAgentId(sellerAddr: string): Promise<number>;
23
+ }
24
+ //# sourceMappingURL=staking-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staking-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/staking-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAaD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,mBAAmB;IAKjC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/E,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlG,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAShE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAKtD"}
@@ -0,0 +1,54 @@
1
+ import { Contract } from 'ethers';
2
+ import { BaseEvmClient } from './base-evm-client.js';
3
+ const STAKING_ABI = [
4
+ 'function stake(uint256 agentId, uint256 amount) external',
5
+ 'function stakeFor(address seller, uint256 agentId, uint256 amount) external',
6
+ 'function unstake() external',
7
+ 'function validateSeller(address seller) external view returns (bool)',
8
+ 'function getSellerAccount(address seller) external view returns (uint256 stake, uint256 stakedAt)',
9
+ 'function getStake(address seller) external view returns (uint256)',
10
+ 'function isStakedAboveMin(address seller) external view returns (bool)',
11
+ 'function getAgentId(address seller) external view returns (uint256)',
12
+ ];
13
+ export class StakingClient extends BaseEvmClient {
14
+ _usdcAddress;
15
+ constructor(config) {
16
+ super(config.rpcUrl, config.contractAddress);
17
+ this._usdcAddress = config.usdcAddress;
18
+ }
19
+ async stake(signer, agentId, amount) {
20
+ return this._approveAndExec(signer, this._usdcAddress, amount, STAKING_ABI, 'stake', agentId, amount);
21
+ }
22
+ async stakeFor(signer, seller, agentId, amount) {
23
+ return this._approveAndExec(signer, this._usdcAddress, amount, STAKING_ABI, 'stakeFor', seller, agentId, amount);
24
+ }
25
+ async unstake(signer) {
26
+ return this._execWrite(signer, STAKING_ABI, 'unstake');
27
+ }
28
+ async validateSeller(sellerAddr) {
29
+ const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
30
+ return contract.getFunction('validateSeller')(sellerAddr);
31
+ }
32
+ async getSellerAccount(sellerAddr) {
33
+ const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
34
+ const result = await contract.getFunction('getSellerAccount')(sellerAddr);
35
+ return {
36
+ stake: result[0],
37
+ stakedAt: result[1],
38
+ };
39
+ }
40
+ async getStake(sellerAddr) {
41
+ const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
42
+ return contract.getFunction('getStake')(sellerAddr);
43
+ }
44
+ async isStakedAboveMin(sellerAddr) {
45
+ const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
46
+ return contract.getFunction('isStakedAboveMin')(sellerAddr);
47
+ }
48
+ async getAgentId(sellerAddr) {
49
+ const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
50
+ const result = await contract.getFunction('getAgentId')(sellerAddr);
51
+ return Number(result);
52
+ }
53
+ }
54
+ //# sourceMappingURL=staking-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staking-client.js","sourceRoot":"","sources":["../../../src/payments/evm/staking-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { BaseEvmClient } from './base-evm-client.js';
2
+ export interface StatsClientConfig {
3
+ rpcUrl: string;
4
+ contractAddress: string;
5
+ }
6
+ export interface AgentStats {
7
+ channelCount: number;
8
+ ghostCount: number;
9
+ totalVolumeUsdc: bigint;
10
+ totalInputTokens: bigint;
11
+ totalOutputTokens: bigint;
12
+ totalLatencyMs: bigint;
13
+ totalRequestCount: number;
14
+ lastSettledAt: number;
15
+ }
16
+ export declare class StatsClient extends BaseEvmClient {
17
+ constructor(config: StatsClientConfig);
18
+ getStats(agentId: number): Promise<AgentStats>;
19
+ }
20
+ //# sourceMappingURL=stats-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/stats-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,qBAAa,WAAY,SAAQ,aAAa;gBAChC,MAAM,EAAE,iBAAiB;IAI/B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAcrD"}
@@ -0,0 +1,25 @@
1
+ import { Contract } from 'ethers';
2
+ import { BaseEvmClient } from './base-evm-client.js';
3
+ const STATS_ABI = [
4
+ 'function getStats(uint256 agentId) external view returns (uint64,uint64,uint256,uint128,uint128,uint64,uint64,uint64)',
5
+ ];
6
+ export class StatsClient extends BaseEvmClient {
7
+ constructor(config) {
8
+ super(config.rpcUrl, config.contractAddress);
9
+ }
10
+ async getStats(agentId) {
11
+ const contract = new Contract(this._contractAddress, STATS_ABI, this._provider);
12
+ const result = await contract.getFunction('getStats')(agentId);
13
+ return {
14
+ channelCount: Number(result[0]),
15
+ ghostCount: Number(result[1]),
16
+ totalVolumeUsdc: result[2],
17
+ totalInputTokens: result[3],
18
+ totalOutputTokens: result[4],
19
+ totalLatencyMs: result[5],
20
+ totalRequestCount: Number(result[6]),
21
+ lastSettledAt: Number(result[7]),
22
+ };
23
+ }
24
+ }
25
+ //# sourceMappingURL=stats-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats-client.js","sourceRoot":"","sources":["../../../src/payments/evm/stats-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkBrD,MAAM,SAAS,GAAG;IAChB,uHAAuH;CAC/G,CAAC;AAEX,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC5C,YAAY,MAAyB;QACnC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,eAAe,EAAE,MAAM,CAAC,CAAC,CAAW;YACpC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAW;YACrC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAW;YACtC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAW;YACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACjC,CAAC;IACJ,CAAC;CACF"}
@@ -2,25 +2,32 @@ export type { PaymentMethod, ChainId, WalletInfo, TransactionType, Transaction,
2
2
  export { BalanceManager } from './balance-manager.js';
3
3
  export type { UnifiedBalance } from './balance-manager.js';
4
4
  export { BaseEvmClient } from './evm/base-evm-client.js';
5
- export { BaseEscrowClient } from './evm/escrow-client.js';
6
- export type { BaseEscrowConfig, SessionInfo, BuyerBalanceInfo, SellerAccountInfo } from './evm/escrow-client.js';
7
- export { identityToEvmWallet, identityToEvmAddress } from './evm/keypair.js';
8
- export { signSpendingAuth, makeEscrowDomain, SPENDING_AUTH_TYPES, signMessageEd25519, buildReceiptMessage, buildAckMessage, verifyMessageEd25519, } from './evm/signatures.js';
9
- export type { SpendingAuthMessage } from './evm/signatures.js';
5
+ export { DepositsClient } from './evm/deposits-client.js';
6
+ export type { DepositsClientConfig, BuyerBalanceInfo } from './evm/deposits-client.js';
7
+ export { ChannelsClient } from './evm/channels-client.js';
8
+ export type { ChannelsClientConfig, ChannelInfo, AgentStats, CloseRequestedEvent } from './evm/channels-client.js';
9
+ export { IdentityClient } from './evm/identity-client.js';
10
+ export type { IdentityClientConfig } from './evm/identity-client.js';
11
+ export { StakingClient } from './evm/staking-client.js';
12
+ export type { StakingClientConfig, SellerAccountInfo } from './evm/staking-client.js';
13
+ export { signSpendingAuth, signReserveAuth, signSetOperator, makeChannelsDomain, makeDepositsDomain, SPENDING_AUTH_TYPES, RESERVE_AUTH_TYPES, SET_OPERATOR_TYPES, computeMetadataHash, encodeMetadata, METADATA_VERSION, computeChannelId, ZERO_METADATA, ZERO_METADATA_HASH, } from './evm/signatures.js';
14
+ export type { SpendingAuthMessage, ReserveAuthMessage, SetOperatorMessage, SpendingAuthMetadata } from './evm/signatures.js';
10
15
  export { ANTSTokenClient } from './evm/ants-token-client.js';
11
16
  export type { ANTSTokenClientConfig } from './evm/ants-token-client.js';
12
17
  export { EmissionsClient } from './evm/emissions-client.js';
13
18
  export type { EmissionsClientConfig } from './evm/emissions-client.js';
14
- export { IdentityClient } from './evm/identity-client.js';
15
- export type { IdentityClientConfig, ProvenReputation, FeedbackSummary } from './evm/identity-client.js';
16
19
  export { SubPoolClient } from './evm/subpool-client.js';
17
20
  export type { SubPoolClientConfig } from './evm/subpool-client.js';
18
- export { SessionStore, SESSION_STATUS } from './session-store.js';
19
- export type { StoredSession, StoredReceipt } from './session-store.js';
21
+ export { ChannelStore, CHANNEL_STATUS } from './channel-store.js';
22
+ export type { StoredChannel, StoredReceipt } from './channel-store.js';
20
23
  export { BuyerPaymentManager } from './buyer-payment-manager.js';
21
- export type { BuyerPaymentConfig } from './buyer-payment-manager.js';
24
+ export type { BuyerPaymentConfig, PerRequestAuthResult } from './buyer-payment-manager.js';
25
+ export { BuyerPaymentNegotiator } from './buyer-payment-negotiator.js';
26
+ export type { BuyerNegotiatorConfig, Handle402Result, NegotiationEmitter } from './buyer-payment-negotiator.js';
22
27
  export { SellerPaymentManager } from './seller-payment-manager.js';
23
28
  export type { SellerPaymentConfig } from './seller-payment-manager.js';
29
+ export { computeCostUsdc, estimateCostFromBytes, estimateTokensFromBytes } from './pricing.js';
30
+ export type { ServicePricing } from './pricing.js';
24
31
  export { checkSellerReadiness, checkBuyerReadiness } from './readiness.js';
25
32
  export type { ReadinessCheck } from './readiness.js';
26
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,OAAO,EACP,UAAU,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACjH,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGxG,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,OAAO,EACP,UAAU,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGvF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGnH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG7H,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAG3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGhH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC/F,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -2,24 +2,31 @@
2
2
  export { BalanceManager } from './balance-manager.js';
3
3
  // Base EVM client
4
4
  export { BaseEvmClient } from './evm/base-evm-client.js';
5
- // Base/EVM integration
6
- export { BaseEscrowClient } from './evm/escrow-client.js';
7
- export { identityToEvmWallet, identityToEvmAddress } from './evm/keypair.js';
8
- export { signSpendingAuth, makeEscrowDomain, SPENDING_AUTH_TYPES, signMessageEd25519, buildReceiptMessage, buildAckMessage, verifyMessageEd25519, } from './evm/signatures.js';
5
+ // Deposits client (buyer deposits + seller payouts)
6
+ export { DepositsClient } from './evm/deposits-client.js';
7
+ // Channels client (reserve, settle, timeout)
8
+ export { ChannelsClient } from './evm/channels-client.js';
9
+ // Identity client (ERC-8004 IdentityRegistry)
10
+ export { IdentityClient } from './evm/identity-client.js';
11
+ // Staking client (seller staking, token rate, slashing)
12
+ export { StakingClient } from './evm/staking-client.js';
13
+ export { signSpendingAuth, signReserveAuth, signSetOperator, makeChannelsDomain, makeDepositsDomain, SPENDING_AUTH_TYPES, RESERVE_AUTH_TYPES, SET_OPERATOR_TYPES, computeMetadataHash, encodeMetadata, METADATA_VERSION, computeChannelId, ZERO_METADATA, ZERO_METADATA_HASH, } from './evm/signatures.js';
9
14
  // ANTS token
10
15
  export { ANTSTokenClient } from './evm/ants-token-client.js';
11
16
  // Emissions
12
17
  export { EmissionsClient } from './evm/emissions-client.js';
13
- // Identity
14
- export { IdentityClient } from './evm/identity-client.js';
15
18
  // Subscription Pool
16
19
  export { SubPoolClient } from './evm/subpool-client.js';
17
- // Session persistence
18
- export { SessionStore, SESSION_STATUS } from './session-store.js';
20
+ // Channel persistence
21
+ export { ChannelStore, CHANNEL_STATUS } from './channel-store.js';
19
22
  // Buyer payment manager
20
23
  export { BuyerPaymentManager } from './buyer-payment-manager.js';
24
+ // Buyer payment negotiator (402 handling, SpendingAuth flow, cost tracking)
25
+ export { BuyerPaymentNegotiator } from './buyer-payment-negotiator.js';
21
26
  // Seller payment manager
22
27
  export { SellerPaymentManager } from './seller-payment-manager.js';
28
+ // Pricing utilities
29
+ export { computeCostUsdc, estimateCostFromBytes, estimateTokensFromBytes } from './pricing.js';
23
30
  // Readiness checks
24
31
  export { checkSellerReadiness, checkBuyerReadiness } from './readiness.js';
25
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAWA,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGlE,wBAAwB;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,yBAAyB;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAWA,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,oDAAoD;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,6CAA6C;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,8CAA8C;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,wDAAwD;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAG7B,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGlE,wBAAwB;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,4EAA4E;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,yBAAyB;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAG/F,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /** Token pricing for a service (USDC per million tokens). */
2
+ export interface ServicePricing {
3
+ inputUsdPerMillion: number;
4
+ outputUsdPerMillion: number;
5
+ }
6
+ /** Estimate token count from raw bytes using tokenx (~95-98% accuracy). */
7
+ export declare function estimateTokensFromBytes(bytes: Uint8Array): number;
8
+ /** Estimate token count from a string using tokenx. */
9
+ export declare function estimateTokensFromText(text: string): number;
10
+ /**
11
+ * Compute USDC cost in base units (6 decimals) from token counts and pricing.
12
+ *
13
+ * Formula: baseUnits = tokens * usdPerMillion / 1_000_000 * 1_000_000
14
+ * = tokens * usdPerMillion (but usdPerMillion is float, so round).
15
+ */
16
+ export declare function computeCostUsdc(inputTokens: number, outputTokens: number, pricing: ServicePricing): bigint;
17
+ /**
18
+ * Estimate USDC cost from raw content bytes using tokenx token estimation.
19
+ */
20
+ export declare function estimateCostFromBytes(inputBytes: Uint8Array, outputBytes: Uint8Array, pricing: ServicePricing): {
21
+ cost: bigint;
22
+ inputTokens: number;
23
+ outputTokens: number;
24
+ };
25
+ //# sourceMappingURL=pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/payments/pricing.ts"],"names":[],"mappings":"AAIA,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAID,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGjE;AAED,uDAAuD;AACvD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,cAAc,GACtB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAK7D"}
@@ -0,0 +1,33 @@
1
+ // ── Buyer-side cost estimation using tokenx ──────────────────────────
2
+ import { estimateTokenCount } from 'tokenx';
3
+ const textDecoder = new TextDecoder();
4
+ /** Estimate token count from raw bytes using tokenx (~95-98% accuracy). */
5
+ export function estimateTokensFromBytes(bytes) {
6
+ const text = textDecoder.decode(bytes);
7
+ return estimateTokenCount(text);
8
+ }
9
+ /** Estimate token count from a string using tokenx. */
10
+ export function estimateTokensFromText(text) {
11
+ return estimateTokenCount(text);
12
+ }
13
+ /**
14
+ * Compute USDC cost in base units (6 decimals) from token counts and pricing.
15
+ *
16
+ * Formula: baseUnits = tokens * usdPerMillion / 1_000_000 * 1_000_000
17
+ * = tokens * usdPerMillion (but usdPerMillion is float, so round).
18
+ */
19
+ export function computeCostUsdc(inputTokens, outputTokens, pricing) {
20
+ const costUsd = (inputTokens * pricing.inputUsdPerMillion + outputTokens * pricing.outputUsdPerMillion) / 1_000_000;
21
+ const costBaseUnits = Math.max(0, Math.round(costUsd * 1_000_000));
22
+ return BigInt(costBaseUnits);
23
+ }
24
+ /**
25
+ * Estimate USDC cost from raw content bytes using tokenx token estimation.
26
+ */
27
+ export function estimateCostFromBytes(inputBytes, outputBytes, pricing) {
28
+ const inputTokens = estimateTokensFromBytes(inputBytes);
29
+ const outputTokens = estimateTokensFromBytes(outputBytes);
30
+ const cost = computeCostUsdc(inputTokens, outputTokens, pricing);
31
+ return { cost, inputTokens, outputTokens };
32
+ }
33
+ //# sourceMappingURL=pricing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/payments/pricing.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAQ5C,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,2EAA2E;AAC3E,MAAM,UAAU,uBAAuB,CAAC,KAAiB;IACvD,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,YAAoB,EACpB,OAAuB;IAEvB,MAAM,OAAO,GACX,CAAC,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;IACtG,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAsB,EACtB,WAAuB,EACvB,OAAuB;IAEvB,MAAM,WAAW,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAC7C,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { type Identity } from '../p2p/identity.js';
2
- import { type BaseEscrowClient } from './evm/escrow-client.js';
2
+ import { type DepositsClient } from './evm/deposits-client.js';
3
3
  import { type IdentityClient } from './evm/identity-client.js';
4
+ import { type StakingClient } from './evm/staking-client.js';
4
5
  export interface ReadinessCheck {
5
6
  name: string;
6
7
  passed: boolean;
7
8
  message: string;
8
9
  command?: string;
9
10
  }
10
- export declare function checkSellerReadiness(identity: Identity, escrowClient: BaseEscrowClient, identityClient: IdentityClient): Promise<ReadinessCheck[]>;
11
- export declare function checkBuyerReadiness(identity: Identity, escrowClient: BaseEscrowClient): Promise<ReadinessCheck[]>;
11
+ export declare function checkSellerReadiness(identity: Identity, identityClient: IdentityClient, stakingClient: StakingClient): Promise<ReadinessCheck[]>;
12
+ export declare function checkBuyerReadiness(identity: Identity, depositsClient: DepositsClient): Promise<ReadinessCheck[]>;
12
13
  //# sourceMappingURL=readiness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../src/payments/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,gBAAgB,EAC9B,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,cAAc,EAAE,CAAC,CAyC3B;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,gBAAgB,GAC7B,OAAO,CAAC,cAAc,EAAE,CAAC,CA0B3B"}
1
+ {"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../src/payments/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,cAAc,EAAE,CAAC,CAkC3B;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,cAAc,EAAE,CAAC,CA0B3B"}
@@ -1,10 +1,9 @@
1
- import { identityToEvmAddress } from './evm/keypair.js';
2
1
  import { formatEther } from 'ethers';
3
- export async function checkSellerReadiness(identity, escrowClient, identityClient) {
2
+ export async function checkSellerReadiness(identity, identityClient, stakingClient) {
4
3
  const checks = [];
5
- const evmAddr = identityToEvmAddress(identity);
4
+ const evmAddr = identity.wallet.address;
6
5
  // 1. ETH for gas
7
- const ethBalance = await escrowClient.provider.getBalance(evmAddr);
6
+ const ethBalance = await stakingClient.provider.getBalance(evmAddr);
8
7
  checks.push({
9
8
  name: 'Gas balance',
10
9
  passed: ethBalance > 0n,
@@ -21,7 +20,7 @@ export async function checkSellerReadiness(identity, escrowClient, identityClien
21
20
  command: isReg ? undefined : 'antseed register',
22
21
  });
23
22
  // 3. Staked
24
- const account = await escrowClient.getSellerAccount(evmAddr);
23
+ const account = await stakingClient.getSellerAccount(evmAddr);
25
24
  const hasStake = account.stake > 0n;
26
25
  checks.push({
27
26
  name: 'Stake',
@@ -29,19 +28,13 @@ export async function checkSellerReadiness(identity, escrowClient, identityClien
29
28
  message: hasStake ? `Staked: ${account.stake}` : 'No stake. Run: antseed stake <amount>',
30
29
  command: hasStake ? undefined : 'antseed stake 10',
31
30
  });
32
- // 4. Token rate
33
- checks.push({
34
- name: 'Token rate',
35
- passed: account.tokenRate > 0n,
36
- message: account.tokenRate > 0n ? `Rate: ${account.tokenRate}` : 'Token rate not set',
37
- });
38
31
  return checks;
39
32
  }
40
- export async function checkBuyerReadiness(identity, escrowClient) {
33
+ export async function checkBuyerReadiness(identity, depositsClient) {
41
34
  const checks = [];
42
- const evmAddr = identityToEvmAddress(identity);
35
+ const evmAddr = identity.wallet.address;
43
36
  // 1. ETH for gas
44
- const ethBalance = await escrowClient.provider.getBalance(evmAddr);
37
+ const ethBalance = await depositsClient.provider.getBalance(evmAddr);
45
38
  checks.push({
46
39
  name: 'Gas balance',
47
40
  passed: ethBalance > 0n,
@@ -49,14 +42,14 @@ export async function checkBuyerReadiness(identity, escrowClient) {
49
42
  ? `ETH balance: ${formatEther(ethBalance)}`
50
43
  : `No ETH for gas. Send ETH to ${evmAddr}`,
51
44
  });
52
- // 2. USDC in escrow
53
- const balance = await escrowClient.getBuyerBalance(evmAddr);
45
+ // 2. USDC in deposits
46
+ const balance = await depositsClient.getBuyerBalance(evmAddr);
54
47
  checks.push({
55
- name: 'Escrow balance',
48
+ name: 'Deposit balance',
56
49
  passed: balance.available > 0n,
57
50
  message: balance.available > 0n
58
51
  ? `Available: ${balance.available}`
59
- : 'No USDC in escrow. Run: antseed deposit <amount>',
52
+ : 'No USDC deposited. Run: antseed deposit <amount>',
60
53
  command: balance.available > 0n ? undefined : 'antseed deposit 10',
61
54
  });
62
55
  return checks;
@@ -1 +1 @@
1
- {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../src/payments/readiness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../src/payments/readiness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AASrC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAkB,EAClB,cAA8B,EAC9B,aAA4B;IAE5B,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAExC,iBAAiB;IACjB,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,UAAU,GAAG,EAAE;QACvB,OAAO,EAAE,UAAU,GAAG,EAAE;YACtB,CAAC,CAAC,gBAAgB,WAAW,CAAC,UAAU,CAAC,EAAE;YAC3C,CAAC,CAAC,oCAAoC,OAAO,EAAE;KAClD,CAAC,CAAC;IAEH,gBAAgB;IAChB,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uCAAuC;QACvE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB;KAChD,CAAC,CAAC;IAEH,YAAY;IACZ,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,uCAAuC;QACxF,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB;KACnD,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAkB,EAClB,cAA8B;IAE9B,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAExC,iBAAiB;IACjB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,UAAU,GAAG,EAAE;QACvB,OAAO,EAAE,UAAU,GAAG,EAAE;YACtB,CAAC,CAAC,gBAAgB,WAAW,CAAC,UAAU,CAAC,EAAE;YAC3C,CAAC,CAAC,+BAA+B,OAAO,EAAE;KAC7C,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,OAAO,CAAC,SAAS,GAAG,EAAE;QAC9B,OAAO,EAAE,OAAO,CAAC,SAAS,GAAG,EAAE;YAC7B,CAAC,CAAC,cAAc,OAAO,CAAC,SAAS,EAAE;YACnC,CAAC,CAAC,kDAAkD;QACtD,OAAO,EAAE,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB;KACnE,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,86 +1,111 @@
1
1
  import type { Identity } from '../p2p/identity.js';
2
2
  import type { PaymentMux } from '../p2p/payment-mux.js';
3
- import type { SpendingAuthPayload, BuyerAckPayload } from '../types/protocol.js';
4
- import { BaseEscrowClient } from './evm/escrow-client.js';
5
- import { SessionStore } from './session-store.js';
3
+ import type { SpendingAuthPayload, PaymentRequiredPayload } from '../types/protocol.js';
4
+ import { ChannelsClient } from './evm/channels-client.js';
5
+ import { ChannelStore, type StoredChannel } from './channel-store.js';
6
6
  export interface SellerPaymentConfig {
7
7
  rpcUrl: string;
8
- contractAddress: string;
9
- usdcAddress: string;
8
+ channelsContractAddress: string;
10
9
  chainId: number;
11
10
  dataDir: string;
12
- /** Timeout in seconds before a disconnected session is considered ghost. Default: 86400 (24h). */
13
- settleTimeoutSecs?: number;
14
- /** Suggested USDC amount (base units) for first-sign sessions. Default: 100000 ($0.10). */
15
- firstSignAmountUsdc?: string;
16
- /** Suggested USDC amount (base units) for proven-sign sessions. Default: 100000 ($0.10). */
17
- provenSignAmountUsdc?: string;
11
+ /** Minimum USDC per request (base units). Default: "10000" ($0.01). */
12
+ minBudgetPerRequest?: string;
13
+ /** Whether to immediately settle when buyer disconnects. Default: true. */
14
+ settleOnDisconnect?: boolean;
18
15
  }
19
16
  /**
20
- * Manages seller-side payment sessions using the settle-then-reserve
21
- * atomic flow with persistent session storage.
17
+ * Manages seller-side payment sessions.
18
+ * The buyer sends a single SpendingAuth signature with a monotonically
19
+ * increasing cumulativeAmount on every request.
20
+ * The seller tracks spending locally and settles/closes via the contract at session end.
22
21
  */
23
22
  export declare class SellerPaymentManager {
24
23
  private readonly _identity;
25
24
  private readonly _signer;
26
- private readonly _escrowClient;
25
+ private readonly _channelsClient;
27
26
  private readonly _config;
28
- private readonly _sessionStore;
27
+ private readonly _channelStore;
29
28
  /** In-memory cache of active buyer peerIds for fast has-session checks. */
30
29
  private readonly _activeBuyers;
31
- /** Debounce: track sessions that already sent a top-up request. */
32
- private readonly _topUpRequested;
33
- /** Cached seller tokenRate (fetched once from escrow, used for top-up threshold). */
34
- private _tokenRate;
35
- /** Cached FIRST_SIGN_CAP from escrow contract. */
36
- private _firstSignCap;
37
30
  /** Per-buyer mutex to prevent concurrent handleSpendingAuth for the same buyer. */
38
31
  private readonly _buyerLocks;
39
- constructor(identity: Identity, config: SellerPaymentConfig, sessionStore: SessionStore);
40
- get escrowClient(): BaseEscrowClient;
32
+ /** channelId -> highest accepted cumulativeAmount from buyer's SpendingAuth */
33
+ private readonly _acceptedCumulative;
34
+ /** channelId -> total USDC spent so far (sum of recordSpend calls) */
35
+ private readonly _spent;
36
+ /** channelId -> on-chain reserveMaxAmount (budget ceiling from ReserveAuth) */
37
+ private readonly _reserveMax;
38
+ /** channelId -> latest buyer-signed auth (both sigs + cumulative values + metadata) for settle/close */
39
+ private readonly _latestAuth;
40
+ /** channelId -> number of failed close() attempts. In-memory only; resets on node restart. */
41
+ private readonly _closeRetryCount;
42
+ /** Max close() retries before giving up (buyer must requestClose on-chain) */
43
+ private static readonly MAX_CLOSE_RETRIES;
44
+ constructor(identity: Identity, config: SellerPaymentConfig, channelStore: ChannelStore);
45
+ get channelsClient(): ChannelsClient;
41
46
  /**
42
47
  * Handle incoming SpendingAuth from a buyer.
43
- * 1. Verify EIP-712 signature
44
- * 2. Settle prior session if one exists
45
- * 3. Reserve new session on-chain
46
- * 4. Store and send AuthAck
48
+ * First auth: verify SpendingAuth, reserve on-chain, send AuthAck.
49
+ * Subsequent: verify SpendingAuth signature, validate monotonic increase, persist.
47
50
  */
48
- handleSpendingAuth(buyerPeerId: string, buyerEvmAddr: string, payload: SpendingAuthPayload, paymentMux: PaymentMux): Promise<void>;
51
+ handleSpendingAuth(buyerPeerId: string, payload: SpendingAuthPayload, paymentMux: PaymentMux): Promise<'accepted' | 'reserved' | 'rejected'>;
49
52
  private _handleSpendingAuthInner;
53
+ private _recoverOnChainSession;
54
+ private _activateSession;
50
55
  /**
51
- * Send a bilateral receipt to the buyer after processing a request.
52
- * Also triggers TopUpRequest if consumption exceeds 80% of authMax.
56
+ * Validate and accept a SpendingAuth attached to an incoming request.
57
+ * Returns true if the buyer has sufficient budget to serve this request.
53
58
  */
54
- sendReceipt(buyerPeerId: string, paymentMux: PaymentMux, responseBody: Uint8Array, tokensDelivered: bigint): Promise<void>;
55
- handleBuyerAck(buyerPeerId: string, payload: BuyerAckPayload): Promise<void>;
59
+ validateAndAcceptAuth(buyerPeerId: string, auth: SpendingAuthPayload): Promise<boolean>;
60
+ /**
61
+ * Record USDC consumption after serving a request.
62
+ */
63
+ recordSpend(sessionId: string, costUsdc: bigint): void;
64
+ /**
65
+ * Close a completed session on-chain using the latest buyer-signed dual signatures.
66
+ * Uses close() for final settlement (releases remaining deposit to buyer).
67
+ */
68
+ settleSession(buyerPeerId: string, { cleanupOnFailure }?: {
69
+ cleanupOnFailure?: boolean | undefined;
70
+ }): Promise<void>;
56
71
  onBuyerDisconnect(buyerPeerId: string): void;
57
72
  /**
58
- * Check for and settle timed-out sessions.
73
+ * Check for stale sessions and attempt to close them.
74
+ * The seller can only close() with a valid SpendingAuth — it cannot
75
+ * requestClose or withdraw (those are buyer-only on-chain).
76
+ * If the seller has no auths, the session remains open until the buyer
77
+ * calls requestClose → withdraw on-chain.
59
78
  * Called periodically and on startup for recovery.
60
79
  */
61
80
  checkTimeouts(): Promise<void>;
62
81
  hasSession(buyerPeerId: string): boolean;
63
- /** Minimum interval between init retry attempts. */
64
- private _lastInitAttemptMs;
65
- private static readonly INIT_RETRY_INTERVAL_MS;
66
- /**
67
- * Pre-fetch on-chain data (tokenRate, FIRST_SIGN_CAP) so PaymentRequired
68
- * messages can be sent without blocking on RPC calls.
69
- */
70
- init(): Promise<void>;
71
- /** Retry init if on-chain data is missing and enough time has passed. */
72
- ensureInitialized(): Promise<void>;
82
+ /** Get the active session for a buyer peer, or null. */
83
+ getChannelByPeer(buyerPeerId: string): StoredChannel | null;
84
+ /** Get total USDC spent for a session (sum of recordSpend calls). */
85
+ getCumulativeSpend(sessionId: string): bigint;
86
+ /** Get the highest accepted cumulative amount for a session. */
87
+ getAcceptedCumulative(sessionId: string): bigint;
88
+ /** Get the on-chain reserve budget ceiling for a session. */
89
+ getReserveMax(sessionId: string): bigint;
73
90
  private static readonly DEFAULT_SUGGESTED_AMOUNT;
74
91
  /**
75
92
  * Build the PaymentRequired payload for a buyer that doesn't have a session.
76
- * Returns null if on-chain data isn't available yet.
77
- * For returning buyers (proven-sign eligible), uses the configured proven-sign
78
- * amount instead of the first-sign amount (both default to $0.10).
79
93
  */
80
94
  getPaymentRequirements(requestId: string, buyerPeerId?: string, pricing?: {
81
95
  inputUsdPerMillion?: number;
82
96
  outputUsdPerMillion?: number;
83
- }): import('../types/protocol.js').PaymentRequiredPayload | null;
97
+ }): PaymentRequiredPayload;
98
+ /**
99
+ * Handle a CloseRequested event for a channel this seller manages.
100
+ * If the seller has a stored SpendingAuth, immediately close the channel
101
+ * on-chain to claim earnings before the grace period expires.
102
+ */
103
+ handleCloseRequested(channelId: string): Promise<void>;
104
+ /**
105
+ * Poll for CloseRequested events and handle any that match active channels.
106
+ * Returns the block number to use as the next fromBlock cursor.
107
+ */
108
+ pollCloseRequested(fromBlock: number): Promise<number>;
84
109
  close(): void;
85
110
  }
86
111
  //# sourceMappingURL=seller-payment-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seller-payment-manager.d.ts","sourceRoot":"","sources":["../../src/payments/seller-payment-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seller-payment-manager.d.ts","sourceRoot":"","sources":["../../src/payments/seller-payment-manager.ts"],"names":[],"mappings":"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"}