@antseed/node 0.2.27 → 0.2.29
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 +15 -23
- package/dist/payments/evm/identity-client.d.ts.map +1 -1
- package/dist/payments/evm/identity-client.js +68 -99
- 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
|
@@ -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,24 @@
|
|
|
1
|
+
import type { AbstractSigner } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
export interface StakingClientConfig {
|
|
4
|
+
rpcUrl: string;
|
|
5
|
+
contractAddress: string;
|
|
6
|
+
usdcAddress: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SellerAccountInfo {
|
|
9
|
+
stake: bigint;
|
|
10
|
+
stakedAt: bigint;
|
|
11
|
+
}
|
|
12
|
+
export declare class StakingClient extends BaseEvmClient {
|
|
13
|
+
private readonly _usdcAddress;
|
|
14
|
+
constructor(config: StakingClientConfig);
|
|
15
|
+
stake(signer: AbstractSigner, agentId: number, amount: bigint): Promise<string>;
|
|
16
|
+
stakeFor(signer: AbstractSigner, seller: string, agentId: number, amount: bigint): Promise<string>;
|
|
17
|
+
unstake(signer: AbstractSigner): Promise<string>;
|
|
18
|
+
validateSeller(sellerAddr: string): Promise<boolean>;
|
|
19
|
+
getSellerAccount(sellerAddr: string): Promise<SellerAccountInfo>;
|
|
20
|
+
getStake(sellerAddr: string): Promise<bigint>;
|
|
21
|
+
isStakedAboveMin(sellerAddr: string): Promise<boolean>;
|
|
22
|
+
getAgentId(sellerAddr: string): Promise<number>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=staking-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staking-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/staking-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAaD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,mBAAmB;IAKjC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/E,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlG,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAShE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAKtD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
const STAKING_ABI = [
|
|
4
|
+
'function stake(uint256 agentId, uint256 amount) external',
|
|
5
|
+
'function stakeFor(address seller, uint256 agentId, uint256 amount) external',
|
|
6
|
+
'function unstake() external',
|
|
7
|
+
'function validateSeller(address seller) external view returns (bool)',
|
|
8
|
+
'function getSellerAccount(address seller) external view returns (uint256 stake, uint256 stakedAt)',
|
|
9
|
+
'function getStake(address seller) external view returns (uint256)',
|
|
10
|
+
'function isStakedAboveMin(address seller) external view returns (bool)',
|
|
11
|
+
'function getAgentId(address seller) external view returns (uint256)',
|
|
12
|
+
];
|
|
13
|
+
export class StakingClient extends BaseEvmClient {
|
|
14
|
+
_usdcAddress;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
super(config.rpcUrl, config.contractAddress);
|
|
17
|
+
this._usdcAddress = config.usdcAddress;
|
|
18
|
+
}
|
|
19
|
+
async stake(signer, agentId, amount) {
|
|
20
|
+
return this._approveAndExec(signer, this._usdcAddress, amount, STAKING_ABI, 'stake', agentId, amount);
|
|
21
|
+
}
|
|
22
|
+
async stakeFor(signer, seller, agentId, amount) {
|
|
23
|
+
return this._approveAndExec(signer, this._usdcAddress, amount, STAKING_ABI, 'stakeFor', seller, agentId, amount);
|
|
24
|
+
}
|
|
25
|
+
async unstake(signer) {
|
|
26
|
+
return this._execWrite(signer, STAKING_ABI, 'unstake');
|
|
27
|
+
}
|
|
28
|
+
async validateSeller(sellerAddr) {
|
|
29
|
+
const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
|
|
30
|
+
return contract.getFunction('validateSeller')(sellerAddr);
|
|
31
|
+
}
|
|
32
|
+
async getSellerAccount(sellerAddr) {
|
|
33
|
+
const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
|
|
34
|
+
const result = await contract.getFunction('getSellerAccount')(sellerAddr);
|
|
35
|
+
return {
|
|
36
|
+
stake: result[0],
|
|
37
|
+
stakedAt: result[1],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async getStake(sellerAddr) {
|
|
41
|
+
const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
|
|
42
|
+
return contract.getFunction('getStake')(sellerAddr);
|
|
43
|
+
}
|
|
44
|
+
async isStakedAboveMin(sellerAddr) {
|
|
45
|
+
const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
|
|
46
|
+
return contract.getFunction('isStakedAboveMin')(sellerAddr);
|
|
47
|
+
}
|
|
48
|
+
async getAgentId(sellerAddr) {
|
|
49
|
+
const contract = new Contract(this._contractAddress, STAKING_ABI, this._provider);
|
|
50
|
+
const result = await contract.getFunction('getAgentId')(sellerAddr);
|
|
51
|
+
return Number(result);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=staking-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staking-client.js","sourceRoot":"","sources":["../../../src/payments/evm/staking-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
2
|
+
export interface StatsClientConfig {
|
|
3
|
+
rpcUrl: string;
|
|
4
|
+
contractAddress: string;
|
|
5
|
+
}
|
|
6
|
+
export interface AgentStats {
|
|
7
|
+
channelCount: number;
|
|
8
|
+
ghostCount: number;
|
|
9
|
+
totalVolumeUsdc: bigint;
|
|
10
|
+
totalInputTokens: bigint;
|
|
11
|
+
totalOutputTokens: bigint;
|
|
12
|
+
totalLatencyMs: bigint;
|
|
13
|
+
totalRequestCount: number;
|
|
14
|
+
lastSettledAt: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class StatsClient extends BaseEvmClient {
|
|
17
|
+
constructor(config: StatsClientConfig);
|
|
18
|
+
getStats(agentId: number): Promise<AgentStats>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=stats-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/stats-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,qBAAa,WAAY,SAAQ,aAAa;gBAChC,MAAM,EAAE,iBAAiB;IAI/B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAcrD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
const STATS_ABI = [
|
|
4
|
+
'function getStats(uint256 agentId) external view returns (uint64,uint64,uint256,uint128,uint128,uint64,uint64,uint64)',
|
|
5
|
+
];
|
|
6
|
+
export class StatsClient extends BaseEvmClient {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
super(config.rpcUrl, config.contractAddress);
|
|
9
|
+
}
|
|
10
|
+
async getStats(agentId) {
|
|
11
|
+
const contract = new Contract(this._contractAddress, STATS_ABI, this._provider);
|
|
12
|
+
const result = await contract.getFunction('getStats')(agentId);
|
|
13
|
+
return {
|
|
14
|
+
channelCount: Number(result[0]),
|
|
15
|
+
ghostCount: Number(result[1]),
|
|
16
|
+
totalVolumeUsdc: result[2],
|
|
17
|
+
totalInputTokens: result[3],
|
|
18
|
+
totalOutputTokens: result[4],
|
|
19
|
+
totalLatencyMs: result[5],
|
|
20
|
+
totalRequestCount: Number(result[6]),
|
|
21
|
+
lastSettledAt: Number(result[7]),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=stats-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-client.js","sourceRoot":"","sources":["../../../src/payments/evm/stats-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkBrD,MAAM,SAAS,GAAG;IAChB,uHAAuH;CAC/G,CAAC;AAEX,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC5C,YAAY,MAAyB;QACnC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,eAAe,EAAE,MAAM,CAAC,CAAC,CAAW;YACpC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAW;YACrC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAW;YACtC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAW;YACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACjC,CAAC;IACJ,CAAC;CACF"}
|
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"}
|