@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.
- package/README.md +74 -1
- package/dist/discovery/announcer.d.ts +2 -0
- package/dist/discovery/announcer.d.ts.map +1 -1
- package/dist/discovery/announcer.js +10 -6
- package/dist/discovery/announcer.js.map +1 -1
- package/dist/discovery/index.d.ts +0 -1
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +0 -1
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/reputation-verifier.d.ts +7 -4
- package/dist/discovery/reputation-verifier.d.ts.map +1 -1
- package/dist/discovery/reputation-verifier.js +33 -9
- package/dist/discovery/reputation-verifier.js.map +1 -1
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +60 -33
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +640 -324
- package/dist/node.js.map +1 -1
- package/dist/p2p/connection-manager.d.ts.map +1 -1
- package/dist/p2p/connection-manager.js +6 -0
- package/dist/p2p/connection-manager.js.map +1 -1
- package/dist/p2p/identity.d.ts +27 -3
- package/dist/p2p/identity.d.ts.map +1 -1
- package/dist/p2p/identity.js +52 -13
- package/dist/p2p/identity.js.map +1 -1
- package/dist/p2p/index.d.ts +0 -2
- package/dist/p2p/index.d.ts.map +1 -1
- package/dist/p2p/index.js +0 -2
- package/dist/p2p/index.js.map +1 -1
- package/dist/p2p/payment-codec.d.ts +7 -13
- package/dist/p2p/payment-codec.d.ts.map +1 -1
- package/dist/p2p/payment-codec.js +32 -50
- package/dist/p2p/payment-codec.js.map +1 -1
- package/dist/p2p/payment-mux.d.ts +11 -20
- package/dist/p2p/payment-mux.d.ts.map +1 -1
- package/dist/p2p/payment-mux.js +36 -52
- package/dist/p2p/payment-mux.js.map +1 -1
- package/dist/payments/buyer-payment-manager.d.ts +34 -93
- package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
- package/dist/payments/buyer-payment-manager.js +184 -189
- package/dist/payments/buyer-payment-manager.js.map +1 -1
- package/dist/payments/chain-config.d.ts +38 -0
- package/dist/payments/chain-config.d.ts.map +1 -0
- package/dist/payments/chain-config.js +60 -0
- package/dist/payments/chain-config.js.map +1 -0
- package/dist/payments/evm/ants-token-client.d.ts +16 -0
- package/dist/payments/evm/ants-token-client.d.ts.map +1 -0
- package/dist/payments/evm/ants-token-client.js +66 -0
- package/dist/payments/evm/ants-token-client.js.map +1 -0
- package/dist/payments/evm/base-evm-client.d.ts +13 -0
- package/dist/payments/evm/base-evm-client.d.ts.map +1 -0
- package/dist/payments/evm/base-evm-client.js +38 -0
- package/dist/payments/evm/base-evm-client.js.map +1 -0
- package/dist/payments/evm/emissions-client.d.ts +23 -0
- package/dist/payments/evm/emissions-client.d.ts.map +1 -0
- package/dist/payments/evm/emissions-client.js +84 -0
- package/dist/payments/evm/emissions-client.js.map +1 -0
- package/dist/payments/evm/escrow-client.d.ts +57 -36
- package/dist/payments/evm/escrow-client.d.ts.map +1 -1
- package/dist/payments/evm/escrow-client.js +200 -93
- package/dist/payments/evm/escrow-client.js.map +1 -1
- package/dist/payments/evm/identity-client.d.ts +34 -0
- package/dist/payments/evm/identity-client.d.ts.map +1 -0
- package/dist/payments/evm/identity-client.js +125 -0
- package/dist/payments/evm/identity-client.js.map +1 -0
- package/dist/payments/evm/signatures.d.ts +18 -5
- package/dist/payments/evm/signatures.d.ts.map +1 -1
- package/dist/payments/evm/signatures.js +21 -12
- package/dist/payments/evm/signatures.js.map +1 -1
- package/dist/payments/evm/subpool-client.d.ts +30 -0
- package/dist/payments/evm/subpool-client.d.ts.map +1 -0
- package/dist/payments/evm/subpool-client.js +158 -0
- package/dist/payments/evm/subpool-client.js.map +1 -0
- package/dist/payments/index.d.ts +20 -7
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +17 -6
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/readiness.d.ts +12 -0
- package/dist/payments/readiness.d.ts.map +1 -0
- package/dist/payments/readiness.js +64 -0
- package/dist/payments/readiness.js.map +1 -0
- package/dist/payments/seller-payment-manager.d.ts +74 -34
- package/dist/payments/seller-payment-manager.d.ts.map +1 -1
- package/dist/payments/seller-payment-manager.js +327 -118
- package/dist/payments/seller-payment-manager.js.map +1 -1
- package/dist/payments/session-store.d.ts +65 -0
- package/dist/payments/session-store.d.ts.map +1 -0
- package/dist/payments/session-store.js +243 -0
- package/dist/payments/session-store.js.map +1 -0
- package/dist/payments/usdc-utils.d.ts +9 -0
- package/dist/payments/usdc-utils.d.ts.map +1 -0
- package/dist/payments/usdc-utils.js +17 -0
- package/dist/payments/usdc-utils.js.map +1 -0
- package/dist/types/http.d.ts +2 -0
- package/dist/types/http.d.ts.map +1 -1
- package/dist/types/http.js +2 -0
- package/dist/types/http.js.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/metering.d.ts +1 -1
- package/dist/types/metering.d.ts.map +1 -1
- package/dist/types/protocol.d.ts +43 -60
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +5 -8
- package/dist/types/protocol.js.map +1 -1
- 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
|
-
//
|
|
3
|
+
// EIP-712 Spending Authorization (on-chain) — verified by contract
|
|
5
4
|
// =========================================================================
|
|
6
|
-
export
|
|
7
|
-
|
|
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
|
|
10
|
-
return
|
|
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":"
|
|
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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"}
|
package/dist/payments/index.d.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
export type { PaymentMethod, ChainId, WalletInfo, TransactionType, Transaction, PaymentConfig, CryptoPaymentConfig,
|
|
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 {
|
|
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,
|
|
6
|
+
export type { BaseEscrowConfig, SessionInfo, BuyerBalanceInfo, SellerAccountInfo } from './evm/escrow-client.js';
|
|
8
7
|
export { identityToEvmWallet, identityToEvmAddress } from './evm/keypair.js';
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
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
|
|
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,
|
|
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"}
|
package/dist/payments/index.js
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
// Balance tracking (local transaction history)
|
|
2
2
|
export { BalanceManager } from './balance-manager.js';
|
|
3
|
-
//
|
|
4
|
-
export {
|
|
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 {
|
|
11
|
-
|
|
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":"
|
|
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 {
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
28
|
-
private readonly
|
|
24
|
+
private readonly _identity;
|
|
25
|
+
private readonly _signer;
|
|
26
|
+
private readonly _escrowClient;
|
|
29
27
|
private readonly _config;
|
|
30
|
-
private readonly
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"seller-payment-manager.d.ts","sourceRoot":"","sources":["../../src/payments/seller-payment-manager.ts"],"names":[],"mappings":"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"}
|