@antseed/node 0.2.25 → 0.2.27

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 (111) hide show
  1. package/README.md +74 -1
  2. package/dist/discovery/announcer.d.ts +2 -0
  3. package/dist/discovery/announcer.d.ts.map +1 -1
  4. package/dist/discovery/announcer.js +10 -6
  5. package/dist/discovery/announcer.js.map +1 -1
  6. package/dist/discovery/index.d.ts +0 -1
  7. package/dist/discovery/index.d.ts.map +1 -1
  8. package/dist/discovery/index.js +0 -1
  9. package/dist/discovery/index.js.map +1 -1
  10. package/dist/discovery/reputation-verifier.d.ts +7 -4
  11. package/dist/discovery/reputation-verifier.d.ts.map +1 -1
  12. package/dist/discovery/reputation-verifier.js +33 -9
  13. package/dist/discovery/reputation-verifier.js.map +1 -1
  14. package/dist/index.d.ts +12 -3
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +6 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/node.d.ts +60 -33
  19. package/dist/node.d.ts.map +1 -1
  20. package/dist/node.js +640 -324
  21. package/dist/node.js.map +1 -1
  22. package/dist/p2p/connection-manager.d.ts.map +1 -1
  23. package/dist/p2p/connection-manager.js +6 -0
  24. package/dist/p2p/connection-manager.js.map +1 -1
  25. package/dist/p2p/identity.d.ts +27 -3
  26. package/dist/p2p/identity.d.ts.map +1 -1
  27. package/dist/p2p/identity.js +52 -13
  28. package/dist/p2p/identity.js.map +1 -1
  29. package/dist/p2p/index.d.ts +0 -2
  30. package/dist/p2p/index.d.ts.map +1 -1
  31. package/dist/p2p/index.js +0 -2
  32. package/dist/p2p/index.js.map +1 -1
  33. package/dist/p2p/payment-codec.d.ts +7 -13
  34. package/dist/p2p/payment-codec.d.ts.map +1 -1
  35. package/dist/p2p/payment-codec.js +32 -50
  36. package/dist/p2p/payment-codec.js.map +1 -1
  37. package/dist/p2p/payment-mux.d.ts +11 -20
  38. package/dist/p2p/payment-mux.d.ts.map +1 -1
  39. package/dist/p2p/payment-mux.js +36 -52
  40. package/dist/p2p/payment-mux.js.map +1 -1
  41. package/dist/payments/buyer-payment-manager.d.ts +34 -93
  42. package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
  43. package/dist/payments/buyer-payment-manager.js +184 -189
  44. package/dist/payments/buyer-payment-manager.js.map +1 -1
  45. package/dist/payments/chain-config.d.ts +38 -0
  46. package/dist/payments/chain-config.d.ts.map +1 -0
  47. package/dist/payments/chain-config.js +60 -0
  48. package/dist/payments/chain-config.js.map +1 -0
  49. package/dist/payments/evm/ants-token-client.d.ts +16 -0
  50. package/dist/payments/evm/ants-token-client.d.ts.map +1 -0
  51. package/dist/payments/evm/ants-token-client.js +66 -0
  52. package/dist/payments/evm/ants-token-client.js.map +1 -0
  53. package/dist/payments/evm/base-evm-client.d.ts +13 -0
  54. package/dist/payments/evm/base-evm-client.d.ts.map +1 -0
  55. package/dist/payments/evm/base-evm-client.js +38 -0
  56. package/dist/payments/evm/base-evm-client.js.map +1 -0
  57. package/dist/payments/evm/emissions-client.d.ts +23 -0
  58. package/dist/payments/evm/emissions-client.d.ts.map +1 -0
  59. package/dist/payments/evm/emissions-client.js +84 -0
  60. package/dist/payments/evm/emissions-client.js.map +1 -0
  61. package/dist/payments/evm/escrow-client.d.ts +57 -36
  62. package/dist/payments/evm/escrow-client.d.ts.map +1 -1
  63. package/dist/payments/evm/escrow-client.js +200 -93
  64. package/dist/payments/evm/escrow-client.js.map +1 -1
  65. package/dist/payments/evm/identity-client.d.ts +34 -0
  66. package/dist/payments/evm/identity-client.d.ts.map +1 -0
  67. package/dist/payments/evm/identity-client.js +125 -0
  68. package/dist/payments/evm/identity-client.js.map +1 -0
  69. package/dist/payments/evm/signatures.d.ts +18 -5
  70. package/dist/payments/evm/signatures.d.ts.map +1 -1
  71. package/dist/payments/evm/signatures.js +21 -12
  72. package/dist/payments/evm/signatures.js.map +1 -1
  73. package/dist/payments/evm/subpool-client.d.ts +30 -0
  74. package/dist/payments/evm/subpool-client.d.ts.map +1 -0
  75. package/dist/payments/evm/subpool-client.js +158 -0
  76. package/dist/payments/evm/subpool-client.js.map +1 -0
  77. package/dist/payments/index.d.ts +20 -7
  78. package/dist/payments/index.d.ts.map +1 -1
  79. package/dist/payments/index.js +17 -6
  80. package/dist/payments/index.js.map +1 -1
  81. package/dist/payments/readiness.d.ts +12 -0
  82. package/dist/payments/readiness.d.ts.map +1 -0
  83. package/dist/payments/readiness.js +64 -0
  84. package/dist/payments/readiness.js.map +1 -0
  85. package/dist/payments/seller-payment-manager.d.ts +74 -34
  86. package/dist/payments/seller-payment-manager.d.ts.map +1 -1
  87. package/dist/payments/seller-payment-manager.js +327 -118
  88. package/dist/payments/seller-payment-manager.js.map +1 -1
  89. package/dist/payments/session-store.d.ts +65 -0
  90. package/dist/payments/session-store.d.ts.map +1 -0
  91. package/dist/payments/session-store.js +243 -0
  92. package/dist/payments/session-store.js.map +1 -0
  93. package/dist/payments/usdc-utils.d.ts +9 -0
  94. package/dist/payments/usdc-utils.d.ts.map +1 -0
  95. package/dist/payments/usdc-utils.js +17 -0
  96. package/dist/payments/usdc-utils.js.map +1 -0
  97. package/dist/types/http.d.ts +2 -0
  98. package/dist/types/http.d.ts.map +1 -1
  99. package/dist/types/http.js +2 -0
  100. package/dist/types/http.js.map +1 -1
  101. package/dist/types/index.d.ts +0 -1
  102. package/dist/types/index.d.ts.map +1 -1
  103. package/dist/types/index.js +0 -1
  104. package/dist/types/index.js.map +1 -1
  105. package/dist/types/metering.d.ts +1 -1
  106. package/dist/types/metering.d.ts.map +1 -1
  107. package/dist/types/protocol.d.ts +43 -60
  108. package/dist/types/protocol.d.ts.map +1 -1
  109. package/dist/types/protocol.js +5 -8
  110. package/dist/types/protocol.js.map +1 -1
  111. package/package.json +3 -2
