@antseed/node 0.2.117 → 0.2.119
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 +30 -0
- package/dist/discovery/display-name.d.ts +8 -0
- package/dist/discovery/display-name.d.ts.map +1 -0
- package/dist/discovery/display-name.js +17 -0
- package/dist/discovery/display-name.js.map +1 -0
- package/dist/discovery/domain-verification.d.ts.map +1 -1
- package/dist/discovery/domain-verification.js +2 -1
- package/dist/discovery/domain-verification.js.map +1 -1
- package/dist/discovery/github-verification.d.ts.map +1 -1
- package/dist/discovery/github-verification.js +5 -1
- package/dist/discovery/github-verification.js.map +1 -1
- package/dist/discovery/index.d.ts +1 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +1 -0
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/service-catalog.d.ts +2 -1
- package/dist/discovery/service-catalog.d.ts.map +1 -1
- package/dist/discovery/service-catalog.js +2 -0
- package/dist/discovery/service-catalog.js.map +1 -1
- package/dist/discovery/verifier-capabilities.d.ts +9 -0
- package/dist/discovery/verifier-capabilities.d.ts.map +1 -0
- package/dist/discovery/verifier-capabilities.js +35 -0
- package/dist/discovery/verifier-capabilities.js.map +1 -0
- package/dist/index.d.ts +20 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -1
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +17 -3
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +117 -82
- package/dist/node.js.map +1 -1
- package/dist/p2p/identity.js +1 -1
- package/dist/p2p/identity.js.map +1 -1
- package/dist/payments/chain-config.d.ts +53 -0
- package/dist/payments/chain-config.d.ts.map +1 -1
- package/dist/payments/chain-config.js +43 -23
- package/dist/payments/chain-config.js.map +1 -1
- package/dist/payments/contract-stack.d.ts +53 -0
- package/dist/payments/contract-stack.d.ts.map +1 -0
- package/dist/payments/contract-stack.js +97 -0
- package/dist/payments/contract-stack.js.map +1 -0
- package/dist/payments/evm/ants-token-client.d.ts +7 -0
- package/dist/payments/evm/ants-token-client.d.ts.map +1 -1
- package/dist/payments/evm/ants-token-client.js +37 -1
- package/dist/payments/evm/ants-token-client.js.map +1 -1
- package/dist/payments/evm/emissions-client.d.ts +3 -0
- package/dist/payments/evm/emissions-client.d.ts.map +1 -1
- package/dist/payments/evm/emissions-client.js +13 -0
- package/dist/payments/evm/emissions-client.js.map +1 -1
- package/dist/payments/evm/emissions-gate-client.d.ts +51 -0
- package/dist/payments/evm/emissions-gate-client.d.ts.map +1 -0
- package/dist/payments/evm/emissions-gate-client.js +55 -0
- package/dist/payments/evm/emissions-gate-client.js.map +1 -0
- package/dist/payments/evm/multicall.d.ts +22 -0
- package/dist/payments/evm/multicall.d.ts.map +1 -0
- package/dist/payments/evm/multicall.js +73 -0
- package/dist/payments/evm/multicall.js.map +1 -0
- package/dist/payments/evm/points-policy-registry-client.d.ts +21 -0
- package/dist/payments/evm/points-policy-registry-client.d.ts.map +1 -0
- package/dist/payments/evm/points-policy-registry-client.js +34 -0
- package/dist/payments/evm/points-policy-registry-client.js.map +1 -0
- package/dist/payments/evm/position-init-client.d.ts +18 -0
- package/dist/payments/evm/position-init-client.d.ts.map +1 -0
- package/dist/payments/evm/position-init-client.js +19 -0
- package/dist/payments/evm/position-init-client.js.map +1 -0
- package/dist/payments/evm/registry-client.d.ts +17 -0
- package/dist/payments/evm/registry-client.d.ts.map +1 -0
- package/dist/payments/evm/registry-client.js +24 -0
- package/dist/payments/evm/registry-client.js.map +1 -0
- package/dist/payments/evm/seller-pools-client.d.ts +95 -0
- package/dist/payments/evm/seller-pools-client.d.ts.map +1 -0
- package/dist/payments/evm/seller-pools-client.js +193 -0
- package/dist/payments/evm/seller-pools-client.js.map +1 -0
- package/dist/payments/evm/seller-pools-rewards-client.d.ts +36 -0
- package/dist/payments/evm/seller-pools-rewards-client.d.ts.map +1 -0
- package/dist/payments/evm/seller-pools-rewards-client.js +126 -0
- package/dist/payments/evm/seller-pools-rewards-client.js.map +1 -0
- package/dist/payments/evm/seller-registry-client.d.ts +28 -0
- package/dist/payments/evm/seller-registry-client.d.ts.map +1 -0
- package/dist/payments/evm/seller-registry-client.js +60 -0
- package/dist/payments/evm/seller-registry-client.js.map +1 -0
- package/dist/payments/evm/seller-rewards-pool-client.d.ts +24 -0
- package/dist/payments/evm/seller-rewards-pool-client.d.ts.map +1 -0
- package/dist/payments/evm/seller-rewards-pool-client.js +27 -0
- package/dist/payments/evm/seller-rewards-pool-client.js.map +1 -0
- package/dist/payments/evm/trust-signals-client.d.ts +54 -0
- package/dist/payments/evm/trust-signals-client.d.ts.map +1 -0
- package/dist/payments/evm/trust-signals-client.js +162 -0
- package/dist/payments/evm/trust-signals-client.js.map +1 -0
- package/dist/payments/evm/usage-accounting-client.d.ts +49 -0
- package/dist/payments/evm/usage-accounting-client.d.ts.map +1 -0
- package/dist/payments/evm/usage-accounting-client.js +82 -0
- package/dist/payments/evm/usage-accounting-client.js.map +1 -0
- package/dist/payments/evm/usage-rewards-client.d.ts +43 -0
- package/dist/payments/evm/usage-rewards-client.d.ts.map +1 -0
- package/dist/payments/evm/usage-rewards-client.js +62 -0
- package/dist/payments/evm/usage-rewards-client.js.map +1 -0
- package/dist/payments/evm/wash-trading-registry-client.d.ts +105 -0
- package/dist/payments/evm/wash-trading-registry-client.d.ts.map +1 -0
- package/dist/payments/evm/wash-trading-registry-client.js +170 -0
- package/dist/payments/evm/wash-trading-registry-client.js.map +1 -0
- package/dist/payments/generated-contract-addresses.d.ts +59 -0
- package/dist/payments/generated-contract-addresses.d.ts.map +1 -0
- package/dist/payments/generated-contract-addresses.js +60 -0
- package/dist/payments/generated-contract-addresses.js.map +1 -0
- package/dist/payments/index.d.ts +28 -0
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +14 -0
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/reward-claims.d.ts +28 -0
- package/dist/payments/reward-claims.d.ts.map +1 -0
- package/dist/payments/reward-claims.js +67 -0
- package/dist/payments/reward-claims.js.map +1 -0
- package/dist/payments/reward-preview.d.ts +19 -0
- package/dist/payments/reward-preview.d.ts.map +1 -0
- package/dist/payments/reward-preview.js +36 -0
- package/dist/payments/reward-preview.js.map +1 -0
- package/dist/payments/seller-payment-manager.d.ts +9 -0
- package/dist/payments/seller-payment-manager.d.ts.map +1 -1
- package/dist/payments/seller-payment-manager.js +45 -0
- package/dist/payments/seller-payment-manager.js.map +1 -1
- package/dist/reputation/identity-history.d.ts +75 -0
- package/dist/reputation/identity-history.d.ts.map +1 -0
- package/dist/reputation/identity-history.js +258 -0
- package/dist/reputation/identity-history.js.map +1 -0
- package/dist/reputation/model-reputation.d.ts +3 -2
- package/dist/reputation/model-reputation.d.ts.map +1 -1
- package/dist/reputation/model-reputation.js +2 -9
- package/dist/reputation/model-reputation.js.map +1 -1
- package/dist/reputation/public-json.d.ts +9 -0
- package/dist/reputation/public-json.d.ts.map +1 -0
- package/dist/reputation/public-json.js +98 -0
- package/dist/reputation/public-json.js.map +1 -0
- package/dist/reputation/sybil-risk.d.ts +35 -0
- package/dist/reputation/sybil-risk.d.ts.map +1 -0
- package/dist/reputation/sybil-risk.js +136 -0
- package/dist/reputation/sybil-risk.js.map +1 -0
- package/dist/reputation/trust-score.d.ts +83 -0
- package/dist/reputation/trust-score.d.ts.map +1 -0
- package/dist/reputation/trust-score.js +91 -0
- package/dist/reputation/trust-score.js.map +1 -0
- package/dist/routing/default-router.d.ts +0 -1
- package/dist/routing/default-router.d.ts.map +1 -1
- package/dist/routing/default-router.js +2 -12
- package/dist/routing/default-router.js.map +1 -1
- package/dist/routing/model-route-ranking.d.ts +0 -1
- package/dist/routing/model-route-ranking.d.ts.map +1 -1
- package/dist/routing/model-route-ranking.js.map +1 -1
- package/dist/seller-request-handler.d.ts.map +1 -1
- package/dist/seller-request-handler.js +12 -0
- package/dist/seller-request-handler.js.map +1 -1
- package/dist/types/peer.d.ts +27 -18
- package/dist/types/peer.d.ts.map +1 -1
- package/dist/verification/tee-status.d.ts +35 -0
- package/dist/verification/tee-status.d.ts.map +1 -0
- package/dist/verification/tee-status.js +21 -0
- package/dist/verification/tee-status.js.map +1 -0
- package/package.json +14 -6
- package/dist/reputation/on-chain-reputation.d.ts +0 -84
- package/dist/reputation/on-chain-reputation.d.ts.map +0 -1
- package/dist/reputation/on-chain-reputation.js +0 -290
- package/dist/reputation/on-chain-reputation.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emissions-gate-client.js","sourceRoot":"","sources":["../../../src/payments/evm/emissions-gate-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Interface, type AbstractProvider } from 'ethers';
|
|
2
|
+
/** Canonical Multicall3 deployment (same address on Base, Base Sepolia, and most EVM chains). */
|
|
3
|
+
export declare const MULTICALL3_ADDRESS = "0xcA11bde05977b3631167028862bE2a173976CA11";
|
|
4
|
+
export interface MulticallRequest {
|
|
5
|
+
target: string;
|
|
6
|
+
iface: Interface;
|
|
7
|
+
method: string;
|
|
8
|
+
args?: unknown[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Batch many read calls into a few `eth_call`s via Multicall3 (`allowFailure`
|
|
12
|
+
* per call: a reverting read yields `null` instead of failing the batch).
|
|
13
|
+
* Falls back to individual calls when the chain has no Multicall3.
|
|
14
|
+
*/
|
|
15
|
+
export declare function multicallRead(provider: AbstractProvider, requests: MulticallRequest[], options?: {
|
|
16
|
+
chunkSize?: number;
|
|
17
|
+
concurrency?: number;
|
|
18
|
+
address?: string;
|
|
19
|
+
blockTag?: number | string; /** Skip the `eth_getCode` probe; the caller knows Multicall3 is deployed. */
|
|
20
|
+
assumeDeployed?: boolean;
|
|
21
|
+
}): Promise<Array<unknown[] | null>>;
|
|
22
|
+
//# sourceMappingURL=multicall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAEpE,iGAAiG;AACjG,eAAO,MAAM,kBAAkB,+CAA+C,CAAC;AAM/E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,6EAA6E;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/M,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAoDlC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
/** Canonical Multicall3 deployment (same address on Base, Base Sepolia, and most EVM chains). */
|
|
3
|
+
export const MULTICALL3_ADDRESS = '0xcA11bde05977b3631167028862bE2a173976CA11';
|
|
4
|
+
const MULTICALL3_ABI = [
|
|
5
|
+
'function aggregate3(tuple(address target, bool allowFailure, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
|
|
6
|
+
];
|
|
7
|
+
/**
|
|
8
|
+
* Batch many read calls into a few `eth_call`s via Multicall3 (`allowFailure`
|
|
9
|
+
* per call: a reverting read yields `null` instead of failing the batch).
|
|
10
|
+
* Falls back to individual calls when the chain has no Multicall3.
|
|
11
|
+
*/
|
|
12
|
+
export async function multicallRead(provider, requests, options = {}) {
|
|
13
|
+
if (requests.length === 0)
|
|
14
|
+
return [];
|
|
15
|
+
const chunkSize = options.chunkSize ?? 80;
|
|
16
|
+
const concurrency = Math.max(1, options.concurrency ?? 4);
|
|
17
|
+
const multicall = new Contract(options.address ?? MULTICALL3_ADDRESS, MULTICALL3_ABI, provider);
|
|
18
|
+
const results = new Array(requests.length).fill(null);
|
|
19
|
+
const code = options.assumeDeployed ? '0x1' : await provider.getCode(options.address ?? MULTICALL3_ADDRESS).catch(() => '0x');
|
|
20
|
+
if (code === '0x') {
|
|
21
|
+
await Promise.all(requests.map(async (request, index) => {
|
|
22
|
+
try {
|
|
23
|
+
const data = await provider.call({ to: request.target, data: request.iface.encodeFunctionData(request.method, request.args ?? []), ...(options.blockTag !== undefined ? { blockTag: options.blockTag } : {}) });
|
|
24
|
+
results[index] = [...request.iface.decodeFunctionResult(request.method, data)];
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
results[index] = null;
|
|
28
|
+
}
|
|
29
|
+
}));
|
|
30
|
+
return results;
|
|
31
|
+
}
|
|
32
|
+
const overrides = options.blockTag !== undefined ? { blockTag: options.blockTag } : {};
|
|
33
|
+
// A chunk that fails as a whole (RPC timeout, gas cap) is split and retried;
|
|
34
|
+
// a single call that still fails yields null like a reverting read.
|
|
35
|
+
const run = async (offset, size) => {
|
|
36
|
+
const chunk = requests.slice(offset, offset + size);
|
|
37
|
+
if (chunk.length === 0)
|
|
38
|
+
return;
|
|
39
|
+
const calls = chunk.map((request) => ({ target: request.target, allowFailure: true, callData: request.iface.encodeFunctionData(request.method, request.args ?? []) }));
|
|
40
|
+
let returned;
|
|
41
|
+
try {
|
|
42
|
+
returned = await multicall.getFunction('aggregate3').staticCall(calls, overrides);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (chunk.length === 1)
|
|
46
|
+
return;
|
|
47
|
+
const half = Math.ceil(chunk.length / 2);
|
|
48
|
+
await run(offset, half);
|
|
49
|
+
await run(offset + half, chunk.length - half);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
returned.forEach((entry, index) => {
|
|
53
|
+
const request = chunk[index];
|
|
54
|
+
if (!entry.success || entry.returnData === '0x')
|
|
55
|
+
return;
|
|
56
|
+
try {
|
|
57
|
+
results[offset + index] = [...request.iface.decodeFunctionResult(request.method, entry.returnData)];
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
results[offset + index] = null;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
// Chunks run a few at a time: sequential batches made a 3,000-read view
|
|
65
|
+
// take ~13 s through a public RPC, while a full fan-out trips rate limits.
|
|
66
|
+
const offsets = Array.from({ length: Math.ceil(requests.length / chunkSize) }, (_, index) => index * chunkSize);
|
|
67
|
+
await Promise.all(Array.from({ length: Math.min(concurrency, offsets.length) }, async () => {
|
|
68
|
+
for (let next = offsets.shift(); next !== undefined; next = offsets.shift())
|
|
69
|
+
await run(next, chunkSize);
|
|
70
|
+
}));
|
|
71
|
+
return results;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=multicall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../src/payments/evm/multicall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
2
|
+
export interface PointsPolicyRegistryClientConfig {
|
|
3
|
+
rpcUrl: string;
|
|
4
|
+
fallbackRpcUrls?: string[];
|
|
5
|
+
contractAddress: string;
|
|
6
|
+
evmChainId?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class PointsPolicyRegistryClient extends BaseEvmClient {
|
|
9
|
+
constructor(config: PointsPolicyRegistryClientConfig);
|
|
10
|
+
private contract;
|
|
11
|
+
policyCount(): Promise<number>;
|
|
12
|
+
policyAt(index: number): Promise<string>;
|
|
13
|
+
isPolicyRegistered(policy: string): Promise<boolean>;
|
|
14
|
+
maxPolicies(): Promise<number>;
|
|
15
|
+
owner(): Promise<string>;
|
|
16
|
+
/** Registered modifiers in evaluation order. */
|
|
17
|
+
policies(): Promise<string[]>;
|
|
18
|
+
/** The wash-trading registry a policy pins, or null when the policy has no such pointer. */
|
|
19
|
+
washTradingRegistryOf(policy: string): Promise<string | null>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=points-policy-registry-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"points-policy-registry-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/points-policy-registry-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,gCAAgC;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAAE;AAY/I,qBAAa,0BAA2B,SAAQ,aAAa;gBAC/C,MAAM,EAAE,gCAAgC;IACpD,OAAO,CAAC,QAAQ;IAEV,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACxC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAC9C,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IACpC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IACxB,gDAAgD;IAC1C,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAInC,4FAA4F;IACtF,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAOpE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
const ABI = [
|
|
4
|
+
'function policyCount() external view returns (uint256)',
|
|
5
|
+
'function policyAt(uint256 index) external view returns (address)',
|
|
6
|
+
'function isPolicyRegistered(address policy) external view returns (bool)',
|
|
7
|
+
'function MAX_POLICIES() external view returns (uint256)',
|
|
8
|
+
'function owner() external view returns (address)',
|
|
9
|
+
];
|
|
10
|
+
const WASH_POLICY_ABI = ['function washTradingRegistry() external view returns (address)'];
|
|
11
|
+
export class PointsPolicyRegistryClient extends BaseEvmClient {
|
|
12
|
+
constructor(config) { super(config.rpcUrl, config.contractAddress, config.fallbackRpcUrls, config.evmChainId); }
|
|
13
|
+
contract() { return new Contract(this._contractAddress, ABI, this._provider); }
|
|
14
|
+
async policyCount() { return Number(await this.contract().getFunction('policyCount')()); }
|
|
15
|
+
policyAt(index) { return this.contract().getFunction('policyAt')(index); }
|
|
16
|
+
isPolicyRegistered(policy) { return this.contract().getFunction('isPolicyRegistered')(policy); }
|
|
17
|
+
async maxPolicies() { return Number(await this.contract().getFunction('MAX_POLICIES')()); }
|
|
18
|
+
owner() { return this.contract().getFunction('owner')(); }
|
|
19
|
+
/** Registered modifiers in evaluation order. */
|
|
20
|
+
async policies() {
|
|
21
|
+
const count = await this.policyCount();
|
|
22
|
+
return Promise.all(Array.from({ length: count }, (_, index) => this.policyAt(index)));
|
|
23
|
+
}
|
|
24
|
+
/** The wash-trading registry a policy pins, or null when the policy has no such pointer. */
|
|
25
|
+
async washTradingRegistryOf(policy) {
|
|
26
|
+
try {
|
|
27
|
+
return await new Contract(policy, WASH_POLICY_ABI, this._provider).getFunction('washTradingRegistry')();
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=points-policy-registry-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"points-policy-registry-client.js","sourceRoot":"","sources":["../../../src/payments/evm/points-policy-registry-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,GAAG,GAAG;IACV,wDAAwD;IACxD,kEAAkE;IAClE,0EAA0E;IAC1E,yDAAyD;IACzD,kDAAkD;CAC1C,CAAC;AAEX,MAAM,eAAe,GAAG,CAAC,gEAAgE,CAAU,CAAC;AAEpG,MAAM,OAAO,0BAA2B,SAAQ,aAAa;IAC3D,YAAY,MAAwC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1I,QAAQ,KAAe,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEjG,KAAK,CAAC,WAAW,KAAsB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3G,QAAQ,CAAC,KAAa,IAAqB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnG,kBAAkB,CAAC,MAAc,IAAsB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1H,KAAK,CAAC,WAAW,KAAsB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5G,KAAK,KAAsB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,gDAAgD;IAChD,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,4FAA4F;IAC5F,KAAK,CAAC,qBAAqB,CAAC,MAAc;QACxC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAY,CAAC;QACpH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type AbstractSigner } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
export interface PositionInitClientConfig {
|
|
4
|
+
rpcUrl: string;
|
|
5
|
+
fallbackRpcUrls?: string[];
|
|
6
|
+
contractAddress: string;
|
|
7
|
+
evmChainId?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class PositionInitClient extends BaseEvmClient {
|
|
10
|
+
constructor(config: PositionInitClientConfig);
|
|
11
|
+
private contract;
|
|
12
|
+
initPosition(signer: AbstractSigner): Promise<string>;
|
|
13
|
+
remainingInits(): Promise<bigint>;
|
|
14
|
+
agentInitialized(agentId: number): Promise<boolean>;
|
|
15
|
+
initAmount(): Promise<bigint>;
|
|
16
|
+
initEndEpoch(): Promise<number>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=position-init-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-init-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/position-init-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,MAAM,WAAW,wBAAwB;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAAE;AAQvI,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,MAAM,EAAE,wBAAwB;IAC5C,OAAO,CAAC,QAAQ;IAChB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IACrD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IACjC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IACnD,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IACvB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CACtC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
const ABI = [
|
|
4
|
+
'function initPosition() external returns (uint256 positionId)',
|
|
5
|
+
'function remainingInits() external view returns (uint256)',
|
|
6
|
+
'function agentInitialized(uint256 agentId) external view returns (bool)',
|
|
7
|
+
'function initAmount() external view returns (uint256)',
|
|
8
|
+
'function initEndEpoch() external view returns (uint256)',
|
|
9
|
+
];
|
|
10
|
+
export class PositionInitClient extends BaseEvmClient {
|
|
11
|
+
constructor(config) { super(config.rpcUrl, config.contractAddress, config.fallbackRpcUrls, config.evmChainId); }
|
|
12
|
+
contract() { return new Contract(this._contractAddress, ABI, this._provider); }
|
|
13
|
+
initPosition(signer) { return this._execWrite(signer, ABI, 'initPosition'); }
|
|
14
|
+
remainingInits() { return this.contract().getFunction('remainingInits')(); }
|
|
15
|
+
agentInitialized(agentId) { return this.contract().getFunction('agentInitialized')(agentId); }
|
|
16
|
+
initAmount() { return this.contract().getFunction('initAmount')(); }
|
|
17
|
+
async initEndEpoch() { return Number(await this.contract().getFunction('initEndEpoch')()); }
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=position-init-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-init-client.js","sourceRoot":"","sources":["../../../src/payments/evm/position-init-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,GAAG,GAAG;IACV,+DAA+D;IAC/D,2DAA2D;IAC3D,yEAAyE;IACzE,uDAAuD;IACvD,yDAAyD;CACjD,CAAC;AACX,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IACnD,YAAY,MAAgC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClI,QAAQ,KAAe,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACjG,YAAY,CAAC,MAAsB,IAAqB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC9G,cAAc,KAAsB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7F,gBAAgB,CAAC,OAAe,IAAsB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxH,UAAU,KAAsB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,KAAK,CAAC,YAAY,KAAsB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9G"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
2
|
+
export interface RegistryClientConfig {
|
|
3
|
+
rpcUrl: string;
|
|
4
|
+
fallbackRpcUrls?: string[];
|
|
5
|
+
contractAddress: string;
|
|
6
|
+
evmChainId?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class RegistryClient extends BaseEvmClient {
|
|
9
|
+
constructor(config: RegistryClientConfig);
|
|
10
|
+
private _address;
|
|
11
|
+
emissions(): Promise<string>;
|
|
12
|
+
staking(): Promise<string>;
|
|
13
|
+
channels(): Promise<string>;
|
|
14
|
+
deposits(): Promise<string>;
|
|
15
|
+
antsToken(): Promise<string>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=registry-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/registry-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,qBAAa,cAAe,SAAQ,aAAa;gBACnC,MAAM,EAAE,oBAAoB;YAI1B,QAAQ;IAKtB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAC5B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAC1B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAC3B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAC3B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
const REGISTRY_ABI = [
|
|
4
|
+
'function emissions() external view returns (address)',
|
|
5
|
+
'function staking() external view returns (address)',
|
|
6
|
+
'function channels() external view returns (address)',
|
|
7
|
+
'function deposits() external view returns (address)',
|
|
8
|
+
'function antsToken() external view returns (address)',
|
|
9
|
+
];
|
|
10
|
+
export class RegistryClient extends BaseEvmClient {
|
|
11
|
+
constructor(config) {
|
|
12
|
+
super(config.rpcUrl, config.contractAddress, config.fallbackRpcUrls, config.evmChainId);
|
|
13
|
+
}
|
|
14
|
+
async _address(method) {
|
|
15
|
+
const contract = new Contract(this._contractAddress, REGISTRY_ABI, this._provider);
|
|
16
|
+
return contract.getFunction(method)();
|
|
17
|
+
}
|
|
18
|
+
emissions() { return this._address('emissions'); }
|
|
19
|
+
staking() { return this._address('staking'); }
|
|
20
|
+
channels() { return this._address('channels'); }
|
|
21
|
+
deposits() { return this._address('deposits'); }
|
|
22
|
+
antsToken() { return this._address('antsToken'); }
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=registry-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../../../src/payments/evm/registry-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASrD,MAAM,YAAY,GAAG;IACnB,sDAAsD;IACtD,oDAAoD;IACpD,qDAAqD;IACrD,qDAAqD;IACrD,sDAAsD;CAC9C,CAAC;AAEX,MAAM,OAAO,cAAe,SAAQ,aAAa;IAC/C,YAAY,MAA4B;QACtC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1F,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,MAAc;QACnC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnF,OAAO,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAqB,CAAC;IAC3D,CAAC;IAED,SAAS,KAAsB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,KAAsB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/D,QAAQ,KAAsB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACjE,QAAQ,KAAsB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACjE,SAAS,KAAsB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CACpE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { type AbstractSigner } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
export interface SellerPoolsClientConfig {
|
|
4
|
+
rpcUrl: string;
|
|
5
|
+
fallbackRpcUrls?: string[];
|
|
6
|
+
contractAddress: string;
|
|
7
|
+
antsTokenAddress: string;
|
|
8
|
+
evmChainId?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface SellerPoolPosition {
|
|
11
|
+
id: number;
|
|
12
|
+
owner: string;
|
|
13
|
+
agentId: number;
|
|
14
|
+
amount: bigint;
|
|
15
|
+
weightAmount: bigint;
|
|
16
|
+
stakeStartEpoch: number;
|
|
17
|
+
stakeEndEpoch: number;
|
|
18
|
+
closedAtEpoch: number;
|
|
19
|
+
withdrawn: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface SellerPoolConfig {
|
|
22
|
+
minStakeEpochs: number;
|
|
23
|
+
maxStakeEpochs: number;
|
|
24
|
+
stakeActivationDelay: number;
|
|
25
|
+
maxSlashBps: number;
|
|
26
|
+
minEarlyExitSlashBps: number;
|
|
27
|
+
restakedRewardWeightBonusBps: number;
|
|
28
|
+
moveWeightPenaltyBps: number;
|
|
29
|
+
}
|
|
30
|
+
export interface PositionPowerSegment {
|
|
31
|
+
normalEndEpoch: number;
|
|
32
|
+
maxLockPower: bigint;
|
|
33
|
+
nextChangeEpoch: number;
|
|
34
|
+
}
|
|
35
|
+
export declare class SellerPoolsClient extends BaseEvmClient {
|
|
36
|
+
private readonly antsTokenAddress;
|
|
37
|
+
constructor(config: SellerPoolsClientConfig);
|
|
38
|
+
private contract;
|
|
39
|
+
stake(signer: AbstractSigner, agentId: number, amount: bigint, epochs: number): Promise<string>;
|
|
40
|
+
moveStake(signer: AbstractSigner, positionId: number, toAgentId: number): Promise<string>;
|
|
41
|
+
moveStakes(signer: AbstractSigner, positionIds: number[], toAgentId: number): Promise<string>;
|
|
42
|
+
splitStake(signer: AbstractSigner, positionId: number, splitAmount: bigint): Promise<string>;
|
|
43
|
+
mergeStakes(signer: AbstractSigner, positionIds: number[]): Promise<string>;
|
|
44
|
+
extendLock(signer: AbstractSigner, positionId: number, additionalEpochs: number): Promise<string>;
|
|
45
|
+
enableMaxLock(signer: AbstractSigner, positionId: number): Promise<string>;
|
|
46
|
+
disableMaxLock(signer: AbstractSigner, positionId: number): Promise<string>;
|
|
47
|
+
withdrawStakes(signer: AbstractSigner, ids: number[]): Promise<string>;
|
|
48
|
+
stakerPositionCount(staker: string): Promise<number>;
|
|
49
|
+
stakerPositionIds(staker: string, offset?: number, limit?: number): Promise<number[]>;
|
|
50
|
+
position(id: number): Promise<SellerPoolPosition>;
|
|
51
|
+
positionsBatch(ids: number[]): Promise<SellerPoolPosition[]>;
|
|
52
|
+
positionWithdrawableEpoch(id: number): Promise<number>;
|
|
53
|
+
earlyExitSlashBps(id: number): Promise<number>;
|
|
54
|
+
positionWeightAtEpoch(id: number, epoch: number): Promise<bigint>;
|
|
55
|
+
positionMaxLockPowerAtEpoch(id: number, epoch: number): Promise<bigint>;
|
|
56
|
+
positionPowerSegmentAt(id: number, epoch: number): Promise<PositionPowerSegment>;
|
|
57
|
+
isMaxLocked(id: number, epoch: number): Promise<boolean>;
|
|
58
|
+
agentIdForSeller(seller: string): Promise<number>;
|
|
59
|
+
currentEpoch(): Promise<number>;
|
|
60
|
+
stakeActivationDelay(): Promise<number>;
|
|
61
|
+
minStakeEpochs(): Promise<number>;
|
|
62
|
+
maxStakeEpochs(): Promise<number>;
|
|
63
|
+
nextPositionId(): Promise<number>;
|
|
64
|
+
stakingSource(): Promise<string>;
|
|
65
|
+
poolConfig(): Promise<SellerPoolConfig>;
|
|
66
|
+
hasPoolAtEpoch(agentId: number, epoch: number): Promise<boolean>;
|
|
67
|
+
poolWeightAtEpoch(agentId: number, epoch: number): Promise<bigint>;
|
|
68
|
+
poolActiveStakeAtEpoch(agentId: number, epoch: number): Promise<bigint>;
|
|
69
|
+
totalActiveStakeAtEpoch(epoch: number): Promise<bigint>;
|
|
70
|
+
totalPowerWeightAtEpoch(epoch: number): Promise<bigint>;
|
|
71
|
+
/** Non-view on chain (caches the current epoch's weight); read through a static call. */
|
|
72
|
+
currentPoolSecurityShareBps(agentId: number): Promise<number>;
|
|
73
|
+
currentPoolSecurityWeight(agentId: number): Promise<bigint>;
|
|
74
|
+
currentTotalSecurityWeight(): Promise<bigint>;
|
|
75
|
+
stakerTotalActiveStake(staker: string): Promise<bigint>;
|
|
76
|
+
stakerAgentActiveStake(staker: string, agentId: number): Promise<bigint>;
|
|
77
|
+
allStakerPositionIds(staker: string): Promise<number[]>;
|
|
78
|
+
}
|
|
79
|
+
export interface EarlyExitEstimate {
|
|
80
|
+
id: number;
|
|
81
|
+
amount: bigint;
|
|
82
|
+
slashBps: number;
|
|
83
|
+
slashedAmount: bigint;
|
|
84
|
+
returnedAmount: bigint;
|
|
85
|
+
}
|
|
86
|
+
export declare function estimateEarlyExit(position: SellerPoolPosition, slashBps: number): EarlyExitEstimate;
|
|
87
|
+
export type PositionState = 'pending' | 'active' | 'matured' | 'closed' | 'withdrawn';
|
|
88
|
+
export declare function positionState(position: SellerPoolPosition, currentEpoch: number): PositionState;
|
|
89
|
+
/**
|
|
90
|
+
* Off-chain mirror of the pool's early-exit slash curve, for previews before
|
|
91
|
+
* a position is withdrawable (the on-chain getter reverts while a change is
|
|
92
|
+
* pending). Whole-epoch integer arithmetic matches the contract.
|
|
93
|
+
*/
|
|
94
|
+
export declare function projectedEarlyExitSlashBps(position: SellerPoolPosition, epoch: number, config: Pick<SellerPoolConfig, 'maxSlashBps' | 'minEarlyExitSlashBps'>, maxLocked?: boolean): number;
|
|
95
|
+
//# sourceMappingURL=seller-pools-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-pools-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/seller-pools-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Contract } from 'ethers';
|
|
2
|
+
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
+
const SELLER_POOLS_ABI = [
|
|
4
|
+
'event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)',
|
|
5
|
+
'event StakeCreated(uint256 indexed positionId, address indexed staker, uint256 indexed agentId, uint256 amount, uint256 weightAmount, uint256 stakeStartEpoch, uint256 stakeEndEpoch)',
|
|
6
|
+
'function stake(uint256 agentId, uint256 amount, uint256 stakeEpochs) external returns (uint256 positionId)',
|
|
7
|
+
'function moveStake(uint256 positionId, uint256 toAgentId) external returns (uint256 newPositionId)',
|
|
8
|
+
'function moveStakes(uint256[] positionIds, uint256 toAgentId) external returns (uint256[] newPositionIds)',
|
|
9
|
+
'function splitStake(uint256 positionId, uint256 splitAmount) external returns (uint256 firstPositionId, uint256 secondPositionId)',
|
|
10
|
+
'function mergeStakes(uint256[] positionIds) external returns (uint256 newPositionId)',
|
|
11
|
+
'function extendLock(uint256 positionId, uint256 additionalEpochs) external',
|
|
12
|
+
'function enableMaxLock(uint256 positionId) external',
|
|
13
|
+
'function disableMaxLock(uint256 positionId) external',
|
|
14
|
+
'function withdrawStake(uint256 positionId) external',
|
|
15
|
+
'function withdrawStakes(uint256[] positionIds) external returns (uint256 returnedAmount, uint256 slashedAmount)',
|
|
16
|
+
'function stakerPositionCount(address staker) external view returns (uint256)',
|
|
17
|
+
'function stakerPositionIds(address staker, uint256 offset, uint256 limit) external view returns (uint256[])',
|
|
18
|
+
'function positions(uint256 positionId) external view returns (address owner, uint256 agentId, uint256 amount, uint256 weightAmount, uint64 stakeStartEpoch, uint64 stakeEndEpoch, uint64 closedAtEpoch, bool withdrawn)',
|
|
19
|
+
'function positionWithdrawableEpoch(uint256 positionId) external view returns (uint64)',
|
|
20
|
+
'function earlyExitSlashBps(uint256 positionId) external view returns (uint256)',
|
|
21
|
+
'function positionWeightAtEpoch(uint256 positionId, uint256 epoch) external view returns (uint256)',
|
|
22
|
+
'function positionMaxLockPowerAtEpoch(uint256 positionId, uint256 epoch) external view returns (uint256)',
|
|
23
|
+
'function positionPowerSegmentAt(uint256 positionId, uint256 epoch) external view returns (uint256 normalEndEpoch, uint256 maxLockPower, uint256 nextChangeEpoch)',
|
|
24
|
+
'function agentIdForSeller(address seller) external view returns (uint256)',
|
|
25
|
+
'function currentEpoch() external view returns (uint256)',
|
|
26
|
+
'function stakeActivationDelay() external view returns (uint256)',
|
|
27
|
+
'function minStakeEpochs() external view returns (uint256)',
|
|
28
|
+
'function MAX_STAKE_EPOCHS() external view returns (uint256)',
|
|
29
|
+
'function maxSlashBps() external view returns (uint256)',
|
|
30
|
+
'function minEarlyExitSlashBps() external view returns (uint256)',
|
|
31
|
+
'function restakedRewardWeightBonusBps() external view returns (uint256)',
|
|
32
|
+
'function moveWeightPenaltyBps() external view returns (uint256)',
|
|
33
|
+
'function nextPositionId() external view returns (uint256)',
|
|
34
|
+
'function stakingSource() external view returns (address)',
|
|
35
|
+
'function hasPoolAtEpoch(uint256 agentId, uint256 epoch) external view returns (bool)',
|
|
36
|
+
'function poolWeightAtEpoch(uint256 agentId, uint256 epoch) external view returns (uint256)',
|
|
37
|
+
'function poolActiveStakeAtEpoch(uint256 agentId, uint256 epoch) external view returns (uint256)',
|
|
38
|
+
'function totalActiveStakeAtEpoch(uint256 epoch) external view returns (uint256)',
|
|
39
|
+
'function totalPowerWeightAtEpoch(uint256 epoch) external view returns (uint256)',
|
|
40
|
+
'function currentPoolSecurityShareBps(uint256 agentId) external returns (uint256)',
|
|
41
|
+
'function currentPoolSecurityWeight(uint256 agentId) external returns (uint256)',
|
|
42
|
+
'function currentTotalSecurityWeight() external returns (uint256)',
|
|
43
|
+
'function stakerTotalActiveStake(address staker) external view returns (uint256)',
|
|
44
|
+
'function stakerAgentActiveStake(address staker, uint256 agentId) external view returns (uint256)',
|
|
45
|
+
];
|
|
46
|
+
export class SellerPoolsClient extends BaseEvmClient {
|
|
47
|
+
antsTokenAddress;
|
|
48
|
+
constructor(config) {
|
|
49
|
+
super(config.rpcUrl, config.contractAddress, config.fallbackRpcUrls, config.evmChainId);
|
|
50
|
+
this.antsTokenAddress = config.antsTokenAddress;
|
|
51
|
+
}
|
|
52
|
+
contract() { return new Contract(this._contractAddress, SELLER_POOLS_ABI, this._provider); }
|
|
53
|
+
// ── writes ──────────────────────────────────────────────────────────
|
|
54
|
+
stake(signer, agentId, amount, epochs) {
|
|
55
|
+
return this._approveAndExec(signer, this.antsTokenAddress, amount, SELLER_POOLS_ABI, 'stake', agentId, amount, epochs);
|
|
56
|
+
}
|
|
57
|
+
moveStake(signer, positionId, toAgentId) {
|
|
58
|
+
return this._execWrite(signer, SELLER_POOLS_ABI, 'moveStake', positionId, toAgentId);
|
|
59
|
+
}
|
|
60
|
+
moveStakes(signer, positionIds, toAgentId) {
|
|
61
|
+
return this._execWrite(signer, SELLER_POOLS_ABI, 'moveStakes', positionIds, toAgentId);
|
|
62
|
+
}
|
|
63
|
+
splitStake(signer, positionId, splitAmount) {
|
|
64
|
+
return this._execWrite(signer, SELLER_POOLS_ABI, 'splitStake', positionId, splitAmount);
|
|
65
|
+
}
|
|
66
|
+
mergeStakes(signer, positionIds) {
|
|
67
|
+
return this._execWrite(signer, SELLER_POOLS_ABI, 'mergeStakes', positionIds);
|
|
68
|
+
}
|
|
69
|
+
extendLock(signer, positionId, additionalEpochs) {
|
|
70
|
+
return this._execWrite(signer, SELLER_POOLS_ABI, 'extendLock', positionId, additionalEpochs);
|
|
71
|
+
}
|
|
72
|
+
enableMaxLock(signer, positionId) {
|
|
73
|
+
return this._execWrite(signer, SELLER_POOLS_ABI, 'enableMaxLock', positionId);
|
|
74
|
+
}
|
|
75
|
+
disableMaxLock(signer, positionId) {
|
|
76
|
+
return this._execWrite(signer, SELLER_POOLS_ABI, 'disableMaxLock', positionId);
|
|
77
|
+
}
|
|
78
|
+
withdrawStakes(signer, ids) { return this._execWrite(signer, SELLER_POOLS_ABI, 'withdrawStakes', ids); }
|
|
79
|
+
// ── position reads ──────────────────────────────────────────────────
|
|
80
|
+
async stakerPositionCount(staker) { return Number(await this.contract().getFunction('stakerPositionCount')(staker)); }
|
|
81
|
+
async stakerPositionIds(staker, offset = 0, limit = 256) {
|
|
82
|
+
const ids = await this.contract().getFunction('stakerPositionIds')(staker, offset, limit);
|
|
83
|
+
return ids.map(Number);
|
|
84
|
+
}
|
|
85
|
+
async position(id) {
|
|
86
|
+
const result = await this.contract().getFunction('positions')(id);
|
|
87
|
+
return { id, owner: result[0], agentId: Number(result[1]), amount: result[2], weightAmount: result[3], stakeStartEpoch: Number(result[4]), stakeEndEpoch: Number(result[5]), closedAtEpoch: Number(result[6]), withdrawn: result[7] };
|
|
88
|
+
}
|
|
89
|
+
async positionsBatch(ids) {
|
|
90
|
+
const positions = [];
|
|
91
|
+
for (let offset = 0; offset < ids.length; offset += 16) {
|
|
92
|
+
positions.push(...await Promise.all(ids.slice(offset, offset + 16).map((id) => this.position(id))));
|
|
93
|
+
}
|
|
94
|
+
return positions;
|
|
95
|
+
}
|
|
96
|
+
async positionWithdrawableEpoch(id) { return Number(await this.contract().getFunction('positionWithdrawableEpoch')(id)); }
|
|
97
|
+
async earlyExitSlashBps(id) { return Number(await this.contract().getFunction('earlyExitSlashBps')(id)); }
|
|
98
|
+
positionWeightAtEpoch(id, epoch) { return this.contract().getFunction('positionWeightAtEpoch')(id, epoch); }
|
|
99
|
+
positionMaxLockPowerAtEpoch(id, epoch) { return this.contract().getFunction('positionMaxLockPowerAtEpoch')(id, epoch); }
|
|
100
|
+
async positionPowerSegmentAt(id, epoch) {
|
|
101
|
+
const [normalEndEpoch, maxLockPower, nextChangeEpoch] = await this.contract().getFunction('positionPowerSegmentAt')(id, epoch);
|
|
102
|
+
return { normalEndEpoch: Number(normalEndEpoch), maxLockPower, nextChangeEpoch: Number(nextChangeEpoch) };
|
|
103
|
+
}
|
|
104
|
+
async isMaxLocked(id, epoch) {
|
|
105
|
+
return (await this.positionMaxLockPowerAtEpoch(id, epoch)) !== 0n;
|
|
106
|
+
}
|
|
107
|
+
// ── pool / config reads ─────────────────────────────────────────────
|
|
108
|
+
async agentIdForSeller(seller) { return Number(await this.contract().getFunction('agentIdForSeller')(seller)); }
|
|
109
|
+
async currentEpoch() { return Number(await this.contract().getFunction('currentEpoch')()); }
|
|
110
|
+
async stakeActivationDelay() { return Number(await this.contract().getFunction('stakeActivationDelay')()); }
|
|
111
|
+
async minStakeEpochs() { return Number(await this.contract().getFunction('minStakeEpochs')()); }
|
|
112
|
+
async maxStakeEpochs() { return Number(await this.contract().getFunction('MAX_STAKE_EPOCHS')()); }
|
|
113
|
+
async nextPositionId() { return Number(await this.contract().getFunction('nextPositionId')()); }
|
|
114
|
+
stakingSource() { return this.contract().getFunction('stakingSource')(); }
|
|
115
|
+
async poolConfig() {
|
|
116
|
+
const contract = this.contract();
|
|
117
|
+
const [minStakeEpochs, maxStakeEpochs, stakeActivationDelay, maxSlashBps, minEarlyExitSlashBps, restakedRewardWeightBonusBps, moveWeightPenaltyBps] = await Promise.all([
|
|
118
|
+
contract.getFunction('minStakeEpochs')(), contract.getFunction('MAX_STAKE_EPOCHS')(), contract.getFunction('stakeActivationDelay')(),
|
|
119
|
+
contract.getFunction('maxSlashBps')(), contract.getFunction('minEarlyExitSlashBps')(),
|
|
120
|
+
contract.getFunction('restakedRewardWeightBonusBps')(), contract.getFunction('moveWeightPenaltyBps')(),
|
|
121
|
+
]);
|
|
122
|
+
return {
|
|
123
|
+
minStakeEpochs: Number(minStakeEpochs), maxStakeEpochs: Number(maxStakeEpochs), stakeActivationDelay: Number(stakeActivationDelay),
|
|
124
|
+
maxSlashBps: Number(maxSlashBps), minEarlyExitSlashBps: Number(minEarlyExitSlashBps),
|
|
125
|
+
restakedRewardWeightBonusBps: Number(restakedRewardWeightBonusBps), moveWeightPenaltyBps: Number(moveWeightPenaltyBps),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
hasPoolAtEpoch(agentId, epoch) { return this.contract().getFunction('hasPoolAtEpoch(uint256,uint256)')(agentId, epoch); }
|
|
129
|
+
poolWeightAtEpoch(agentId, epoch) { return this.contract().getFunction('poolWeightAtEpoch(uint256,uint256)')(agentId, epoch); }
|
|
130
|
+
poolActiveStakeAtEpoch(agentId, epoch) { return this.contract().getFunction('poolActiveStakeAtEpoch(uint256,uint256)')(agentId, epoch); }
|
|
131
|
+
totalActiveStakeAtEpoch(epoch) { return this.contract().getFunction('totalActiveStakeAtEpoch')(epoch); }
|
|
132
|
+
totalPowerWeightAtEpoch(epoch) { return this.contract().getFunction('totalPowerWeightAtEpoch')(epoch); }
|
|
133
|
+
/** Non-view on chain (caches the current epoch's weight); read through a static call. */
|
|
134
|
+
async currentPoolSecurityShareBps(agentId) {
|
|
135
|
+
return Number(await this.contract().getFunction('currentPoolSecurityShareBps(uint256)').staticCall(agentId));
|
|
136
|
+
}
|
|
137
|
+
currentPoolSecurityWeight(agentId) { return this.contract().getFunction('currentPoolSecurityWeight(uint256)').staticCall(agentId); }
|
|
138
|
+
currentTotalSecurityWeight() { return this.contract().getFunction('currentTotalSecurityWeight').staticCall(); }
|
|
139
|
+
stakerTotalActiveStake(staker) { return this.contract().getFunction('stakerTotalActiveStake')(staker); }
|
|
140
|
+
stakerAgentActiveStake(staker, agentId) { return this.contract().getFunction('stakerAgentActiveStake')(staker, agentId); }
|
|
141
|
+
allStakerPositionIds(staker) {
|
|
142
|
+
return collectPositionIds((offset, limit) => this.stakerPositionIds(staker, offset, limit));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
async function collectPositionIds(readPage) {
|
|
146
|
+
const ids = [];
|
|
147
|
+
for (let offset = 0;; offset += 256) {
|
|
148
|
+
const page = await readPage(offset, 256);
|
|
149
|
+
ids.push(...page);
|
|
150
|
+
if (page.length < 256)
|
|
151
|
+
return ids;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
export function estimateEarlyExit(position, slashBps) {
|
|
155
|
+
const slashedAmount = position.amount * BigInt(slashBps) / 10000n;
|
|
156
|
+
return {
|
|
157
|
+
id: position.id,
|
|
158
|
+
amount: position.amount,
|
|
159
|
+
slashBps,
|
|
160
|
+
slashedAmount,
|
|
161
|
+
returnedAmount: position.amount - slashedAmount,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export function positionState(position, currentEpoch) {
|
|
165
|
+
if (position.withdrawn)
|
|
166
|
+
return 'withdrawn';
|
|
167
|
+
if (position.closedAtEpoch !== 0)
|
|
168
|
+
return 'closed';
|
|
169
|
+
if (currentEpoch < position.stakeStartEpoch)
|
|
170
|
+
return 'pending';
|
|
171
|
+
if (currentEpoch < position.stakeEndEpoch)
|
|
172
|
+
return 'active';
|
|
173
|
+
return 'matured';
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Off-chain mirror of the pool's early-exit slash curve, for previews before
|
|
177
|
+
* a position is withdrawable (the on-chain getter reverts while a change is
|
|
178
|
+
* pending). Whole-epoch integer arithmetic matches the contract.
|
|
179
|
+
*/
|
|
180
|
+
export function projectedEarlyExitSlashBps(position, epoch, config, maxLocked = false) {
|
|
181
|
+
if (maxLocked)
|
|
182
|
+
return config.maxSlashBps;
|
|
183
|
+
const closeEpoch = Math.max(epoch, position.stakeStartEpoch);
|
|
184
|
+
if (closeEpoch >= position.stakeEndEpoch)
|
|
185
|
+
return 0;
|
|
186
|
+
const total = position.stakeEndEpoch - position.stakeStartEpoch;
|
|
187
|
+
if (total <= 0)
|
|
188
|
+
return 0;
|
|
189
|
+
const remaining = position.stakeEndEpoch - closeEpoch;
|
|
190
|
+
const linear = Math.floor(config.maxSlashBps * remaining / total);
|
|
191
|
+
return Math.max(config.minEarlyExitSlashBps, Math.min(config.maxSlashBps, linear));
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=seller-pools-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seller-pools-client.js","sourceRoot":"","sources":["../../../src/payments/evm/seller-pools-client.ts"],"names":[],"mappings":"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"}
|