@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-evm-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/base-evm-client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import { JsonRpcProvider } from 'ethers';
|
|
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
|
+
];
|
|
2
7
|
export class BaseEvmClient {
|
|
3
8
|
_provider;
|
|
4
9
|
_contractAddress;
|
|
@@ -15,6 +20,34 @@ export class BaseEvmClient {
|
|
|
15
20
|
return signer;
|
|
16
21
|
return signer.connect(this._provider);
|
|
17
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
|
+
}
|
|
18
51
|
async _reserveNonce(address) {
|
|
19
52
|
// Serialize nonce reservation per address to prevent concurrent calls
|
|
20
53
|
// from reading the same network nonce before either updates the cursor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-evm-client.js","sourceRoot":"","sources":["../../../src/payments/evm/base-evm-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"base-evm-client.js","sourceRoot":"","sources":["../../../src/payments/evm/base-evm-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAA0C,MAAM,QAAQ,CAAC;AAE3F,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,2EAA2E;IAC3E,mEAAmE;IACnE,oFAAoF;CAC5E,CAAC;AAEX,MAAM,OAAgB,aAAa;IACd,SAAS,CAAkB;IAC3B,gBAAgB,CAAS;IACzB,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEhE,YAAY,MAAc,EAAE,eAAuB;QACjD,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IAED,IAAI,QAAQ,KAAsB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,IAAI,eAAe,KAAa,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAErD,gBAAgB,CAAC,MAAsB;QAC/C,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;QACnC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,UAAU,CACxB,MAAsB,EACtB,GAAiB,EACjB,MAAc,EACd,GAAG,IAAe;QAElB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACrE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,eAAe,CAC7B,MAAsB,EACtB,WAAmB,EACnB,MAAc,EACd,GAAiB,EACjB,MAAc,EACd,GAAG,IAAe;QAElB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAC5G,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,OAAe;QAC3C,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAChE,IAAI,OAAmB,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEpC,MAAM,IAAI,CAAC;QACX,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAClF,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC3F,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,OAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;CACF"}
|
|
@@ -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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"}
|
|
@@ -6,16 +6,15 @@ export interface EmissionsClientConfig {
|
|
|
6
6
|
}
|
|
7
7
|
export declare class EmissionsClient extends BaseEvmClient {
|
|
8
8
|
constructor(config: EmissionsClientConfig);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
pendingEmissions(address: string): Promise<{
|
|
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
12
|
seller: bigint;
|
|
13
13
|
buyer: bigint;
|
|
14
14
|
}>;
|
|
15
15
|
getEpochInfo(): Promise<{
|
|
16
16
|
epoch: number;
|
|
17
17
|
emission: bigint;
|
|
18
|
-
epochStart: number;
|
|
19
18
|
epochDuration: number;
|
|
20
19
|
}>;
|
|
21
20
|
flushReserve(signer: AbstractSigner): Promise<string>;
|
|
@@ -1 +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;
|
|
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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Contract } from 'ethers';
|
|
2
2
|
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
3
|
const EMISSIONS_ABI = [
|
|
4
|
-
'function
|
|
5
|
-
'function
|
|
6
|
-
'function pendingEmissions(address account) external view returns (uint256 seller, uint256 buyer)',
|
|
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
7
|
'function currentEpoch() external view returns (uint256)',
|
|
8
8
|
'function currentEmissionRate() external view returns (uint256)',
|
|
9
|
-
'function epochStart() external view returns (uint256)',
|
|
10
9
|
'function EPOCH_DURATION() external view returns (uint256)',
|
|
11
10
|
'function INITIAL_EMISSION() external view returns (uint256)',
|
|
12
11
|
'function SELLER_SHARE_PCT() external view returns (uint256)',
|
|
@@ -18,7 +17,7 @@ const EMISSIONS_ABI = [
|
|
|
18
17
|
'function totalBuyerPoints() external view returns (uint256)',
|
|
19
18
|
'function reserveAccumulated() external view returns (uint256)',
|
|
20
19
|
'function flushReserve() external',
|
|
21
|
-
'function
|
|
20
|
+
'function setChannelsContract(address _sessions) external',
|
|
22
21
|
'function setReserveDestination(address _dest) external',
|
|
23
22
|
'function setSharePercentages(uint256 sellerPct, uint256 buyerPct, uint256 reservePct) external',
|
|
24
23
|
'function transferOwnership(address newOwner) external',
|
|
@@ -27,45 +26,27 @@ export class EmissionsClient extends BaseEvmClient {
|
|
|
27
26
|
constructor(config) {
|
|
28
27
|
super(config.rpcUrl, config.contractAddress);
|
|
29
28
|
}
|
|
30
|
-
async
|
|
31
|
-
|
|
32
|
-
const signerAddress = await connected.getAddress();
|
|
33
|
-
const contract = new Contract(this._contractAddress, EMISSIONS_ABI, connected);
|
|
34
|
-
const nonce = await this._reserveNonce(signerAddress);
|
|
35
|
-
const tx = await contract.getFunction('advanceEpoch')({ nonce });
|
|
36
|
-
const receipt = await tx.wait();
|
|
37
|
-
if (!receipt)
|
|
38
|
-
throw new Error('Transaction was dropped or replaced');
|
|
39
|
-
return receipt.hash;
|
|
29
|
+
async claimSellerEmissions(signer, epochs) {
|
|
30
|
+
return this._execWrite(signer, EMISSIONS_ABI, 'claimSellerEmissions', epochs);
|
|
40
31
|
}
|
|
41
|
-
async
|
|
42
|
-
|
|
43
|
-
const signerAddress = await connected.getAddress();
|
|
44
|
-
const contract = new Contract(this._contractAddress, EMISSIONS_ABI, connected);
|
|
45
|
-
const nonce = await this._reserveNonce(signerAddress);
|
|
46
|
-
const tx = await contract.getFunction('claimEmissions')({ nonce });
|
|
47
|
-
const receipt = await tx.wait();
|
|
48
|
-
if (!receipt)
|
|
49
|
-
throw new Error('Transaction was dropped or replaced');
|
|
50
|
-
return receipt.hash;
|
|
32
|
+
async claimBuyerEmissions(signer, buyer, epochs) {
|
|
33
|
+
return this._execWrite(signer, EMISSIONS_ABI, 'claimBuyerEmissions', buyer, epochs);
|
|
51
34
|
}
|
|
52
|
-
async pendingEmissions(address) {
|
|
35
|
+
async pendingEmissions(address, epochs) {
|
|
53
36
|
const contract = new Contract(this._contractAddress, EMISSIONS_ABI, this._provider);
|
|
54
|
-
const [seller, buyer] = await contract.getFunction('pendingEmissions')(address);
|
|
37
|
+
const [seller, buyer] = await contract.getFunction('pendingEmissions')(address, epochs);
|
|
55
38
|
return { seller, buyer };
|
|
56
39
|
}
|
|
57
40
|
async getEpochInfo() {
|
|
58
41
|
const contract = new Contract(this._contractAddress, EMISSIONS_ABI, this._provider);
|
|
59
|
-
const [epoch, emission,
|
|
42
|
+
const [epoch, emission, duration] = await Promise.all([
|
|
60
43
|
contract.getFunction('currentEpoch')(),
|
|
61
44
|
contract.getFunction('currentEmissionRate')(),
|
|
62
|
-
contract.getFunction('epochStart')(),
|
|
63
45
|
contract.getFunction('EPOCH_DURATION')(),
|
|
64
46
|
]);
|
|
65
47
|
return {
|
|
66
48
|
epoch: Number(epoch),
|
|
67
49
|
emission: BigInt(emission),
|
|
68
|
-
epochStart: Number(start),
|
|
69
50
|
epochDuration: Number(duration),
|
|
70
51
|
};
|
|
71
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emissions-client.js","sourceRoot":"","sources":["../../../src/payments/evm/emissions-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOrD,MAAM,aAAa,GAAG;IACpB,
|
|
1
|
+
{"version":3,"file":"emissions-client.js","sourceRoot":"","sources":["../../../src/payments/evm/emissions-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,31 +4,18 @@ export interface IdentityClientConfig {
|
|
|
4
4
|
rpcUrl: string;
|
|
5
5
|
contractAddress: string;
|
|
6
6
|
}
|
|
7
|
-
export interface ProvenReputation {
|
|
8
|
-
firstSignCount: number;
|
|
9
|
-
qualifiedProvenSignCount: number;
|
|
10
|
-
unqualifiedProvenSignCount: number;
|
|
11
|
-
ghostCount: number;
|
|
12
|
-
totalQualifiedTokenVolume: bigint;
|
|
13
|
-
lastProvenAt: number;
|
|
14
|
-
}
|
|
15
|
-
export interface FeedbackSummary {
|
|
16
|
-
count: number;
|
|
17
|
-
summaryValue: bigint;
|
|
18
|
-
summaryValueDecimals: number;
|
|
19
|
-
}
|
|
20
7
|
export declare class IdentityClient extends BaseEvmClient {
|
|
21
8
|
constructor(config: IdentityClientConfig);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Register a new agent identity via ERC-8004 IdentityRegistry.
|
|
11
|
+
* Returns the new agentId. The peerId is the signer's EVM address
|
|
12
|
+
* (ownerOf(agentId)), so no separate metadata storage is needed.
|
|
13
|
+
*/
|
|
14
|
+
register(signer: AbstractSigner, metadataURI?: string): Promise<number>;
|
|
15
|
+
setMetadata(signer: AbstractSigner, agentId: number, key: string, value: Uint8Array): Promise<string>;
|
|
16
|
+
setAgentURI(signer: AbstractSigner, agentId: number, uri: string): Promise<string>;
|
|
26
17
|
isRegistered(address: string): Promise<boolean>;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
getPeerId(tokenId: number): Promise<string>;
|
|
30
|
-
getReputation(tokenId: number): Promise<ProvenReputation>;
|
|
31
|
-
getReputationByPeerId(peerId: string): Promise<ProvenReputation>;
|
|
32
|
-
getFeedbackSummary(agentId: number, tag: string): Promise<FeedbackSummary>;
|
|
18
|
+
getAgentWallet(agentId: number): Promise<string>;
|
|
19
|
+
getMetadata(agentId: number, key: string): Promise<Uint8Array>;
|
|
33
20
|
}
|
|
34
21
|
//# sourceMappingURL=identity-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/identity-client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"identity-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/identity-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB;AAkBD,qBAAa,cAAe,SAAQ,aAAa;gBACnC,MAAM,EAAE,oBAAoB;IAMxC;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBvE,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrG,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlF,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAKrE"}
|