@@ -1,19 +1,28 @@
1
- import { solidityPackedKeccak256, getBytes } from 'ethers';
2
1
  import { signData, verifySignature } from '../../p2p/identity.js';
3
2
  // =========================================================================
4
- // ECDSA signatures (on-chain) — verified by contract via ecrecover
3
+ // EIP-712 Spending Authorization (on-chain) — verified by contract
5
4
  // =========================================================================
6
- export function buildLockMessageHash(sessionId, seller, amount) {
7
- return solidityPackedKeccak256(['bytes1', 'bytes32', 'address', 'uint256'], ['0x01', sessionId, seller, amount]);
5
+ export const SPENDING_AUTH_TYPES = {
6
+ SpendingAuth: [
7
+ { name: 'seller', type: 'address' },
8
+ { name: 'sessionId', type: 'bytes32' },
9
+ { name: 'maxAmount', type: 'uint256' },
10
+ { name: 'nonce', type: 'uint256' },
11
+ { name: 'deadline', type: 'uint256' },
12
+ { name: 'previousConsumption', type: 'uint256' },
13
+ { name: 'previousSessionId', type: 'bytes32' },
14
+ ],
15
+ };
16
+ export function makeEscrowDomain(chainId, contractAddress) {
17
+ return {
18
+ name: 'AntseedEscrow',
19
+ version: '1',
20
+ chainId,
21
+ verifyingContract: contractAddress,
22
+ };
8
23
  }
9
- export function buildSettlementMessageHash(sessionId, runningTotal, score) {
10
- return solidityPackedKeccak256(['bytes32', 'uint256', 'uint8'], [sessionId, runningTotal, score]);
11
- }
12
- export function buildExtendLockMessageHash(sessionId, seller, additionalAmount) {
13
- return solidityPackedKeccak256(['bytes1', 'bytes32', 'address', 'uint256'], ['0x02', sessionId, seller, additionalAmount]);
14
- }
15
- export async function signMessageEcdsa(signer, messageHash) {
16
- return signer.signMessage(getBytes(messageHash));
24
+ export async function signSpendingAuth(signer, domain, msg) {
25
+ return signer.signTypedData(domain, SPENDING_AUTH_TYPES, msg);
17
26
  }
18
27
  // =========================================================================
19
28
  // Ed25519 signatures (off-chain P2P) — bilateral receipt proof
@@ -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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"}
@@ -0,0 +1,30 @@
1
+ import { type AbstractSigner } from 'ethers';
2
+ import { BaseEvmClient } from './base-evm-client.js';
3
+ export interface SubPoolClientConfig {
4
+ rpcUrl: string;
5
+ contractAddress: string;
6
+ usdcAddress: string;
7
+ }
8
+ export declare class SubPoolClient extends BaseEvmClient {
9
+ private readonly _usdcAddress;
10
+ constructor(config: SubPoolClientConfig);
11
+ subscribe(signer: AbstractSigner, tierId: number): Promise<string>;
12
+ renewSubscription(signer: AbstractSigner, monthlyFee: bigint): Promise<string>;
13
+ cancelSubscription(signer: AbstractSigner): Promise<string>;
14
+ isSubscriptionActive(buyer: string): Promise<boolean>;
15
+ getRemainingDailyBudget(buyer: string): Promise<bigint>;
16
+ recordTokenUsage(signer: AbstractSigner, buyer: string, tokens: bigint): Promise<string>;
17
+ optIn(signer: AbstractSigner, tokenId: number): Promise<string>;
18
+ optOut(signer: AbstractSigner, tokenId: number): Promise<string>;
19
+ claimRevenue(signer: AbstractSigner): Promise<string>;
20
+ getProjectedRevenue(seller: string): Promise<bigint>;
21
+ getTier(tierId: number): Promise<{
22
+ monthlyFee: bigint;
23
+ dailyTokenBudget: bigint;
24
+ active: boolean;
25
+ }>;
26
+ getOptedInPeerCount(): Promise<bigint>;
27
+ currentEpoch(): Promise<bigint>;
28
+ currentEpochRevenue(): Promise<bigint>;
29
+ }
30
+ //# sourceMappingURL=subpool-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subpool-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/subpool-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AACvD,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;AA2BD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,mBAAmB;IAOjC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBlE,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB9E,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAW3D,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKvD,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAaxF,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW/D,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAahE,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAWrD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOpD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAMnG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKtC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;CAI7C"}
@@ -0,0 +1,158 @@
1
+ import { Contract } from 'ethers';
2
+ import { BaseEvmClient } from './base-evm-client.js';
3
+ const ERC20_ABI = [
4
+ 'function approve(address spender, uint256 amount) external returns (bool)',
5
+ ];
6
+ const SUBPOOL_ABI = [
7
+ 'function subscribe(uint256 tierId) external',
8
+ 'function renewSubscription() external',
9
+ 'function cancelSubscription() external',
10
+ 'function isSubscriptionActive(address buyer) external view returns (bool)',
11
+ 'function getRemainingDailyBudget(address buyer) external view returns (uint256)',
12
+ 'function recordTokenUsage(address buyer, uint256 tokens) external',
13
+ 'function optIn(uint256 tokenId) external',
14
+ 'function optOut(uint256 tokenId) external',
15
+ 'function claimRevenue() external',
16
+ 'function distributeRevenue() external',
17
+ 'function getProjectedRevenue(address seller) external view returns (uint256)',
18
+ 'function getTier(uint256 tierId) external view returns (uint256 monthlyFee, uint256 dailyTokenBudget, bool active)',
19
+ 'function getOptedInPeerCount() external view returns (uint256)',
20
+ 'function currentEpoch() external view returns (uint256)',
21
+ 'function currentEpochRevenue() external view returns (uint256)',
22
+ 'function epochDuration() external view returns (uint256)',
23
+ 'function epochStart() external view returns (uint256)',
24
+ 'function tierCount() external view returns (uint256)',
25
+ ];
26
+ export class SubPoolClient extends BaseEvmClient {
27
+ _usdcAddress;
28
+ constructor(config) {
29
+ super(config.rpcUrl, config.contractAddress);
30
+ this._usdcAddress = config.usdcAddress;
31
+ }
32
+ // ─── Subscription Methods ──────────────────────────────────────────
33
+ async subscribe(signer, tierId) {
34
+ const connected = this._ensureConnected(signer);
35
+ const signerAddress = await connected.getAddress();
36
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
37
+ // Fetch tier fee and approve USDC
38
+ const [monthlyFee] = await contract.getFunction('getTier')(tierId);
39
+ const usdc = new Contract(this._usdcAddress, ERC20_ABI, connected);
40
+ const approveNonce = await this._reserveNonce(signerAddress);
41
+ const approveTx = await usdc.getFunction('approve')(this._contractAddress, monthlyFee, { nonce: approveNonce });
42
+ const approveReceipt = await approveTx.wait();
43
+ if (!approveReceipt)
44
+ throw new Error('Transaction was dropped or replaced');
45
+ const nonce = await this._reserveNonce(signerAddress);
46
+ const tx = await contract.getFunction('subscribe')(tierId, { nonce });
47
+ const receipt = await tx.wait();
48
+ if (!receipt)
49
+ throw new Error('Transaction was dropped or replaced');
50
+ return receipt.hash;
51
+ }
52
+ async renewSubscription(signer, monthlyFee) {
53
+ const connected = this._ensureConnected(signer);
54
+ const signerAddress = await connected.getAddress();
55
+ // Approve USDC for renewal
56
+ const usdc = new Contract(this._usdcAddress, ERC20_ABI, connected);
57
+ const approveNonce = await this._reserveNonce(signerAddress);
58
+ const approveTx = await usdc.getFunction('approve')(this._contractAddress, monthlyFee, { nonce: approveNonce });
59
+ const approveReceipt = await approveTx.wait();
60
+ if (!approveReceipt)
61
+ throw new Error('Transaction was dropped or replaced');
62
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
63
+ const nonce = await this._reserveNonce(signerAddress);
64
+ const tx = await contract.getFunction('renewSubscription')({ nonce });
65
+ const receipt = await tx.wait();
66
+ if (!receipt)
67
+ throw new Error('Transaction was dropped or replaced');
68
+ return receipt.hash;
69
+ }
70
+ async cancelSubscription(signer) {
71
+ const connected = this._ensureConnected(signer);
72
+ const signerAddress = await connected.getAddress();
73
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
74
+ const nonce = await this._reserveNonce(signerAddress);
75
+ const tx = await contract.getFunction('cancelSubscription')({ nonce });
76
+ const receipt = await tx.wait();
77
+ if (!receipt)
78
+ throw new Error('Transaction was dropped or replaced');
79
+ return receipt.hash;
80
+ }
81
+ async isSubscriptionActive(buyer) {
82
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
83
+ return contract.getFunction('isSubscriptionActive')(buyer);
84
+ }
85
+ async getRemainingDailyBudget(buyer) {
86
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
87
+ return contract.getFunction('getRemainingDailyBudget')(buyer);
88
+ }
89
+ async recordTokenUsage(signer, buyer, tokens) {
90
+ const connected = this._ensureConnected(signer);
91
+ const signerAddress = await connected.getAddress();
92
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
93
+ const nonce = await this._reserveNonce(signerAddress);
94
+ const tx = await contract.getFunction('recordTokenUsage')(buyer, tokens, { nonce });
95
+ const receipt = await tx.wait();
96
+ if (!receipt)
97
+ throw new Error('Transaction was dropped or replaced');
98
+ return receipt.hash;
99
+ }
100
+ // ─── Peer Methods ──────────────────────────────────────────────────
101
+ async optIn(signer, tokenId) {
102
+ const connected = this._ensureConnected(signer);
103
+ const signerAddress = await connected.getAddress();
104
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
105
+ const nonce = await this._reserveNonce(signerAddress);
106
+ const tx = await contract.getFunction('optIn')(tokenId, { nonce });
107
+ const receipt = await tx.wait();
108
+ if (!receipt)
109
+ throw new Error('Transaction was dropped or replaced');
110
+ return receipt.hash;
111
+ }
112
+ async optOut(signer, tokenId) {
113
+ const connected = this._ensureConnected(signer);
114
+ const signerAddress = await connected.getAddress();
115
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
116
+ const nonce = await this._reserveNonce(signerAddress);
117
+ const tx = await contract.getFunction('optOut')(tokenId, { nonce });
118
+ const receipt = await tx.wait();
119
+ if (!receipt)
120
+ throw new Error('Transaction was dropped or replaced');
121
+ return receipt.hash;
122
+ }
123
+ // ─── Revenue Methods ───────────────────────────────────────────────
124
+ async claimRevenue(signer) {
125
+ const connected = this._ensureConnected(signer);
126
+ const signerAddress = await connected.getAddress();
127
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, connected);
128
+ const nonce = await this._reserveNonce(signerAddress);
129
+ const tx = await contract.getFunction('claimRevenue')({ nonce });
130
+ const receipt = await tx.wait();
131
+ if (!receipt)
132
+ throw new Error('Transaction was dropped or replaced');
133
+ return receipt.hash;
134
+ }
135
+ async getProjectedRevenue(seller) {
136
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
137
+ return contract.getFunction('getProjectedRevenue')(seller);
138
+ }
139
+ // ─── View Methods ──────────────────────────────────────────────────
140
+ async getTier(tierId) {
141
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
142
+ const [monthlyFee, dailyTokenBudget, active] = await contract.getFunction('getTier')(tierId);
143
+ return { monthlyFee, dailyTokenBudget, active };
144
+ }
145
+ async getOptedInPeerCount() {
146
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
147
+ return contract.getFunction('getOptedInPeerCount')();
148
+ }
149
+ async currentEpoch() {
150
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
151
+ return contract.getFunction('currentEpoch')();
152
+ }
153
+ async currentEpochRevenue() {
154
+ const contract = new Contract(this._contractAddress, SUBPOOL_ABI, this._provider);
155
+ return contract.getFunction('currentEpochRevenue')();
156
+ }
157
+ }
158
+ //# sourceMappingURL=subpool-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subpool-client.js","sourceRoot":"","sources":["../../../src/payments/evm/subpool-client.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,26 @@
1
- export type { PaymentMethod, ChainId, WalletInfo, TransactionType, Transaction, PaymentConfig, CryptoPaymentConfig, SettlementResult, DisputeStatus, PaymentDispute, } from './types.js';
1
+ export type { PaymentMethod, ChainId, WalletInfo, TransactionType, Transaction, PaymentConfig, CryptoPaymentConfig, } from './types.js';
2
2
  export { BalanceManager } from './balance-manager.js';
3
3
  export type { UnifiedBalance } from './balance-manager.js';
4
- export { calculateSettlement, isSettlementWithinEscrow, calculateRefund } from './settlement.js';
5
- export { createDispute, detectDiscrepancy, resolveDispute, isDisputeExpired, calculateDisputedAmount, DISPUTE_TIMEOUT_MS, } from './disputes.js';
4
+ export { BaseEvmClient } from './evm/base-evm-client.js';
6
5
  export { BaseEscrowClient } from './evm/escrow-client.js';
7
- export type { BaseEscrowConfig, SessionInfo, ReputationInfo } from './evm/escrow-client.js';
6
+ export type { BaseEscrowConfig, SessionInfo, BuyerBalanceInfo, SellerAccountInfo } from './evm/escrow-client.js';
8
7
  export { identityToEvmWallet, identityToEvmAddress } from './evm/keypair.js';
9
- export { signMessageEcdsa, signMessageEd25519, buildLockMessageHash, buildSettlementMessageHash, buildExtendLockMessageHash, buildReceiptMessage, buildAckMessage, verifyMessageEd25519, } from './evm/signatures.js';
10
- export { getWalletInfo, getAddress } from './evm/wallet.js';
8
+ export { signSpendingAuth, makeEscrowDomain, SPENDING_AUTH_TYPES, signMessageEd25519, buildReceiptMessage, buildAckMessage, verifyMessageEd25519, } from './evm/signatures.js';
9
+ export type { SpendingAuthMessage } from './evm/signatures.js';
10
+ export { ANTSTokenClient } from './evm/ants-token-client.js';
11
+ export type { ANTSTokenClientConfig } from './evm/ants-token-client.js';
12
+ export { EmissionsClient } from './evm/emissions-client.js';
13
+ 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
+ export { SubPoolClient } from './evm/subpool-client.js';
17
+ 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';
11
20
  export { BuyerPaymentManager } from './buyer-payment-manager.js';
12
- export type { BuyerPaymentConfig, BuyerSessionState, BuyerSessionStatus } from './buyer-payment-manager.js';
21
+ export type { BuyerPaymentConfig } from './buyer-payment-manager.js';
22
+ export { SellerPaymentManager } from './seller-payment-manager.js';
23
+ export type { SellerPaymentConfig } from './seller-payment-manager.js';
24
+ export { checkSellerReadiness, checkBuyerReadiness } from './readiness.js';
25
+ export type { ReadinessCheck } from './readiness.js';
13
26
  //# 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,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGjG,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,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,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,14 +1,25 @@
1
1
  // Balance tracking (local transaction history)
2
2
  export { BalanceManager } from './balance-manager.js';
3
- // Off-chain settlement calculation
4
- export { calculateSettlement, isSettlementWithinEscrow, calculateRefund } from './settlement.js';
5
- // Off-chain dispute detection
6
- export { createDispute, detectDiscrepancy, resolveDispute, isDisputeExpired, calculateDisputedAmount, DISPUTE_TIMEOUT_MS, } from './disputes.js';
3
+ // Base EVM client
4
+ export { BaseEvmClient } from './evm/base-evm-client.js';
7
5
  // Base/EVM integration
8
6
  export { BaseEscrowClient } from './evm/escrow-client.js';
9
7
  export { identityToEvmWallet, identityToEvmAddress } from './evm/keypair.js';
10
- export { signMessageEcdsa, signMessageEd25519, buildLockMessageHash, buildSettlementMessageHash, buildExtendLockMessageHash, buildReceiptMessage, buildAckMessage, verifyMessageEd25519, } from './evm/signatures.js';
11
- export { getWalletInfo, getAddress } from './evm/wallet.js';
8
+ export { signSpendingAuth, makeEscrowDomain, SPENDING_AUTH_TYPES, signMessageEd25519, buildReceiptMessage, buildAckMessage, verifyMessageEd25519, } from './evm/signatures.js';
9
+ // ANTS token
10
+ export { ANTSTokenClient } from './evm/ants-token-client.js';
11
+ // Emissions
12
+ export { EmissionsClient } from './evm/emissions-client.js';
13
+ // Identity
14
+ export { IdentityClient } from './evm/identity-client.js';
15
+ // Subscription Pool
16
+ export { SubPoolClient } from './evm/subpool-client.js';
17
+ // Session persistence
18
+ export { SessionStore, SESSION_STATUS } from './session-store.js';
12
19
  // Buyer payment manager
13
20
  export { BuyerPaymentManager } from './buyer-payment-manager.js';
21
+ // Seller payment manager
22
+ export { SellerPaymentManager } from './seller-payment-manager.js';
23
+ // Readiness checks
24
+ export { checkSellerReadiness, checkBuyerReadiness } from './readiness.js';
14
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAcA,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,mCAAmC;AACnC,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEjG,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE5D,wBAAwB;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,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,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"}
@@ -0,0 +1,12 @@
1
+ import { type Identity } from '../p2p/identity.js';
2
+ import { type BaseEscrowClient } from './evm/escrow-client.js';
3
+ import { type IdentityClient } from './evm/identity-client.js';
4
+ export interface ReadinessCheck {
5
+ name: string;
6
+ passed: boolean;
7
+ message: string;
8
+ command?: string;
9
+ }
10
+ export declare function checkSellerReadiness(identity: Identity, escrowClient: BaseEscrowClient, identityClient: IdentityClient): Promise<ReadinessCheck[]>;
11
+ export declare function checkBuyerReadiness(identity: Identity, escrowClient: BaseEscrowClient): Promise<ReadinessCheck[]>;
12
+ //# sourceMappingURL=readiness.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,64 @@
1
+ import { identityToEvmAddress } from './evm/keypair.js';
2
+ import { formatEther } from 'ethers';
3
+ export async function checkSellerReadiness(identity, escrowClient, identityClient) {
4
+ const checks = [];
5
+ const evmAddr = identityToEvmAddress(identity);
6
+ // 1. ETH for gas
7
+ const ethBalance = await escrowClient.provider.getBalance(evmAddr);
8
+ checks.push({
9
+ name: 'Gas balance',
10
+ passed: ethBalance > 0n,
11
+ message: ethBalance > 0n
12
+ ? `ETH balance: ${formatEther(ethBalance)}`
13
+ : `No ETH for gas fees. Send ETH to ${evmAddr}`,
14
+ });
15
+ // 2. Registered
16
+ const isReg = await identityClient.isRegistered(evmAddr);
17
+ checks.push({
18
+ name: 'Peer registration',
19
+ passed: isReg,
20
+ message: isReg ? 'Registered' : 'Not registered. Run: antseed register',
21
+ command: isReg ? undefined : 'antseed register',
22
+ });
23
+ // 3. Staked
24
+ const account = await escrowClient.getSellerAccount(evmAddr);
25
+ const hasStake = account.stake > 0n;
26
+ checks.push({
27
+ name: 'Stake',
28
+ passed: hasStake,
29
+ message: hasStake ? `Staked: ${account.stake}` : 'No stake. Run: antseed stake <amount>',
30
+ command: hasStake ? undefined : 'antseed stake 10',
31
+ });
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
+ return checks;
39
+ }
40
+ export async function checkBuyerReadiness(identity, escrowClient) {
41
+ const checks = [];
42
+ const evmAddr = identityToEvmAddress(identity);
43
+ // 1. ETH for gas
44
+ const ethBalance = await escrowClient.provider.getBalance(evmAddr);
45
+ checks.push({
46
+ name: 'Gas balance',
47
+ passed: ethBalance > 0n,
48
+ message: ethBalance > 0n
49
+ ? `ETH balance: ${formatEther(ethBalance)}`
50
+ : `No ETH for gas. Send ETH to ${evmAddr}`,
51
+ });
52
+ // 2. USDC in escrow
53
+ const balance = await escrowClient.getBuyerBalance(evmAddr);
54
+ checks.push({
55
+ name: 'Escrow balance',
56
+ passed: balance.available > 0n,
57
+ message: balance.available > 0n
58
+ ? `Available: ${balance.available}`
59
+ : 'No USDC in escrow. Run: antseed deposit <amount>',
60
+ command: balance.available > 0n ? undefined : 'antseed deposit 10',
61
+ });
62
+ return checks;
63
+ }
64
+ //# sourceMappingURL=readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../src/payments/readiness.ts"],"names":[],"mappings":"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"}
@@ -1,46 +1,86 @@
1
- import { type AbstractSigner } from 'ethers';
2
1
  import type { Identity } from '../p2p/identity.js';
3
2
  import type { PaymentMux } from '../p2p/payment-mux.js';
4
- import type { SpendingAuthPayload } from '../types/protocol.js';
5
- import { EscrowClient } from './evm/escrow-client.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';
6
6
  export interface SellerPaymentConfig {
7
- chainId: number;
8
7
  rpcUrl: string;
9
8
  contractAddress: string;
10
9
  usdcAddress: string;
10
+ chainId: number;
11
+ 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
18
  }
12
- export interface BuyerSession {
13
- sessionId: string;
14
- buyerPeerId: string;
15
- buyerEvmAddr: string;
16
- nonce: number;
17
- authMax: bigint;
18
- deadline: number;
19
- buyerSig: string;
20
- previousConsumption: bigint;
21
- previousSessionId: string;
22
- tokensDelivered: bigint;
23
- reservedAt: number;
24
- settled: boolean;
25
- }
19
+ /**
20
+ * Manages seller-side payment sessions using the settle-then-reserve
21
+ * atomic flow with persistent session storage.
22
+ */
26
23
  export declare class SellerPaymentManager {
27
- private _signer;
28
- private readonly _escrow;
24
+ private readonly _identity;
25
+ private readonly _signer;
26
+ private readonly _escrowClient;
29
27
  private readonly _config;
30
- private readonly _sessions;
31
- constructor(identity: Identity, config: SellerPaymentConfig);
32
- get signer(): AbstractSigner;
33
- get escrowClient(): EscrowClient;
28
+ private readonly _sessionStore;
29
+ /** In-memory cache of active buyer peerIds for fast has-session checks. */
30
+ 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
+ /** Per-buyer mutex to prevent concurrent handleSpendingAuth for the same buyer. */
38
+ private readonly _buyerLocks;
39
+ constructor(identity: Identity, config: SellerPaymentConfig, sessionStore: SessionStore);
40
+ get escrowClient(): BaseEscrowClient;
41
+ /**
42
+ * 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
47
+ */
48
+ handleSpendingAuth(buyerPeerId: string, buyerEvmAddr: string, payload: SpendingAuthPayload, paymentMux: PaymentMux): Promise<void>;
49
+ private _handleSpendingAuthInner;
50
+ /**
51
+ * Send a bilateral receipt to the buyer after processing a request.
52
+ * Also triggers TopUpRequest if consumption exceeds 80% of authMax.
53
+ */
54
+ sendReceipt(buyerPeerId: string, paymentMux: PaymentMux, responseBody: Uint8Array, tokensDelivered: bigint): Promise<void>;
55
+ handleBuyerAck(buyerPeerId: string, payload: BuyerAckPayload): Promise<void>;
56
+ onBuyerDisconnect(buyerPeerId: string): void;
57
+ /**
58
+ * Check for and settle timed-out sessions.
59
+ * Called periodically and on startup for recovery.
60
+ */
61
+ checkTimeouts(): Promise<void>;
34
62
  hasSession(buyerPeerId: string): boolean;
35
- setBuyerEvmAddress(buyerPeerId: string, evmAddress: string): void;
36
- handleSpendingAuthV2(buyerPeerId: string, buyerEvmAddr: string, payload: SpendingAuthPayload, paymentMux: PaymentMux): Promise<void>;
37
- addTokensDelivered(buyerPeerId: string, tokens: bigint): void;
38
- onBuyerDisconnect(buyerPeerId: string): Promise<void>;
39
- settleSession(buyerPeerId: string, chargeAmount: bigint): Promise<void>;
40
- claimEarnings(): Promise<string>;
41
- stake(amount: bigint): Promise<string>;
42
- unstake(amount: bigint): Promise<string>;
43
- getPendingEarnings(): Promise<bigint>;
44
- private _computeChargeAmount;
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>;
73
+ private static readonly DEFAULT_SUGGESTED_AMOUNT;
74
+ /**
75
+ * 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
+ */
80
+ getPaymentRequirements(requestId: string, buyerPeerId?: string, pricing?: {
81
+ inputUsdPerMillion?: number;
82
+ outputUsdPerMillion?: number;
83
+ }): import('../types/protocol.js').PaymentRequiredPayload | null;
84
+ close(): void;
45
85
  }
46
86
  //# 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":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,QAAQ,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKtD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;gBAEjD,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB;IAW3D,IAAI,MAAM,IAAI,cAAc,CAAyB;IACrD,IAAI,YAAY,IAAI,YAAY,CAAyB;IAEzD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAKxC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAK3D,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,EAC5B,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC;IA0FhB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAOvD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrD,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvE,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK3C,OAAO,CAAC,oBAAoB;CAG7B"}
1
+ {"version":3,"file":"seller-payment-manager.d.ts","sourceRoot":"","sources":["../../src/payments/seller-payment-manager.ts"],"names":[],"mappings":"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"}