@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.
- package/README.md +14 -13
- package/dist/buyer-request-handler.d.ts +41 -0
- package/dist/buyer-request-handler.d.ts.map +1 -0
- package/dist/buyer-request-handler.js +254 -0
- package/dist/buyer-request-handler.js.map +1 -0
- package/dist/discovery/announcer.d.ts +5 -4
- package/dist/discovery/announcer.d.ts.map +1 -1
- package/dist/discovery/announcer.js +11 -18
- 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/metadata-codec.d.ts +2 -2
- package/dist/discovery/metadata-codec.d.ts.map +1 -1
- package/dist/discovery/metadata-codec.js +47 -72
- package/dist/discovery/metadata-codec.js.map +1 -1
- package/dist/discovery/metadata-validator.js +6 -6
- package/dist/discovery/metadata-validator.js.map +1 -1
- package/dist/discovery/peer-lookup.d.ts.map +1 -1
- package/dist/discovery/peer-lookup.js +1 -2
- package/dist/discovery/peer-lookup.js.map +1 -1
- package/dist/discovery/peer-metadata.d.ts +3 -5
- package/dist/discovery/peer-metadata.d.ts.map +1 -1
- package/dist/discovery/peer-metadata.js +1 -1
- package/dist/discovery/reputation-verifier.d.ts +2 -25
- package/dist/discovery/reputation-verifier.d.ts.map +1 -1
- package/dist/discovery/reputation-verifier.js +2 -48
- package/dist/discovery/reputation-verifier.js.map +1 -1
- package/dist/discovery/stats-verifier.d.ts +27 -0
- package/dist/discovery/stats-verifier.d.ts.map +1 -0
- package/dist/discovery/stats-verifier.js +38 -0
- package/dist/discovery/stats-verifier.js.map +1 -0
- package/dist/index.d.ts +10 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/metering/index.d.ts +1 -0
- package/dist/metering/index.d.ts.map +1 -1
- package/dist/metering/index.js +1 -0
- package/dist/metering/index.js.map +1 -1
- package/dist/metering/receipt-generator.d.ts +4 -4
- package/dist/metering/receipt-generator.d.ts.map +1 -1
- package/dist/metering/receipt-verifier.d.ts +6 -6
- package/dist/metering/receipt-verifier.d.ts.map +1 -1
- package/dist/metering/receipt-verifier.js +1 -1
- package/dist/metering/seller-session-tracker.d.ts +91 -0
- package/dist/metering/seller-session-tracker.d.ts.map +1 -0
- package/dist/metering/seller-session-tracker.js +261 -0
- package/dist/metering/seller-session-tracker.js.map +1 -0
- package/dist/metering/storage.d.ts +11 -5
- package/dist/metering/storage.d.ts.map +1 -1
- package/dist/metering/storage.js +28 -80
- package/dist/metering/storage.js.map +1 -1
- package/dist/node.d.ts +69 -117
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +240 -1269
- package/dist/node.js.map +1 -1
- package/dist/p2p/connection-auth.d.ts +2 -1
- package/dist/p2p/connection-auth.d.ts.map +1 -1
- package/dist/p2p/connection-auth.js +6 -6
- package/dist/p2p/connection-auth.js.map +1 -1
- package/dist/p2p/connection-manager.d.ts +3 -2
- package/dist/p2p/connection-manager.d.ts.map +1 -1
- package/dist/p2p/connection-manager.js +6 -6
- package/dist/p2p/connection-manager.js.map +1 -1
- package/dist/p2p/identity.d.ts +22 -15
- package/dist/p2p/identity.d.ts.map +1 -1
- package/dist/p2p/identity.js +66 -51
- package/dist/p2p/identity.js.map +1 -1
- package/dist/p2p/index.d.ts +1 -1
- package/dist/p2p/index.d.ts.map +1 -1
- package/dist/p2p/index.js +1 -1
- package/dist/p2p/index.js.map +1 -1
- package/dist/p2p/payment-codec.d.ts +4 -8
- package/dist/p2p/payment-codec.d.ts.map +1 -1
- package/dist/p2p/payment-codec.js +27 -57
- package/dist/p2p/payment-codec.js.map +1 -1
- package/dist/p2p/payment-mux.d.ts +4 -10
- package/dist/p2p/payment-mux.d.ts.map +1 -1
- package/dist/p2p/payment-mux.js +11 -33
- package/dist/p2p/payment-mux.js.map +1 -1
- package/dist/payments/balance-manager.d.ts +2 -2
- package/dist/payments/balance-manager.d.ts.map +1 -1
- package/dist/payments/balance-manager.js +5 -5
- package/dist/payments/balance-manager.js.map +1 -1
- package/dist/payments/buyer-payment-manager.d.ts +154 -21
- package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
- package/dist/payments/buyer-payment-manager.js +540 -166
- package/dist/payments/buyer-payment-manager.js.map +1 -1
- package/dist/payments/buyer-payment-negotiator.d.ts +84 -0
- package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -0
- package/dist/payments/buyer-payment-negotiator.js +624 -0
- package/dist/payments/buyer-payment-negotiator.js.map +1 -0
- package/dist/payments/chain-config.d.ts +10 -4
- package/dist/payments/chain-config.d.ts.map +1 -1
- package/dist/payments/chain-config.js +19 -9
- package/dist/payments/chain-config.js.map +1 -1
- package/dist/payments/channel-session-state.d.ts +13 -0
- package/dist/payments/channel-session-state.d.ts.map +1 -0
- package/dist/payments/channel-session-state.js +25 -0
- package/dist/payments/channel-session-state.js.map +1 -0
- package/dist/payments/channel-store.d.ts +87 -0
- package/dist/payments/channel-store.d.ts.map +1 -0
- package/dist/payments/channel-store.js +276 -0
- package/dist/payments/channel-store.js.map +1 -0
- package/dist/payments/evm/ants-token-client.d.ts +1 -1
- package/dist/payments/evm/ants-token-client.d.ts.map +1 -1
- package/dist/payments/evm/ants-token-client.js +3 -4
- package/dist/payments/evm/ants-token-client.js.map +1 -1
- package/dist/payments/evm/base-evm-client.d.ts +10 -1
- package/dist/payments/evm/base-evm-client.d.ts.map +1 -1
- package/dist/payments/evm/base-evm-client.js +34 -1
- package/dist/payments/evm/base-evm-client.js.map +1 -1
- package/dist/payments/evm/channels-client.d.ts +51 -0
- package/dist/payments/evm/channels-client.d.ts.map +1 -0
- package/dist/payments/evm/channels-client.js +101 -0
- package/dist/payments/evm/channels-client.js.map +1 -0
- package/dist/payments/evm/deposits-client.d.ts +30 -0
- package/dist/payments/evm/deposits-client.d.ts.map +1 -0
- package/dist/payments/evm/deposits-client.js +78 -0
- package/dist/payments/evm/deposits-client.js.map +1 -0
- package/dist/payments/evm/emissions-client.d.ts +3 -4
- package/dist/payments/evm/emissions-client.d.ts.map +1 -1
- package/dist/payments/evm/emissions-client.js +11 -30
- package/dist/payments/evm/emissions-client.js.map +1 -1
- package/dist/payments/evm/identity-client.d.ts +10 -23
- package/dist/payments/evm/identity-client.d.ts.map +1 -1
- package/dist/payments/evm/identity-client.js +43 -100
- package/dist/payments/evm/identity-client.js.map +1 -1
- package/dist/payments/evm/keypair.d.ts +3 -14
- package/dist/payments/evm/keypair.d.ts.map +1 -1
- package/dist/payments/evm/keypair.js +4 -20
- package/dist/payments/evm/keypair.js.map +1 -1
- package/dist/payments/evm/sessions-client.d.ts +30 -0
- package/dist/payments/evm/sessions-client.d.ts.map +1 -0
- package/dist/payments/evm/sessions-client.js +61 -0
- package/dist/payments/evm/sessions-client.js.map +1 -0
- package/dist/payments/evm/signatures.d.ts +43 -12
- package/dist/payments/evm/signatures.d.ts.map +1 -1
- package/dist/payments/evm/signatures.js +62 -45
- package/dist/payments/evm/signatures.js.map +1 -1
- package/dist/payments/evm/staking-client.d.ts +24 -0
- package/dist/payments/evm/staking-client.d.ts.map +1 -0
- package/dist/payments/evm/staking-client.js +54 -0
- package/dist/payments/evm/staking-client.js.map +1 -0
- package/dist/payments/evm/stats-client.d.ts +20 -0
- package/dist/payments/evm/stats-client.d.ts.map +1 -0
- package/dist/payments/evm/stats-client.js +25 -0
- package/dist/payments/evm/stats-client.js.map +1 -0
- package/dist/payments/index.d.ts +17 -10
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +15 -8
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/pricing.d.ts +25 -0
- package/dist/payments/pricing.d.ts.map +1 -0
- package/dist/payments/pricing.js +33 -0
- package/dist/payments/pricing.js.map +1 -0
- package/dist/payments/readiness.d.ts +4 -3
- package/dist/payments/readiness.d.ts.map +1 -1
- package/dist/payments/readiness.js +11 -18
- package/dist/payments/readiness.js.map +1 -1
- package/dist/payments/seller-payment-manager.d.ts +72 -47
- package/dist/payments/seller-payment-manager.d.ts.map +1 -1
- package/dist/payments/seller-payment-manager.js +558 -275
- package/dist/payments/seller-payment-manager.js.map +1 -1
- package/dist/payments/session-store.d.ts +3 -0
- package/dist/payments/session-store.d.ts.map +1 -1
- package/dist/payments/session-store.js +31 -2
- package/dist/payments/session-store.js.map +1 -1
- package/dist/payments/types.d.ts +5 -3
- package/dist/payments/types.d.ts.map +1 -1
- package/dist/proxy/proxy-mux.d.ts.map +1 -1
- package/dist/proxy/proxy-mux.js +3 -2
- package/dist/proxy/proxy-mux.js.map +1 -1
- package/dist/proxy/request-codec.d.ts.map +1 -1
- package/dist/proxy/request-codec.js +3 -0
- package/dist/proxy/request-codec.js.map +1 -1
- package/dist/reputation/rating-manager.d.ts.map +1 -1
- package/dist/reputation/rating-manager.js +2 -4
- package/dist/reputation/rating-manager.js.map +1 -1
- package/dist/reputation/report-manager.d.ts.map +1 -1
- package/dist/reputation/report-manager.js +2 -4
- package/dist/reputation/report-manager.js.map +1 -1
- package/dist/routing/default-router.d.ts.map +1 -1
- package/dist/routing/default-router.js +4 -9
- package/dist/routing/default-router.js.map +1 -1
- package/dist/seller-request-handler.d.ts +54 -0
- package/dist/seller-request-handler.d.ts.map +1 -0
- package/dist/seller-request-handler.js +359 -0
- package/dist/seller-request-handler.js.map +1 -0
- package/dist/storage/migrate.d.ts +13 -0
- package/dist/storage/migrate.d.ts.map +1 -0
- package/dist/storage/migrate.js +28 -0
- package/dist/storage/migrate.js.map +1 -0
- package/dist/storage/migrations/channels/001_create_tables.d.ts +3 -0
- package/dist/storage/migrations/channels/001_create_tables.d.ts.map +1 -0
- package/dist/storage/migrations/channels/001_create_tables.js +45 -0
- package/dist/storage/migrations/channels/001_create_tables.js.map +1 -0
- package/dist/storage/migrations/channels/002_add_auth_sig_columns.d.ts +3 -0
- package/dist/storage/migrations/channels/002_add_auth_sig_columns.d.ts.map +1 -0
- package/dist/storage/migrations/channels/002_add_auth_sig_columns.js +19 -0
- package/dist/storage/migrations/channels/002_add_auth_sig_columns.js.map +1 -0
- package/dist/storage/migrations/channels/index.d.ts +3 -0
- package/dist/storage/migrations/channels/index.d.ts.map +1 -0
- package/dist/storage/migrations/channels/index.js +4 -0
- package/dist/storage/migrations/channels/index.js.map +1 -0
- package/dist/storage/migrations/metering/001_create_tables.d.ts +3 -0
- package/dist/storage/migrations/metering/001_create_tables.d.ts.map +1 -0
- package/dist/storage/migrations/metering/001_create_tables.js +80 -0
- package/dist/storage/migrations/metering/001_create_tables.js.map +1 -0
- package/dist/storage/migrations/metering/index.d.ts +3 -0
- package/dist/storage/migrations/metering/index.d.ts.map +1 -0
- package/dist/storage/migrations/metering/index.js +3 -0
- package/dist/storage/migrations/metering/index.js.map +1 -0
- package/dist/types/capability.d.ts +1 -1
- package/dist/types/metering.d.ts +1 -1
- package/dist/types/peer.d.ts +10 -11
- package/dist/types/peer.d.ts.map +1 -1
- package/dist/types/peer.js +7 -3
- package/dist/types/peer.js.map +1 -1
- package/dist/types/protocol.d.ts +22 -70
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +1 -3
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/rating.d.ts +1 -1
- package/dist/types/rating.d.ts.map +1 -1
- package/dist/types/report.d.ts +1 -1
- package/dist/types/report.d.ts.map +1 -1
- package/dist/utils/response-usage.d.ts +10 -0
- package/dist/utils/response-usage.d.ts.map +1 -0
- package/dist/utils/response-usage.js +34 -0
- package/dist/utils/response-usage.js.map +1 -0
- 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAarD,MAAM,WAAW,GAAG;IAClB,0DAA0D;IAC1D,6EAA6E;IAC7E,6BAA6B;IAC7B,sEAAsE;IACtE,mGAAmG;IACnG,mEAAmE;IACnE,wEAAwE;IACxE,qEAAqE;CAC7D,CAAC;AAEX,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC7B,YAAY,CAAS;IAEtC,YAAY,MAA2B;QACrC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAsB,EAAE,OAAe,EAAE,MAAc;QACjE,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxG,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAsB,EAAE,MAAc,EAAE,OAAe,EAAE,MAAc;QACpF,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACnH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAqB,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACvC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC;QAC1E,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAW;YAC1B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAW;SAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAAkB;QAC/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,CAAoB,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACvC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAqB,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAkB;QACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -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"}
|
package/dist/payments/index.d.ts
CHANGED
|
@@ -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 {
|
|
6
|
-
export type {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export
|
|
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 {
|
|
19
|
-
export type {
|
|
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,
|
|
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"}
|
package/dist/payments/index.js
CHANGED
|
@@ -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
|
-
//
|
|
6
|
-
export {
|
|
7
|
-
|
|
8
|
-
export {
|
|
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
|
-
//
|
|
18
|
-
export {
|
|
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,
|
|
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
|
|
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,
|
|
11
|
-
export declare function checkBuyerReadiness(identity: Identity,
|
|
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,
|
|
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,
|
|
2
|
+
export async function checkSellerReadiness(identity, identityClient, stakingClient) {
|
|
4
3
|
const checks = [];
|
|
5
|
-
const evmAddr =
|
|
4
|
+
const evmAddr = identity.wallet.address;
|
|
6
5
|
// 1. ETH for gas
|
|
7
|
-
const ethBalance = await
|
|
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
|
|
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,
|
|
33
|
+
export async function checkBuyerReadiness(identity, depositsClient) {
|
|
41
34
|
const checks = [];
|
|
42
|
-
const evmAddr =
|
|
35
|
+
const evmAddr = identity.wallet.address;
|
|
43
36
|
// 1. ETH for gas
|
|
44
|
-
const ethBalance = await
|
|
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
|
|
53
|
-
const balance = await
|
|
45
|
+
// 2. USDC in deposits
|
|
46
|
+
const balance = await depositsClient.getBuyerBalance(evmAddr);
|
|
54
47
|
checks.push({
|
|
55
|
-
name: '
|
|
48
|
+
name: 'Deposit balance',
|
|
56
49
|
passed: balance.available > 0n,
|
|
57
50
|
message: balance.available > 0n
|
|
58
51
|
? `Available: ${balance.available}`
|
|
59
|
-
: 'No USDC
|
|
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":"
|
|
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,
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
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
|
-
|
|
9
|
-
usdcAddress: string;
|
|
8
|
+
channelsContractAddress: string;
|
|
10
9
|
chainId: number;
|
|
11
10
|
dataDir: string;
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
|
|
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
|
|
21
|
-
*
|
|
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
|
|
25
|
+
private readonly _channelsClient;
|
|
27
26
|
private readonly _config;
|
|
28
|
-
private readonly
|
|
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
|
-
|
|
40
|
-
|
|
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
|
-
*
|
|
44
|
-
*
|
|
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,
|
|
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
|
-
*
|
|
52
|
-
*
|
|
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
|
-
|
|
55
|
-
|
|
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
|
|
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
|
-
/**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
}):
|
|
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":"
|
|
1
|
+
{"version":3,"file":"seller-payment-manager.d.ts","sourceRoot":"","sources":["../../src/payments/seller-payment-manager.ts"],"names":[],"mappings":"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"}
|