@antseed/node 0.2.26 → 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 +85 -11
- 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 -2
- package/dist/discovery/announcer.d.ts.map +1 -1
- package/dist/discovery/announcer.js +11 -14
- package/dist/discovery/announcer.js.map +1 -1
- package/dist/discovery/index.d.ts +0 -2
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +0 -2
- 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 -22
- package/dist/discovery/reputation-verifier.d.ts.map +1 -1
- package/dist/discovery/reputation-verifier.js +2 -24
- 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 +17 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -3
- 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 +83 -104
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +313 -1026
- 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 +12 -6
- package/dist/p2p/connection-manager.js.map +1 -1
- package/dist/p2p/identity.d.ts +44 -13
- package/dist/p2p/identity.d.ts.map +1 -1
- package/dist/p2p/identity.js +103 -49
- package/dist/p2p/identity.js.map +1 -1
- package/dist/p2p/index.d.ts +1 -3
- package/dist/p2p/index.d.ts.map +1 -1
- package/dist/p2p/index.js +1 -3
- package/dist/p2p/index.js.map +1 -1
- package/dist/p2p/payment-codec.d.ts +9 -19
- package/dist/p2p/payment-codec.d.ts.map +1 -1
- package/dist/p2p/payment-codec.js +41 -89
- package/dist/p2p/payment-codec.js.map +1 -1
- package/dist/p2p/payment-mux.d.ts +14 -29
- package/dist/p2p/payment-mux.d.ts.map +1 -1
- package/dist/p2p/payment-mux.js +41 -79
- 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 +157 -83
- package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
- package/dist/payments/buyer-payment-manager.js +573 -204
- 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 +44 -0
- package/dist/payments/chain-config.d.ts.map +1 -0
- package/dist/payments/chain-config.js +70 -0
- package/dist/payments/chain-config.js.map +1 -0
- 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 +16 -0
- package/dist/payments/evm/ants-token-client.d.ts.map +1 -0
- package/dist/payments/evm/ants-token-client.js +65 -0
- package/dist/payments/evm/ants-token-client.js.map +1 -0
- package/dist/payments/evm/base-evm-client.d.ts +22 -0
- package/dist/payments/evm/base-evm-client.d.ts.map +1 -0
- package/dist/payments/evm/base-evm-client.js +71 -0
- package/dist/payments/evm/base-evm-client.js.map +1 -0
- 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 +22 -0
- package/dist/payments/evm/emissions-client.d.ts.map +1 -0
- package/dist/payments/evm/emissions-client.js +65 -0
- package/dist/payments/evm/emissions-client.js.map +1 -0
- package/dist/payments/evm/escrow-client.d.ts +57 -36
- package/dist/payments/evm/escrow-client.d.ts.map +1 -1
- package/dist/payments/evm/escrow-client.js +200 -93
- package/dist/payments/evm/escrow-client.js.map +1 -1
- package/dist/payments/evm/identity-client.d.ts +21 -0
- package/dist/payments/evm/identity-client.d.ts.map +1 -0
- package/dist/payments/evm/identity-client.js +68 -0
- package/dist/payments/evm/identity-client.js.map +1 -0
- 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 +54 -10
- package/dist/payments/evm/signatures.d.ts.map +1 -1
- package/dist/payments/evm/signatures.js +80 -54
- 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/evm/subpool-client.d.ts +30 -0
- package/dist/payments/evm/subpool-client.d.ts.map +1 -0
- package/dist/payments/evm/subpool-client.js +158 -0
- package/dist/payments/evm/subpool-client.js.map +1 -0
- package/dist/payments/index.d.ts +29 -9
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +27 -9
- 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 +13 -0
- package/dist/payments/readiness.d.ts.map +1 -0
- package/dist/payments/readiness.js +57 -0
- package/dist/payments/readiness.js.map +1 -0
- package/dist/payments/seller-payment-manager.d.ts +101 -36
- package/dist/payments/seller-payment-manager.d.ts.map +1 -1
- package/dist/payments/seller-payment-manager.js +612 -120
- package/dist/payments/seller-payment-manager.js.map +1 -1
- package/dist/payments/session-store.d.ts +68 -0
- package/dist/payments/session-store.d.ts.map +1 -0
- package/dist/payments/session-store.js +272 -0
- package/dist/payments/session-store.js.map +1 -0
- package/dist/payments/types.d.ts +5 -3
- package/dist/payments/types.d.ts.map +1 -1
- package/dist/payments/usdc-utils.d.ts +9 -0
- package/dist/payments/usdc-utils.d.ts.map +1 -0
- package/dist/payments/usdc-utils.js +17 -0
- package/dist/payments/usdc-utils.js.map +1 -0
- package/dist/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/http.d.ts +2 -0
- package/dist/types/http.d.ts.map +1 -1
- package/dist/types/http.js +2 -0
- package/dist/types/http.js.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/metering.d.ts +2 -2
- package/dist/types/metering.d.ts.map +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 +32 -97
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +5 -10
- 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 +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ants-token-client.js","sourceRoot":"","sources":["../../../src/payments/evm/ants-token-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { JsonRpcProvider, type AbstractSigner, type InterfaceAbi } from 'ethers';
|
|
2
|
+
export declare const ERC20_ABI: readonly ["function approve(address spender, uint256 amount) external returns (bool)", "function balanceOf(address owner) external view returns (uint256)", "function allowance(address owner, address spender) external view returns (uint256)"];
|
|
3
|
+
export declare abstract class BaseEvmClient {
|
|
4
|
+
protected readonly _provider: JsonRpcProvider;
|
|
5
|
+
protected readonly _contractAddress: string;
|
|
6
|
+
protected readonly _nonceCursor: Map<string, number>;
|
|
7
|
+
private readonly _nonceLocks;
|
|
8
|
+
constructor(rpcUrl: string, contractAddress: string);
|
|
9
|
+
get provider(): JsonRpcProvider;
|
|
10
|
+
get contractAddress(): string;
|
|
11
|
+
protected _ensureConnected(signer: AbstractSigner): AbstractSigner;
|
|
12
|
+
/**
|
|
13
|
+
* Execute a write transaction: connect signer, reserve nonce, send, wait for receipt.
|
|
14
|
+
*/
|
|
15
|
+
protected _execWrite(signer: AbstractSigner, abi: InterfaceAbi, method: string, ...args: unknown[]): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Approve USDC spending then execute a contract method.
|
|
18
|
+
*/
|
|
19
|
+
protected _approveAndExec(signer: AbstractSigner, usdcAddress: string, amount: bigint, abi: InterfaceAbi, method: string, ...args: unknown[]): Promise<string>;
|
|
20
|
+
protected _reserveNonce(address: string): Promise<number>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=base-evm-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-evm-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/base-evm-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3F,eAAO,MAAM,SAAS,mPAIZ,CAAC;AAEX,8BAAsB,aAAa;IACjC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,YAAY,sBAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoC;gBAEpD,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;IAKnD,IAAI,QAAQ,IAAI,eAAe,CAA2B;IAC1D,IAAI,eAAe,IAAI,MAAM,CAAkC;IAE/D,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc;IAKlE;;OAEG;cACa,UAAU,CACxB,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC;IAWlB;;OAEG;cACa,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC;cAWF,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmBhE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Contract, JsonRpcProvider } from 'ethers';
|
|
2
|
+
export const ERC20_ABI = [
|
|
3
|
+
'function approve(address spender, uint256 amount) external returns (bool)',
|
|
4
|
+
'function balanceOf(address owner) external view returns (uint256)',
|
|
5
|
+
'function allowance(address owner, address spender) external view returns (uint256)',
|
|
6
|
+
];
|
|
7
|
+
export class BaseEvmClient {
|
|
8
|
+
_provider;
|
|
9
|
+
_contractAddress;
|
|
10
|
+
_nonceCursor = new Map();
|
|
11
|
+
_nonceLocks = new Map();
|
|
12
|
+
constructor(rpcUrl, contractAddress) {
|
|
13
|
+
this._provider = new JsonRpcProvider(rpcUrl);
|
|
14
|
+
this._contractAddress = contractAddress;
|
|
15
|
+
}
|
|
16
|
+
get provider() { return this._provider; }
|
|
17
|
+
get contractAddress() { return this._contractAddress; }
|
|
18
|
+
_ensureConnected(signer) {
|
|
19
|
+
if (signer.provider)
|
|
20
|
+
return signer;
|
|
21
|
+
return signer.connect(this._provider);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Execute a write transaction: connect signer, reserve nonce, send, wait for receipt.
|
|
25
|
+
*/
|
|
26
|
+
async _execWrite(signer, abi, method, ...args) {
|
|
27
|
+
const connected = this._ensureConnected(signer);
|
|
28
|
+
const signerAddress = await connected.getAddress();
|
|
29
|
+
const nonce = await this._reserveNonce(signerAddress);
|
|
30
|
+
const contract = new Contract(this._contractAddress, abi, connected);
|
|
31
|
+
const tx = await contract.getFunction(method)(...args, { nonce });
|
|
32
|
+
const receipt = await tx.wait();
|
|
33
|
+
if (!receipt)
|
|
34
|
+
throw new Error('Transaction was dropped or replaced');
|
|
35
|
+
return receipt.hash;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Approve USDC spending then execute a contract method.
|
|
39
|
+
*/
|
|
40
|
+
async _approveAndExec(signer, usdcAddress, amount, abi, method, ...args) {
|
|
41
|
+
const connected = this._ensureConnected(signer);
|
|
42
|
+
const signerAddress = await connected.getAddress();
|
|
43
|
+
const usdc = new Contract(usdcAddress, ERC20_ABI, connected);
|
|
44
|
+
const approveNonce = await this._reserveNonce(signerAddress);
|
|
45
|
+
const approveTx = await usdc.getFunction('approve')(this._contractAddress, amount, { nonce: approveNonce });
|
|
46
|
+
const approveReceipt = await approveTx.wait();
|
|
47
|
+
if (!approveReceipt)
|
|
48
|
+
throw new Error('Approve transaction was dropped or replaced');
|
|
49
|
+
return this._execWrite(signer, abi, method, ...args);
|
|
50
|
+
}
|
|
51
|
+
async _reserveNonce(address) {
|
|
52
|
+
// Serialize nonce reservation per address to prevent concurrent calls
|
|
53
|
+
// from reading the same network nonce before either updates the cursor
|
|
54
|
+
const prev = this._nonceLocks.get(address) ?? Promise.resolve();
|
|
55
|
+
let resolve;
|
|
56
|
+
const lock = new Promise(r => { resolve = r; });
|
|
57
|
+
this._nonceLocks.set(address, lock);
|
|
58
|
+
await prev;
|
|
59
|
+
try {
|
|
60
|
+
const networkNonce = await this._provider.getTransactionCount(address, 'pending');
|
|
61
|
+
const cachedNext = this._nonceCursor.get(address);
|
|
62
|
+
const nonce = cachedNext === undefined ? networkNonce : Math.max(networkNonce, cachedNext);
|
|
63
|
+
this._nonceCursor.set(address, nonce + 1);
|
|
64
|
+
return nonce;
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
resolve();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=base-evm-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-evm-client.js","sourceRoot":"","sources":["../../../src/payments/evm/base-evm-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type AbstractSigner } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
export interface ChannelsClientConfig {
|
|
4
|
+
rpcUrl: string;
|
|
5
|
+
contractAddress: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AgentStats {
|
|
8
|
+
channelCount: number;
|
|
9
|
+
ghostCount: number;
|
|
10
|
+
totalVolumeUsdc: bigint;
|
|
11
|
+
lastSettledAt: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ChannelInfo {
|
|
14
|
+
buyer: string;
|
|
15
|
+
seller: string;
|
|
16
|
+
deposit: bigint;
|
|
17
|
+
settled: bigint;
|
|
18
|
+
metadataHash: string;
|
|
19
|
+
deadline: bigint;
|
|
20
|
+
settledAt: bigint;
|
|
21
|
+
closeRequestedAt: bigint;
|
|
22
|
+
status: number;
|
|
23
|
+
}
|
|
24
|
+
export interface CloseRequestedEvent {
|
|
25
|
+
channelId: string;
|
|
26
|
+
buyer: string;
|
|
27
|
+
}
|
|
28
|
+
export declare class ChannelsClient extends BaseEvmClient {
|
|
29
|
+
constructor(config: ChannelsClientConfig);
|
|
30
|
+
reserve(signer: AbstractSigner, buyer: string, salt: string, maxAmount: bigint, deadline: bigint, buyerSig: string): Promise<string>;
|
|
31
|
+
settle(signer: AbstractSigner, channelId: string, cumulativeAmount: bigint, metadata: string, buyerSig: string): Promise<string>;
|
|
32
|
+
close(signer: AbstractSigner, channelId: string, finalAmount: bigint, metadata: string, buyerSig: string): Promise<string>;
|
|
33
|
+
topUp(signer: AbstractSigner, channelId: string, newMaxAmount: bigint, deadline: bigint, buyerSig: string): Promise<string>;
|
|
34
|
+
requestClose(signer: AbstractSigner, channelId: string): Promise<string>;
|
|
35
|
+
withdraw(signer: AbstractSigner, channelId: string): Promise<string>;
|
|
36
|
+
getSession(channelId: string): Promise<ChannelInfo>;
|
|
37
|
+
domainSeparator(): Promise<string>;
|
|
38
|
+
getFirstSignCap(): Promise<bigint>;
|
|
39
|
+
computeChannelId(buyer: string, seller: string, salt: string): Promise<string>;
|
|
40
|
+
getAgentStats(agentId: number): Promise<AgentStats>;
|
|
41
|
+
/**
|
|
42
|
+
* Query CloseRequested events from the Channels contract.
|
|
43
|
+
* Returns matching events between fromBlock and toBlock (inclusive).
|
|
44
|
+
*/
|
|
45
|
+
getCloseRequestedEvents(fromBlock: number | 'latest', toBlock?: number | 'latest'): Promise<CloseRequestedEvent[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Get the current block number from the provider.
|
|
48
|
+
*/
|
|
49
|
+
getBlockNumber(): Promise<number>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=channels-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/channels-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAoB,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,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,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAiBD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,cAAe,SAAQ,aAAa;gBACnC,MAAM,EAAE,oBAAoB;IAIlC,OAAO,CACX,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAOZ,MAAM,CACV,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAOZ,KAAK,CACT,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAOZ,KAAK,CACT,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAOZ,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxE,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgBnD,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9E,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAWzD;;;OAGG;IACG,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,GAAE,MAAM,GAAG,QAAmB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAiBlI;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAGxC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Contract, ethers } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
const CHANNELS_ABI = [
|
|
4
|
+
'function reserve(address buyer, bytes32 salt, uint128 maxAmount, uint256 deadline, bytes buyerSig) external',
|
|
5
|
+
'function settle(bytes32 channelId, uint128 cumulativeAmount, bytes metadata, bytes buyerSig) external',
|
|
6
|
+
'function close(bytes32 channelId, uint128 finalAmount, bytes metadata, bytes buyerSig) external',
|
|
7
|
+
'function topUp(bytes32 channelId, uint128 newMaxAmount, uint256 deadline, bytes buyerSig) external',
|
|
8
|
+
'function requestClose(bytes32 channelId) external',
|
|
9
|
+
'function withdraw(bytes32 channelId) external',
|
|
10
|
+
'function channels(bytes32 channelId) external view returns (address buyer, address seller, uint128 deposit, uint128 settled, bytes32 metadataHash, uint256 deadline, uint256 settledAt, uint256 closeRequestedAt, uint8 status)',
|
|
11
|
+
'function computeChannelId(address buyer, address seller, bytes32 salt) external pure returns (bytes32)',
|
|
12
|
+
'function getAgentStats(uint256 agentId) external view returns (uint64 channelCount, uint64 ghostCount, uint256 totalVolumeUsdc, uint64 lastSettledAt)',
|
|
13
|
+
'function domainSeparator() external view returns (bytes32)',
|
|
14
|
+
'function FIRST_SIGN_CAP() external view returns (uint256)',
|
|
15
|
+
'event CloseRequested(bytes32 indexed channelId, address indexed buyer)',
|
|
16
|
+
];
|
|
17
|
+
export class ChannelsClient extends BaseEvmClient {
|
|
18
|
+
constructor(config) {
|
|
19
|
+
super(config.rpcUrl, config.contractAddress);
|
|
20
|
+
}
|
|
21
|
+
async reserve(signer, buyer, salt, maxAmount, deadline, buyerSig) {
|
|
22
|
+
return this._execWrite(signer, CHANNELS_ABI, 'reserve', buyer, salt, maxAmount, deadline, buyerSig);
|
|
23
|
+
}
|
|
24
|
+
async settle(signer, channelId, cumulativeAmount, metadata, buyerSig) {
|
|
25
|
+
return this._execWrite(signer, CHANNELS_ABI, 'settle', channelId, cumulativeAmount, metadata, buyerSig);
|
|
26
|
+
}
|
|
27
|
+
async close(signer, channelId, finalAmount, metadata, buyerSig) {
|
|
28
|
+
return this._execWrite(signer, CHANNELS_ABI, 'close', channelId, finalAmount, metadata, buyerSig);
|
|
29
|
+
}
|
|
30
|
+
async topUp(signer, channelId, newMaxAmount, deadline, buyerSig) {
|
|
31
|
+
return this._execWrite(signer, CHANNELS_ABI, 'topUp', channelId, newMaxAmount, deadline, buyerSig);
|
|
32
|
+
}
|
|
33
|
+
async requestClose(signer, channelId) {
|
|
34
|
+
return this._execWrite(signer, CHANNELS_ABI, 'requestClose', channelId);
|
|
35
|
+
}
|
|
36
|
+
async withdraw(signer, channelId) {
|
|
37
|
+
return this._execWrite(signer, CHANNELS_ABI, 'withdraw', channelId);
|
|
38
|
+
}
|
|
39
|
+
async getSession(channelId) {
|
|
40
|
+
const contract = new Contract(this._contractAddress, CHANNELS_ABI, this._provider);
|
|
41
|
+
const result = await contract.getFunction('channels')(channelId);
|
|
42
|
+
return {
|
|
43
|
+
buyer: result[0],
|
|
44
|
+
seller: result[1],
|
|
45
|
+
deposit: result[2],
|
|
46
|
+
settled: result[3],
|
|
47
|
+
metadataHash: result[4],
|
|
48
|
+
deadline: result[5],
|
|
49
|
+
settledAt: result[6],
|
|
50
|
+
closeRequestedAt: result[7],
|
|
51
|
+
status: Number(result[8]),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async domainSeparator() {
|
|
55
|
+
const contract = new Contract(this._contractAddress, CHANNELS_ABI, this._provider);
|
|
56
|
+
return contract.getFunction('domainSeparator')();
|
|
57
|
+
}
|
|
58
|
+
async getFirstSignCap() {
|
|
59
|
+
const contract = new Contract(this._contractAddress, CHANNELS_ABI, this._provider);
|
|
60
|
+
return contract.getFunction('FIRST_SIGN_CAP')();
|
|
61
|
+
}
|
|
62
|
+
async computeChannelId(buyer, seller, salt) {
|
|
63
|
+
const contract = new Contract(this._contractAddress, CHANNELS_ABI, this._provider);
|
|
64
|
+
return contract.getFunction('computeChannelId')(buyer, seller, salt);
|
|
65
|
+
}
|
|
66
|
+
async getAgentStats(agentId) {
|
|
67
|
+
const contract = new Contract(this._contractAddress, CHANNELS_ABI, this._provider);
|
|
68
|
+
const result = await contract.getFunction('getAgentStats')(agentId);
|
|
69
|
+
return {
|
|
70
|
+
channelCount: Number(result[0]),
|
|
71
|
+
ghostCount: Number(result[1]),
|
|
72
|
+
totalVolumeUsdc: result[2],
|
|
73
|
+
lastSettledAt: Number(result[3]),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Query CloseRequested events from the Channels contract.
|
|
78
|
+
* Returns matching events between fromBlock and toBlock (inclusive).
|
|
79
|
+
*/
|
|
80
|
+
async getCloseRequestedEvents(fromBlock, toBlock = 'latest') {
|
|
81
|
+
const iface = new ethers.Interface(CHANNELS_ABI);
|
|
82
|
+
const eventTopic = iface.getEvent('CloseRequested').topicHash;
|
|
83
|
+
const logs = await this._provider.getLogs({
|
|
84
|
+
address: this._contractAddress,
|
|
85
|
+
topics: [eventTopic],
|
|
86
|
+
fromBlock,
|
|
87
|
+
toBlock,
|
|
88
|
+
});
|
|
89
|
+
return logs.map((log) => ({
|
|
90
|
+
channelId: log.topics[1],
|
|
91
|
+
buyer: ethers.getAddress('0x' + log.topics[2].slice(26)),
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the current block number from the provider.
|
|
96
|
+
*/
|
|
97
|
+
async getBlockNumber() {
|
|
98
|
+
return this._provider.getBlockNumber();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=channels-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels-client.js","sourceRoot":"","sources":["../../../src/payments/evm/channels-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AbstractSigner } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
export interface DepositsClientConfig {
|
|
4
|
+
rpcUrl: string;
|
|
5
|
+
contractAddress: string;
|
|
6
|
+
usdcAddress: string;
|
|
7
|
+
}
|
|
8
|
+
export interface BuyerBalanceInfo {
|
|
9
|
+
available: bigint;
|
|
10
|
+
reserved: bigint;
|
|
11
|
+
lastActivityAt: bigint;
|
|
12
|
+
}
|
|
13
|
+
export declare class DepositsClient extends BaseEvmClient {
|
|
14
|
+
private readonly _usdcAddress;
|
|
15
|
+
constructor(config: DepositsClientConfig);
|
|
16
|
+
get usdcAddress(): string;
|
|
17
|
+
deposit(signer: AbstractSigner, buyer: string, amount: bigint): Promise<string>;
|
|
18
|
+
withdraw(signer: AbstractSigner, buyer: string, amount: bigint): Promise<string>;
|
|
19
|
+
claimPayouts(signer: AbstractSigner): Promise<string>;
|
|
20
|
+
getSellerPayouts(sellerAddr: string): Promise<bigint>;
|
|
21
|
+
getBuyerBalance(buyerAddr: string): Promise<BuyerBalanceInfo>;
|
|
22
|
+
getBuyerCreditLimit(buyerAddr: string): Promise<bigint>;
|
|
23
|
+
getOperator(buyerAddr: string): Promise<string>;
|
|
24
|
+
getOperatorNonce(buyerAddr: string): Promise<bigint>;
|
|
25
|
+
setOperator(signer: AbstractSigner, buyer: string, operator: string, nonce: bigint, buyerSig: string): Promise<string>;
|
|
26
|
+
transferOperator(signer: AbstractSigner, buyer: string, newOperator: string): Promise<string>;
|
|
27
|
+
domainSeparator(): Promise<string>;
|
|
28
|
+
getUSDCBalance(ownerAddr: string): Promise<bigint>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=deposits-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deposits-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/deposits-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAa,MAAM,sBAAsB,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAiBD,qBAAa,cAAe,SAAQ,aAAa;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,oBAAoB;IAKxC,IAAI,WAAW,IAAI,MAAM,CAA8B;IAIjD,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/E,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMhF,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAU7D,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKpD,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItH,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7F,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAOlC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAIzD"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { BaseEvmClient, ERC20_ABI } from './base-evm-client.js';
|
|
3
|
+
const DEPOSITS_ABI = [
|
|
4
|
+
'function deposit(address buyer, uint256 amount) external',
|
|
5
|
+
'function withdraw(address buyer, uint256 amount) external',
|
|
6
|
+
'function claimPayouts() external',
|
|
7
|
+
'function getBuyerBalance(address buyer) external view returns (uint256 available, uint256 reserved, uint256 lastActivityAt)',
|
|
8
|
+
'function getBuyerCreditLimit(address buyer) external view returns (uint256)',
|
|
9
|
+
'function sellerPayouts(address seller) external view returns (uint256)',
|
|
10
|
+
'function uniqueSellersCharged(address buyer) external view returns (uint256)',
|
|
11
|
+
'function getOperator(address buyer) external view returns (address)',
|
|
12
|
+
'function getOperatorNonce(address buyer) external view returns (uint256)',
|
|
13
|
+
'function setOperator(address buyer, address operator, uint256 nonce, bytes buyerSig) external',
|
|
14
|
+
'function transferOperator(address buyer, address newOperator) external',
|
|
15
|
+
'function domainSeparator() external view returns (bytes32)',
|
|
16
|
+
];
|
|
17
|
+
export class DepositsClient extends BaseEvmClient {
|
|
18
|
+
_usdcAddress;
|
|
19
|
+
constructor(config) {
|
|
20
|
+
super(config.rpcUrl, config.contractAddress);
|
|
21
|
+
this._usdcAddress = config.usdcAddress;
|
|
22
|
+
}
|
|
23
|
+
get usdcAddress() { return this._usdcAddress; }
|
|
24
|
+
// ─── Buyer Operations ──────────────────────────────────────────────
|
|
25
|
+
async deposit(signer, buyer, amount) {
|
|
26
|
+
return this._approveAndExec(signer, this._usdcAddress, amount, DEPOSITS_ABI, 'deposit', buyer, amount);
|
|
27
|
+
}
|
|
28
|
+
async withdraw(signer, buyer, amount) {
|
|
29
|
+
return this._execWrite(signer, DEPOSITS_ABI, 'withdraw', buyer, amount);
|
|
30
|
+
}
|
|
31
|
+
// ─── Seller Payouts ─────────────────────────────────────────────────
|
|
32
|
+
async claimPayouts(signer) {
|
|
33
|
+
return this._execWrite(signer, DEPOSITS_ABI, 'claimPayouts');
|
|
34
|
+
}
|
|
35
|
+
async getSellerPayouts(sellerAddr) {
|
|
36
|
+
const contract = new Contract(this._contractAddress, DEPOSITS_ABI, this._provider);
|
|
37
|
+
return contract.getFunction('sellerPayouts')(sellerAddr);
|
|
38
|
+
}
|
|
39
|
+
// ─── View Functions ─────────────────────────────────────────────────
|
|
40
|
+
async getBuyerBalance(buyerAddr) {
|
|
41
|
+
const contract = new Contract(this._contractAddress, DEPOSITS_ABI, this._provider);
|
|
42
|
+
const result = await contract.getFunction('getBuyerBalance')(buyerAddr);
|
|
43
|
+
return {
|
|
44
|
+
available: result[0],
|
|
45
|
+
reserved: result[1],
|
|
46
|
+
lastActivityAt: result[2],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
async getBuyerCreditLimit(buyerAddr) {
|
|
50
|
+
const contract = new Contract(this._contractAddress, DEPOSITS_ABI, this._provider);
|
|
51
|
+
return contract.getFunction('getBuyerCreditLimit')(buyerAddr);
|
|
52
|
+
}
|
|
53
|
+
// ─── Operator Management ─────────────────────────────────────────
|
|
54
|
+
async getOperator(buyerAddr) {
|
|
55
|
+
const contract = new Contract(this._contractAddress, DEPOSITS_ABI, this._provider);
|
|
56
|
+
return contract.getFunction('getOperator')(buyerAddr);
|
|
57
|
+
}
|
|
58
|
+
async getOperatorNonce(buyerAddr) {
|
|
59
|
+
const contract = new Contract(this._contractAddress, DEPOSITS_ABI, this._provider);
|
|
60
|
+
return contract.getFunction('getOperatorNonce')(buyerAddr);
|
|
61
|
+
}
|
|
62
|
+
async setOperator(signer, buyer, operator, nonce, buyerSig) {
|
|
63
|
+
return this._execWrite(signer, DEPOSITS_ABI, 'setOperator', buyer, operator, nonce, buyerSig);
|
|
64
|
+
}
|
|
65
|
+
async transferOperator(signer, buyer, newOperator) {
|
|
66
|
+
return this._execWrite(signer, DEPOSITS_ABI, 'transferOperator', buyer, newOperator);
|
|
67
|
+
}
|
|
68
|
+
async domainSeparator() {
|
|
69
|
+
const contract = new Contract(this._contractAddress, DEPOSITS_ABI, this._provider);
|
|
70
|
+
return contract.getFunction('domainSeparator')();
|
|
71
|
+
}
|
|
72
|
+
// ─── USDC Balance ───────────────────────────────────────────────
|
|
73
|
+
async getUSDCBalance(ownerAddr) {
|
|
74
|
+
const usdc = new Contract(this._usdcAddress, ERC20_ABI, this._provider);
|
|
75
|
+
return usdc.getFunction('balanceOf')(ownerAddr);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=deposits-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deposits-client.js","sourceRoot":"","sources":["../../../src/payments/evm/deposits-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type AbstractSigner } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
export interface EmissionsClientConfig {
|
|
4
|
+
rpcUrl: string;
|
|
5
|
+
contractAddress: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class EmissionsClient extends BaseEvmClient {
|
|
8
|
+
constructor(config: EmissionsClientConfig);
|
|
9
|
+
claimSellerEmissions(signer: AbstractSigner, epochs: number[]): Promise<string>;
|
|
10
|
+
claimBuyerEmissions(signer: AbstractSigner, buyer: string, epochs: number[]): Promise<string>;
|
|
11
|
+
pendingEmissions(address: string, epochs: number[]): Promise<{
|
|
12
|
+
seller: bigint;
|
|
13
|
+
buyer: bigint;
|
|
14
|
+
}>;
|
|
15
|
+
getEpochInfo(): Promise<{
|
|
16
|
+
epoch: number;
|
|
17
|
+
emission: bigint;
|
|
18
|
+
epochDuration: number;
|
|
19
|
+
}>;
|
|
20
|
+
flushReserve(signer: AbstractSigner): Promise<string>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=emissions-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emissions-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/emissions-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB;AAyBD,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,MAAM,EAAE,qBAAqB;IAInC,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/E,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7F,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAM/F,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAcnF,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAU5D"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
const EMISSIONS_ABI = [
|
|
4
|
+
'function claimSellerEmissions(uint256[] epochs) external',
|
|
5
|
+
'function claimBuyerEmissions(address buyer, uint256[] epochs) external',
|
|
6
|
+
'function pendingEmissions(address account, uint256[] epochs) external view returns (uint256 seller, uint256 buyer)',
|
|
7
|
+
'function currentEpoch() external view returns (uint256)',
|
|
8
|
+
'function currentEmissionRate() external view returns (uint256)',
|
|
9
|
+
'function EPOCH_DURATION() external view returns (uint256)',
|
|
10
|
+
'function INITIAL_EMISSION() external view returns (uint256)',
|
|
11
|
+
'function SELLER_SHARE_PCT() external view returns (uint256)',
|
|
12
|
+
'function BUYER_SHARE_PCT() external view returns (uint256)',
|
|
13
|
+
'function RESERVE_SHARE_PCT() external view returns (uint256)',
|
|
14
|
+
'function MAX_SELLER_SHARE_PCT() external view returns (uint256)',
|
|
15
|
+
'function HALVING_INTERVAL() external view returns (uint256)',
|
|
16
|
+
'function totalSellerPoints() external view returns (uint256)',
|
|
17
|
+
'function totalBuyerPoints() external view returns (uint256)',
|
|
18
|
+
'function reserveAccumulated() external view returns (uint256)',
|
|
19
|
+
'function flushReserve() external',
|
|
20
|
+
'function setChannelsContract(address _sessions) external',
|
|
21
|
+
'function setReserveDestination(address _dest) external',
|
|
22
|
+
'function setSharePercentages(uint256 sellerPct, uint256 buyerPct, uint256 reservePct) external',
|
|
23
|
+
'function transferOwnership(address newOwner) external',
|
|
24
|
+
];
|
|
25
|
+
export class EmissionsClient extends BaseEvmClient {
|
|
26
|
+
constructor(config) {
|
|
27
|
+
super(config.rpcUrl, config.contractAddress);
|
|
28
|
+
}
|
|
29
|
+
async claimSellerEmissions(signer, epochs) {
|
|
30
|
+
return this._execWrite(signer, EMISSIONS_ABI, 'claimSellerEmissions', epochs);
|
|
31
|
+
}
|
|
32
|
+
async claimBuyerEmissions(signer, buyer, epochs) {
|
|
33
|
+
return this._execWrite(signer, EMISSIONS_ABI, 'claimBuyerEmissions', buyer, epochs);
|
|
34
|
+
}
|
|
35
|
+
async pendingEmissions(address, epochs) {
|
|
36
|
+
const contract = new Contract(this._contractAddress, EMISSIONS_ABI, this._provider);
|
|
37
|
+
const [seller, buyer] = await contract.getFunction('pendingEmissions')(address, epochs);
|
|
38
|
+
return { seller, buyer };
|
|
39
|
+
}
|
|
40
|
+
async getEpochInfo() {
|
|
41
|
+
const contract = new Contract(this._contractAddress, EMISSIONS_ABI, this._provider);
|
|
42
|
+
const [epoch, emission, duration] = await Promise.all([
|
|
43
|
+
contract.getFunction('currentEpoch')(),
|
|
44
|
+
contract.getFunction('currentEmissionRate')(),
|
|
45
|
+
contract.getFunction('EPOCH_DURATION')(),
|
|
46
|
+
]);
|
|
47
|
+
return {
|
|
48
|
+
epoch: Number(epoch),
|
|
49
|
+
emission: BigInt(emission),
|
|
50
|
+
epochDuration: Number(duration),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async flushReserve(signer) {
|
|
54
|
+
const connected = this._ensureConnected(signer);
|
|
55
|
+
const signerAddress = await connected.getAddress();
|
|
56
|
+
const contract = new Contract(this._contractAddress, EMISSIONS_ABI, connected);
|
|
57
|
+
const nonce = await this._reserveNonce(signerAddress);
|
|
58
|
+
const tx = await contract.getFunction('flushReserve')({ nonce });
|
|
59
|
+
const receipt = await tx.wait();
|
|
60
|
+
if (!receipt)
|
|
61
|
+
throw new Error('Transaction was dropped or replaced');
|
|
62
|
+
return receipt.hash;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=emissions-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emissions-client.js","sourceRoot":"","sources":["../../../src/payments/evm/emissions-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type AbstractSigner } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
2
3
|
export interface BaseEscrowConfig {
|
|
3
4
|
/** Base JSON-RPC endpoint (e.g. http://127.0.0.1:8545 for anvil) */
|
|
4
5
|
rpcUrl: string;
|
|
@@ -12,50 +13,70 @@ export interface BaseEscrowConfig {
|
|
|
12
13
|
export interface SessionInfo {
|
|
13
14
|
buyer: string;
|
|
14
15
|
seller: string;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
maxAmount: bigint;
|
|
17
|
+
nonce: bigint;
|
|
18
|
+
deadline: bigint;
|
|
19
|
+
previousConsumption: bigint;
|
|
20
|
+
previousSessionId: string;
|
|
21
|
+
reservedAt: bigint;
|
|
18
22
|
settledAmount: bigint;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
settledTokenCount: bigint;
|
|
24
|
+
tokenRate: bigint;
|
|
25
|
+
status: number;
|
|
26
|
+
isFirstSign: boolean;
|
|
27
|
+
isProvenSign: boolean;
|
|
28
|
+
isQualifiedProvenSign: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface BuyerBalanceInfo {
|
|
31
|
+
available: bigint;
|
|
32
|
+
reserved: bigint;
|
|
33
|
+
pendingWithdrawal: bigint;
|
|
34
|
+
lastActivityAt: bigint;
|
|
23
35
|
}
|
|
24
|
-
export interface
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
weightedAverage: number;
|
|
36
|
+
export interface SellerAccountInfo {
|
|
37
|
+
stake: bigint;
|
|
38
|
+
earnings: bigint;
|
|
39
|
+
stakedAt: bigint;
|
|
40
|
+
tokenRate: bigint;
|
|
30
41
|
}
|
|
31
|
-
export declare class BaseEscrowClient {
|
|
32
|
-
private readonly _provider;
|
|
33
|
-
private readonly _contractAddress;
|
|
42
|
+
export declare class BaseEscrowClient extends BaseEvmClient {
|
|
34
43
|
private readonly _usdcAddress;
|
|
35
|
-
private readonly _nonceCursor;
|
|
36
44
|
constructor(config: BaseEscrowConfig);
|
|
37
|
-
get provider(): JsonRpcProvider;
|
|
38
|
-
get contractAddress(): string;
|
|
39
45
|
get usdcAddress(): string;
|
|
40
|
-
private _ensureConnected;
|
|
41
|
-
private reserveNonce;
|
|
42
46
|
private _prepareEscrowWrite;
|
|
43
47
|
deposit(signer: AbstractSigner, amount: bigint): Promise<string>;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
48
|
+
depositFor(signer: AbstractSigner, buyer: string, amount: bigint): Promise<string>;
|
|
49
|
+
requestWithdrawal(signer: AbstractSigner, amount: bigint): Promise<string>;
|
|
50
|
+
executeWithdrawal(signer: AbstractSigner): Promise<string>;
|
|
51
|
+
cancelWithdrawal(signer: AbstractSigner): Promise<string>;
|
|
52
|
+
stake(signer: AbstractSigner, amount: bigint): Promise<string>;
|
|
53
|
+
unstake(signer: AbstractSigner): Promise<string>;
|
|
54
|
+
setTokenRate(signer: AbstractSigner, rate: bigint): Promise<string>;
|
|
55
|
+
claimEarnings(signer: AbstractSigner): Promise<string>;
|
|
56
|
+
reserve(signer: AbstractSigner, buyer: string, sessionId: string, maxAmount: bigint, nonce: bigint, deadline: bigint, previousConsumption: bigint, previousSessionId: string, buyerSig: string): Promise<string>;
|
|
57
|
+
settle(signer: AbstractSigner, sessionId: string, tokenCount: bigint): Promise<string>;
|
|
58
|
+
settleTimeout(signer: AbstractSigner, sessionId: string): Promise<string>;
|
|
59
|
+
getBuyerBalance(buyerAddr: string): Promise<BuyerBalanceInfo>;
|
|
60
|
+
getBuyerCreditLimit(buyerAddr: string): Promise<bigint>;
|
|
61
|
+
getSellerAccount(sellerAddr: string): Promise<SellerAccountInfo>;
|
|
57
62
|
getSession(sessionId: string): Promise<SessionInfo>;
|
|
58
|
-
|
|
63
|
+
domainSeparator(): Promise<string>;
|
|
64
|
+
getFirstSignCap(): Promise<bigint>;
|
|
65
|
+
getLatestSessionId(buyerAddr: string, sellerAddr: string): Promise<string>;
|
|
66
|
+
getFirstSessionTimestamp(buyerAddr: string, sellerAddr: string): Promise<bigint>;
|
|
67
|
+
getProvenSignCooldown(): Promise<bigint>;
|
|
68
|
+
/**
|
|
69
|
+
* Fetch all data the buyer needs to display a payment approval card.
|
|
70
|
+
* Batches multiple view calls in parallel.
|
|
71
|
+
*/
|
|
72
|
+
getBuyerApprovalContext(buyerAddr: string, sellerAddr: string): Promise<{
|
|
73
|
+
buyerBalance: BuyerBalanceInfo;
|
|
74
|
+
firstSignCap: bigint;
|
|
75
|
+
latestSessionId: string;
|
|
76
|
+
firstSessionTimestamp: bigint;
|
|
77
|
+
isFirstSign: boolean;
|
|
78
|
+
cooldownRemainingSecs: number;
|
|
79
|
+
}>;
|
|
59
80
|
getUSDCBalance(ownerAddr: string): Promise<bigint>;
|
|
60
81
|
}
|
|
61
82
|
//# sourceMappingURL=escrow-client.d.ts.map
|