@antseed/node 0.2.116 → 0.2.118

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.
Files changed (97) hide show
  1. package/README.md +30 -0
  2. package/dist/index.d.ts +15 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +14 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/node.d.ts +2 -0
  7. package/dist/node.d.ts.map +1 -1
  8. package/dist/node.js +3 -0
  9. package/dist/node.js.map +1 -1
  10. package/dist/payments/chain-config.d.ts +53 -0
  11. package/dist/payments/chain-config.d.ts.map +1 -1
  12. package/dist/payments/chain-config.js +43 -23
  13. package/dist/payments/chain-config.js.map +1 -1
  14. package/dist/payments/contract-stack.d.ts +53 -0
  15. package/dist/payments/contract-stack.d.ts.map +1 -0
  16. package/dist/payments/contract-stack.js +97 -0
  17. package/dist/payments/contract-stack.js.map +1 -0
  18. package/dist/payments/evm/ants-token-client.d.ts +7 -0
  19. package/dist/payments/evm/ants-token-client.d.ts.map +1 -1
  20. package/dist/payments/evm/ants-token-client.js +37 -1
  21. package/dist/payments/evm/ants-token-client.js.map +1 -1
  22. package/dist/payments/evm/emissions-client.d.ts +3 -0
  23. package/dist/payments/evm/emissions-client.d.ts.map +1 -1
  24. package/dist/payments/evm/emissions-client.js +13 -0
  25. package/dist/payments/evm/emissions-client.js.map +1 -1
  26. package/dist/payments/evm/emissions-gate-client.d.ts +51 -0
  27. package/dist/payments/evm/emissions-gate-client.d.ts.map +1 -0
  28. package/dist/payments/evm/emissions-gate-client.js +55 -0
  29. package/dist/payments/evm/emissions-gate-client.js.map +1 -0
  30. package/dist/payments/evm/multicall.d.ts +21 -0
  31. package/dist/payments/evm/multicall.d.ts.map +1 -0
  32. package/dist/payments/evm/multicall.js +73 -0
  33. package/dist/payments/evm/multicall.js.map +1 -0
  34. package/dist/payments/evm/points-policy-registry-client.d.ts +21 -0
  35. package/dist/payments/evm/points-policy-registry-client.d.ts.map +1 -0
  36. package/dist/payments/evm/points-policy-registry-client.js +34 -0
  37. package/dist/payments/evm/points-policy-registry-client.js.map +1 -0
  38. package/dist/payments/evm/position-init-client.d.ts +18 -0
  39. package/dist/payments/evm/position-init-client.d.ts.map +1 -0
  40. package/dist/payments/evm/position-init-client.js +19 -0
  41. package/dist/payments/evm/position-init-client.js.map +1 -0
  42. package/dist/payments/evm/registry-client.d.ts +17 -0
  43. package/dist/payments/evm/registry-client.d.ts.map +1 -0
  44. package/dist/payments/evm/registry-client.js +24 -0
  45. package/dist/payments/evm/registry-client.js.map +1 -0
  46. package/dist/payments/evm/seller-pools-client.d.ts +95 -0
  47. package/dist/payments/evm/seller-pools-client.d.ts.map +1 -0
  48. package/dist/payments/evm/seller-pools-client.js +193 -0
  49. package/dist/payments/evm/seller-pools-client.js.map +1 -0
  50. package/dist/payments/evm/seller-pools-rewards-client.d.ts +36 -0
  51. package/dist/payments/evm/seller-pools-rewards-client.d.ts.map +1 -0
  52. package/dist/payments/evm/seller-pools-rewards-client.js +126 -0
  53. package/dist/payments/evm/seller-pools-rewards-client.js.map +1 -0
  54. package/dist/payments/evm/seller-registry-client.d.ts +28 -0
  55. package/dist/payments/evm/seller-registry-client.d.ts.map +1 -0
  56. package/dist/payments/evm/seller-registry-client.js +60 -0
  57. package/dist/payments/evm/seller-registry-client.js.map +1 -0
  58. package/dist/payments/evm/seller-rewards-pool-client.d.ts +24 -0
  59. package/dist/payments/evm/seller-rewards-pool-client.d.ts.map +1 -0
  60. package/dist/payments/evm/seller-rewards-pool-client.js +27 -0
  61. package/dist/payments/evm/seller-rewards-pool-client.js.map +1 -0
  62. package/dist/payments/evm/usage-accounting-client.d.ts +49 -0
  63. package/dist/payments/evm/usage-accounting-client.d.ts.map +1 -0
  64. package/dist/payments/evm/usage-accounting-client.js +82 -0
  65. package/dist/payments/evm/usage-accounting-client.js.map +1 -0
  66. package/dist/payments/evm/usage-rewards-client.d.ts +43 -0
  67. package/dist/payments/evm/usage-rewards-client.d.ts.map +1 -0
  68. package/dist/payments/evm/usage-rewards-client.js +62 -0
  69. package/dist/payments/evm/usage-rewards-client.js.map +1 -0
  70. package/dist/payments/evm/wash-trading-registry-client.d.ts +105 -0
  71. package/dist/payments/evm/wash-trading-registry-client.d.ts.map +1 -0
  72. package/dist/payments/evm/wash-trading-registry-client.js +170 -0
  73. package/dist/payments/evm/wash-trading-registry-client.js.map +1 -0
  74. package/dist/payments/generated-contract-addresses.d.ts +49 -0
  75. package/dist/payments/generated-contract-addresses.d.ts.map +1 -0
  76. package/dist/payments/generated-contract-addresses.js +50 -0
  77. package/dist/payments/generated-contract-addresses.js.map +1 -0
  78. package/dist/payments/index.d.ts +28 -0
  79. package/dist/payments/index.d.ts.map +1 -1
  80. package/dist/payments/index.js +14 -0
  81. package/dist/payments/index.js.map +1 -1
  82. package/dist/payments/reward-claims.d.ts +28 -0
  83. package/dist/payments/reward-claims.d.ts.map +1 -0
  84. package/dist/payments/reward-claims.js +67 -0
  85. package/dist/payments/reward-claims.js.map +1 -0
  86. package/dist/payments/reward-preview.d.ts +19 -0
  87. package/dist/payments/reward-preview.d.ts.map +1 -0
  88. package/dist/payments/reward-preview.js +36 -0
  89. package/dist/payments/reward-preview.js.map +1 -0
  90. package/dist/payments/seller-payment-manager.d.ts +9 -0
  91. package/dist/payments/seller-payment-manager.d.ts.map +1 -1
  92. package/dist/payments/seller-payment-manager.js +45 -0
  93. package/dist/payments/seller-payment-manager.js.map +1 -1
  94. package/dist/seller-request-handler.d.ts.map +1 -1
  95. package/dist/seller-request-handler.js +12 -0
  96. package/dist/seller-request-handler.js.map +1 -1
  97. package/package.json +4 -4
@@ -0,0 +1,105 @@
1
+ import { type AbstractSigner } from 'ethers';
2
+ import { BaseEvmClient } from './base-evm-client.js';
3
+ export interface WashTradingRegistryClientConfig {
4
+ rpcUrl: string;
5
+ fallbackRpcUrls?: string[];
6
+ contractAddress: string;
7
+ evmChainId?: number;
8
+ }
9
+ export interface WashTradingSellerStatus {
10
+ seller: string;
11
+ provenWashVolume: bigint;
12
+ totalSellerVolume: bigint;
13
+ provenWashShareBps: number;
14
+ evidenceDigest: string;
15
+ isProvenWashTrader: boolean;
16
+ thresholdBps: number;
17
+ }
18
+ export interface WashTradingProofStatus {
19
+ proofId: string;
20
+ staged: boolean;
21
+ finalized: boolean;
22
+ authenticatedBlockReferenceCount: number;
23
+ authenticatedBlockChunkCount: number;
24
+ }
25
+ export interface WashTradingRegistryConfig {
26
+ verifierHash: string;
27
+ sellerProgramVKey: string;
28
+ periodStartBlock: number;
29
+ periodEndBlock: number;
30
+ thresholdBps: number;
31
+ blockhashStore: string;
32
+ verifier: string;
33
+ }
34
+ export interface BlockReference {
35
+ number: number;
36
+ blockHash: string;
37
+ }
38
+ /** Chunk from a loop-proof `antseed-wash-trading-seller-proof` artifact. */
39
+ export interface BlockAuthenticationChunk {
40
+ index: number;
41
+ references: BlockReference[];
42
+ proof: string[];
43
+ }
44
+ /**
45
+ * Seller proof artifact produced by the loop-proof host
46
+ * (`kind: antseed-wash-trading-seller-proof`, `proofArchitecture: direct-seller-v1`).
47
+ */
48
+ export interface SellerProofArtifact {
49
+ version: number;
50
+ kind: string;
51
+ proofArchitecture?: string;
52
+ chainId?: number;
53
+ seller: string;
54
+ publicValues: string;
55
+ proofBytes: string;
56
+ evidenceDigest?: string;
57
+ blockReferenceCount: number;
58
+ blockAuthenticationRoot?: string;
59
+ blockAuthenticationChunkSize: number;
60
+ blockAuthenticationChunkCount: number;
61
+ blockAuthenticationChunks: BlockAuthenticationChunk[];
62
+ }
63
+ export type SellerProofSubmissionStep = {
64
+ kind: 'stage';
65
+ proofId: string;
66
+ hash?: string;
67
+ skipped: boolean;
68
+ } | {
69
+ kind: 'authenticate';
70
+ proofId: string;
71
+ chunkIndex: number;
72
+ chunkCount: number;
73
+ hash?: string;
74
+ skipped: boolean;
75
+ } | {
76
+ kind: 'finalize';
77
+ proofId: string;
78
+ hash?: string;
79
+ skipped: boolean;
80
+ };
81
+ export declare function sellerProofId(publicValues: string): string;
82
+ /** Structural validation of a loop-proof seller artifact before any transaction is sent. */
83
+ export declare function validateSellerProofArtifact(artifact: unknown): SellerProofArtifact;
84
+ export declare class WashTradingRegistryClient extends BaseEvmClient {
85
+ constructor(config: WashTradingRegistryClientConfig);
86
+ private contract;
87
+ registryConfig(): Promise<WashTradingRegistryConfig>;
88
+ sellerStatus(seller: string): Promise<WashTradingSellerStatus>;
89
+ isProvenWashTrader(seller: string): Promise<boolean>;
90
+ proofStatus(proofId: string): Promise<WashTradingProofStatus>;
91
+ proofBlockChunkAuthenticated(proofId: string, chunkIndex: number): Promise<boolean>;
92
+ stageSellerProof(signer: AbstractSigner, publicValues: string, proofBytes: string): Promise<string>;
93
+ authenticateBlockReferences(signer: AbstractSigner, proofId: string, chunk: BlockAuthenticationChunk): Promise<string>;
94
+ finalizeSellerProof(signer: AbstractSigner, proofId: string): Promise<string>;
95
+ /**
96
+ * Stage, authenticate every committed chunk, and finalize a seller proof.
97
+ * Resumable: steps already recorded on chain are skipped, so an interrupted
98
+ * submission can be re-run with the same artifact.
99
+ */
100
+ submitSellerProof(signer: AbstractSigner, artifact: SellerProofArtifact, onStep?: (step: SellerProofSubmissionStep) => void | Promise<void>): Promise<{
101
+ proofId: string;
102
+ finalized: boolean;
103
+ }>;
104
+ }
105
+ //# sourceMappingURL=wash-trading-registry-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wash-trading-registry-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/wash-trading-registry-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ import { Contract, keccak256 } from 'ethers';
2
+ import { BaseEvmClient } from './base-evm-client.js';
3
+ const ABI = [
4
+ 'function stageSellerProof(bytes publicValues, bytes proofBytes) external returns (bytes32 proofId)',
5
+ 'function authenticateBlockReferences(bytes32 proofId, uint32 chunkIndex, tuple(uint64 number, bytes32 blockHash)[] references, bytes32[] proof) external',
6
+ 'function finalizeSellerProof(bytes32 proofId) external',
7
+ 'function verifier() external view returns (address)',
8
+ 'function verifierHash() external view returns (bytes32)',
9
+ 'function blockhashStore() external view returns (address)',
10
+ 'function sellerProgramVKey() external view returns (bytes32)',
11
+ 'function periodStartBlock() external view returns (uint64)',
12
+ 'function periodEndBlock() external view returns (uint64)',
13
+ 'function WASH_TRADING_THRESHOLD_BPS() external view returns (uint256)',
14
+ 'function proofStaged(bytes32 proofId) external view returns (bool)',
15
+ 'function proofFinalized(bytes32 proofId) external view returns (bool)',
16
+ 'function proofAuthenticatedBlockReferenceCount(bytes32 proofId) external view returns (uint32)',
17
+ 'function proofAuthenticatedBlockChunkCount(bytes32 proofId) external view returns (uint32)',
18
+ 'function proofBlockChunkAuthenticated(bytes32 proofId, uint32 chunkIndex) external view returns (bool)',
19
+ 'function provenWashVolume(address seller) external view returns (uint128)',
20
+ 'function totalSellerVolume(address seller) external view returns (uint128)',
21
+ 'function provenWashShareBps(address seller) external view returns (uint256)',
22
+ 'function sellerEvidenceDigest(address seller) external view returns (bytes32)',
23
+ 'function isProvenWashTrader(address seller) external view returns (bool)',
24
+ ];
25
+ const BYTES32 = /^0x[0-9a-f]{64}$/i;
26
+ const HEX = /^0x(?:[0-9a-f]{2})*$/i;
27
+ export function sellerProofId(publicValues) {
28
+ return keccak256(publicValues);
29
+ }
30
+ /** Structural validation of a loop-proof seller artifact before any transaction is sent. */
31
+ export function validateSellerProofArtifact(artifact) {
32
+ const value = artifact;
33
+ if (!value || typeof value !== 'object')
34
+ throw new Error('Seller proof artifact must be a JSON object.');
35
+ if (value.kind !== 'antseed-wash-trading-seller-proof')
36
+ throw new Error(`Unexpected artifact kind '${String(value.kind)}'; expected antseed-wash-trading-seller-proof.`);
37
+ if (value.proofArchitecture !== undefined && value.proofArchitecture !== 'direct-seller-v1') {
38
+ throw new Error(`Unsupported proof architecture '${String(value.proofArchitecture)}'; the registry accepts direct-seller-v1.`);
39
+ }
40
+ if (typeof value.publicValues !== 'string' || !HEX.test(value.publicValues) || value.publicValues.length <= 2)
41
+ throw new Error('Artifact publicValues must be hex bytes.');
42
+ if (typeof value.proofBytes !== 'string' || !HEX.test(value.proofBytes) || value.proofBytes.length <= 2)
43
+ throw new Error('Artifact proofBytes must be hex bytes.');
44
+ if (typeof value.seller !== 'string' || !/^0x[0-9a-f]{40}$/i.test(value.seller))
45
+ throw new Error('Artifact seller must be an address.');
46
+ const chunkSize = Number(value.blockAuthenticationChunkSize);
47
+ const chunkCount = Number(value.blockAuthenticationChunkCount);
48
+ const referenceCount = Number(value.blockReferenceCount);
49
+ if (!Number.isSafeInteger(chunkSize) || chunkSize <= 0)
50
+ throw new Error('Artifact blockAuthenticationChunkSize must be positive.');
51
+ if (!Number.isSafeInteger(chunkCount) || chunkCount <= 0)
52
+ throw new Error('Artifact blockAuthenticationChunkCount must be positive.');
53
+ const chunks = value.blockAuthenticationChunks;
54
+ if (!Array.isArray(chunks) || chunks.length !== chunkCount)
55
+ throw new Error(`Artifact has ${Array.isArray(chunks) ? chunks.length : 0} chunks but declares ${chunkCount}.`);
56
+ let previous = 0;
57
+ let total = 0;
58
+ const normalized = chunks.map((chunk, index) => {
59
+ if (!chunk || chunk.index !== index)
60
+ throw new Error(`Chunk ${index} is missing or out of order.`);
61
+ if (!Array.isArray(chunk.references) || chunk.references.length === 0 || chunk.references.length > chunkSize)
62
+ throw new Error(`Chunk ${index} has an invalid reference count.`);
63
+ if (index < chunkCount - 1 && chunk.references.length !== chunkSize)
64
+ throw new Error(`Chunk ${index} must hold exactly ${chunkSize} references.`);
65
+ if (!Array.isArray(chunk.proof) || chunk.proof.some((node) => typeof node !== 'string' || !BYTES32.test(node)))
66
+ throw new Error(`Chunk ${index} has an invalid Merkle proof.`);
67
+ const references = chunk.references.map((reference) => {
68
+ const number = Number(reference.number);
69
+ if (!Number.isSafeInteger(number) || number <= previous)
70
+ throw new Error(`Chunk ${index} block references must be strictly increasing.`);
71
+ if (typeof reference.blockHash !== 'string' || !BYTES32.test(reference.blockHash))
72
+ throw new Error(`Chunk ${index} has an invalid block hash.`);
73
+ previous = number;
74
+ return { number, blockHash: reference.blockHash.toLowerCase() };
75
+ });
76
+ total += references.length;
77
+ return { index, references, proof: chunk.proof.map((node) => node.toLowerCase()) };
78
+ });
79
+ if (total !== referenceCount)
80
+ throw new Error(`Artifact chunks hold ${total} references but declare ${referenceCount}.`);
81
+ return {
82
+ version: Number(value.version), kind: value.kind, proofArchitecture: value.proofArchitecture, chainId: value.chainId,
83
+ seller: value.seller, publicValues: value.publicValues, proofBytes: value.proofBytes, evidenceDigest: value.evidenceDigest,
84
+ blockReferenceCount: referenceCount, blockAuthenticationRoot: value.blockAuthenticationRoot,
85
+ blockAuthenticationChunkSize: chunkSize, blockAuthenticationChunkCount: chunkCount, blockAuthenticationChunks: normalized,
86
+ };
87
+ }
88
+ export class WashTradingRegistryClient extends BaseEvmClient {
89
+ constructor(config) { super(config.rpcUrl, config.contractAddress, config.fallbackRpcUrls, config.evmChainId); }
90
+ contract() { return new Contract(this._contractAddress, ABI, this._provider); }
91
+ async registryConfig() {
92
+ const contract = this.contract();
93
+ const [verifier, verifierHash, blockhashStore, sellerProgramVKey, periodStartBlock, periodEndBlock, thresholdBps] = await Promise.all([
94
+ contract.getFunction('verifier')(), contract.getFunction('verifierHash')(), contract.getFunction('blockhashStore')(),
95
+ contract.getFunction('sellerProgramVKey')(), contract.getFunction('periodStartBlock')(), contract.getFunction('periodEndBlock')(),
96
+ contract.getFunction('WASH_TRADING_THRESHOLD_BPS')(),
97
+ ]);
98
+ return {
99
+ verifier, verifierHash, blockhashStore, sellerProgramVKey,
100
+ periodStartBlock: Number(periodStartBlock), periodEndBlock: Number(periodEndBlock), thresholdBps: Number(thresholdBps),
101
+ };
102
+ }
103
+ async sellerStatus(seller) {
104
+ const contract = this.contract();
105
+ const [provenWashVolume, totalSellerVolume, provenWashShareBps, evidenceDigest, isProvenWashTrader, thresholdBps] = await Promise.all([
106
+ contract.getFunction('provenWashVolume')(seller), contract.getFunction('totalSellerVolume')(seller),
107
+ contract.getFunction('provenWashShareBps')(seller), contract.getFunction('sellerEvidenceDigest')(seller),
108
+ contract.getFunction('isProvenWashTrader')(seller), contract.getFunction('WASH_TRADING_THRESHOLD_BPS')(),
109
+ ]);
110
+ return {
111
+ seller, provenWashVolume, totalSellerVolume, provenWashShareBps: Number(provenWashShareBps), evidenceDigest,
112
+ isProvenWashTrader, thresholdBps: Number(thresholdBps),
113
+ };
114
+ }
115
+ isProvenWashTrader(seller) { return this.contract().getFunction('isProvenWashTrader')(seller); }
116
+ async proofStatus(proofId) {
117
+ const contract = this.contract();
118
+ const [staged, finalized, references, chunks] = await Promise.all([
119
+ contract.getFunction('proofStaged')(proofId), contract.getFunction('proofFinalized')(proofId),
120
+ contract.getFunction('proofAuthenticatedBlockReferenceCount')(proofId), contract.getFunction('proofAuthenticatedBlockChunkCount')(proofId),
121
+ ]);
122
+ return { proofId, staged, finalized, authenticatedBlockReferenceCount: Number(references), authenticatedBlockChunkCount: Number(chunks) };
123
+ }
124
+ proofBlockChunkAuthenticated(proofId, chunkIndex) {
125
+ return this.contract().getFunction('proofBlockChunkAuthenticated')(proofId, chunkIndex);
126
+ }
127
+ stageSellerProof(signer, publicValues, proofBytes) {
128
+ return this._execWrite(signer, ABI, 'stageSellerProof', publicValues, proofBytes);
129
+ }
130
+ authenticateBlockReferences(signer, proofId, chunk) {
131
+ const references = chunk.references.map((reference) => ({ number: reference.number, blockHash: reference.blockHash }));
132
+ return this._execWrite(signer, ABI, 'authenticateBlockReferences', proofId, chunk.index, references, chunk.proof);
133
+ }
134
+ finalizeSellerProof(signer, proofId) {
135
+ return this._execWrite(signer, ABI, 'finalizeSellerProof', proofId);
136
+ }
137
+ /**
138
+ * Stage, authenticate every committed chunk, and finalize a seller proof.
139
+ * Resumable: steps already recorded on chain are skipped, so an interrupted
140
+ * submission can be re-run with the same artifact.
141
+ */
142
+ async submitSellerProof(signer, artifact, onStep = () => { }) {
143
+ const proofId = sellerProofId(artifact.publicValues);
144
+ const status = await this.proofStatus(proofId);
145
+ if (status.finalized) {
146
+ await onStep({ kind: 'finalize', proofId, skipped: true });
147
+ return { proofId, finalized: true };
148
+ }
149
+ if (status.staged) {
150
+ await onStep({ kind: 'stage', proofId, skipped: true });
151
+ }
152
+ else {
153
+ const hash = await this.stageSellerProof(signer, artifact.publicValues, artifact.proofBytes);
154
+ await onStep({ kind: 'stage', proofId, hash, skipped: false });
155
+ }
156
+ const chunkCount = artifact.blockAuthenticationChunkCount;
157
+ for (const chunk of artifact.blockAuthenticationChunks) {
158
+ if (await this.proofBlockChunkAuthenticated(proofId, chunk.index)) {
159
+ await onStep({ kind: 'authenticate', proofId, chunkIndex: chunk.index, chunkCount, skipped: true });
160
+ continue;
161
+ }
162
+ const hash = await this.authenticateBlockReferences(signer, proofId, chunk);
163
+ await onStep({ kind: 'authenticate', proofId, chunkIndex: chunk.index, chunkCount, hash, skipped: false });
164
+ }
165
+ const hash = await this.finalizeSellerProof(signer, proofId);
166
+ await onStep({ kind: 'finalize', proofId, hash, skipped: false });
167
+ return { proofId, finalized: true };
168
+ }
169
+ }
170
+ //# sourceMappingURL=wash-trading-registry-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wash-trading-registry-client.js","sourceRoot":"","sources":["../../../src/payments/evm/wash-trading-registry-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ export declare const DEPLOYED_CONTRACT_ADDRESSES: {
2
+ readonly 'base-mainnet': {
3
+ readonly evmChainId: 8453;
4
+ readonly registryContractAddress: "0xf33fC901BFa97326379A369401F4490E231B69B0";
5
+ readonly usdcContractAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
6
+ readonly depositsContractAddress: "0x0F7a3a8f4Da01637d1202bb5443fcF7F88F99fD2";
7
+ readonly channelsContractAddress: "0xBA66d3b4fbCf472F6F11D6F9F96aaCE96516F09d";
8
+ readonly freeUsageContractAddress: "0xB24DcDE777C4ad9AC385Ec9500b3Dc527a4F91Ad";
9
+ readonly stakingContractAddress: "0x3652E6B22919bd322A25723B94BB207602E5c8e6";
10
+ readonly emissionsContractAddress: "0xF13bE52c4A3afC6AE29536f073588d01A0564088";
11
+ readonly legacyEmissionsContractAddress: "0x36877fBa8Fa333aa46a1c57b66D132E4995C86b5";
12
+ readonly antsTokenAddress: "0xa87EE81b2C0Bc659307ca2D9ffdC38514DD85263";
13
+ readonly identityRegistryAddress: "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432";
14
+ readonly statsContractAddress: "0x15649ff076BFa5e37e24EE3154a00503149954Fd";
15
+ readonly depositRelayAddress: "0x34a44542e76f9b4cff3a31902eDF14AbF2C3B3DD";
16
+ readonly channelsDeployBlock: 44469557;
17
+ readonly statsDeployBlock: 44469557;
18
+ readonly recognizedUsage: {
19
+ readonly status: "deployed";
20
+ readonly effectiveEpoch: 22;
21
+ readonly deploymentBlock: 50955026;
22
+ readonly contracts: {
23
+ readonly washTradingRegistry: "0xc02a111cb94332cc31c08e079cbe781880b2121c";
24
+ readonly emissionsGate: "0xe60a31e6cd2f8455503ca0b3f6545dd3ddf543bd";
25
+ readonly sellerPools: "0x8bf4d39aa13f3cb03f87d9500767fbc4d0940652";
26
+ readonly sellerRegistry: "0x99c533bcc6ca646e543dba835fdbb9c2ee02cb60";
27
+ readonly positionInit: "0xb68ad13b681319fceb6b0a640c2fd96c0138cbc8";
28
+ readonly usageAccounting: "0xadd2d85316153d7bfaf7921ee9bf1bb6c7a1cbc9";
29
+ readonly pointsPolicyRegistry: "0x212d2c1058b84507de248a147aafeb08fb19e3b6";
30
+ readonly washTradingPointsPolicy: "0x7a605aaa3c725aa25012dfded6b5dddcc561d6e5";
31
+ readonly sellerPoolsRewards: "0x83cc5b9aa0c8cb8683f35462c385a5baaa755ee5";
32
+ readonly usageRewards: "0x78330bf154172f1137219bb559d4f3a270b3201f";
33
+ readonly legacyEmissionsEscrow: "0x4d0fc3c0bbb5233af6c4ce33223e5330c34db9ab";
34
+ };
35
+ };
36
+ };
37
+ readonly 'base-sepolia': {
38
+ readonly evmChainId: 84532;
39
+ readonly registryContractAddress: "0x81562e904D228Ee05DB473f5c9453F0f0D65ad5A";
40
+ readonly usdcContractAddress: "0xcA04797CaB6B412Cee6798B7314a05AdFDc3Cf23";
41
+ readonly depositsContractAddress: "0x96f083A9801AFdcE7D764651954A1A9Fbd489FEA";
42
+ readonly channelsContractAddress: "0x3b0b94AC27C042CAC17103A897Fb5cEb7D8b4cf7";
43
+ readonly stakingContractAddress: "0x1CB76B197a20E41f9AA01806B41C59e16Cad46a7";
44
+ readonly emissionsContractAddress: "0x9B30DAcfC20F0927fFD49fB0B84cf3EB83976a33";
45
+ readonly antsTokenAddress: "0x10B2B40d7aDEBAB0f8a9567fc90973Fbb997aE61";
46
+ readonly identityRegistryAddress: "0x8004A818BFB912233c491871b3d84c89A494BD9e";
47
+ };
48
+ };
49
+ //# sourceMappingURL=generated-contract-addresses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-contract-addresses.d.ts","sourceRoot":"","sources":["../../src/payments/generated-contract-addresses.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+C9B,CAAC"}
@@ -0,0 +1,50 @@
1
+ // Generated by scripts/generate-contract-chain-config.mjs. Do not edit manually.
2
+ export const DEPLOYED_CONTRACT_ADDRESSES = {
3
+ 'base-mainnet': {
4
+ evmChainId: 8453,
5
+ registryContractAddress: '0xf33fC901BFa97326379A369401F4490E231B69B0',
6
+ usdcContractAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
7
+ depositsContractAddress: '0x0F7a3a8f4Da01637d1202bb5443fcF7F88F99fD2',
8
+ channelsContractAddress: '0xBA66d3b4fbCf472F6F11D6F9F96aaCE96516F09d',
9
+ freeUsageContractAddress: '0xB24DcDE777C4ad9AC385Ec9500b3Dc527a4F91Ad',
10
+ stakingContractAddress: '0x3652E6B22919bd322A25723B94BB207602E5c8e6',
11
+ emissionsContractAddress: '0xF13bE52c4A3afC6AE29536f073588d01A0564088',
12
+ legacyEmissionsContractAddress: '0x36877fBa8Fa333aa46a1c57b66D132E4995C86b5',
13
+ antsTokenAddress: '0xa87EE81b2C0Bc659307ca2D9ffdC38514DD85263',
14
+ identityRegistryAddress: '0x8004A169FB4a3325136EB29fA0ceB6D2e539a432',
15
+ statsContractAddress: '0x15649ff076BFa5e37e24EE3154a00503149954Fd',
16
+ depositRelayAddress: '0x34a44542e76f9b4cff3a31902eDF14AbF2C3B3DD',
17
+ channelsDeployBlock: 44469557,
18
+ statsDeployBlock: 44469557,
19
+ recognizedUsage: {
20
+ "status": "deployed",
21
+ "effectiveEpoch": 22,
22
+ "deploymentBlock": 50955026,
23
+ "contracts": {
24
+ "washTradingRegistry": "0xc02a111cb94332cc31c08e079cbe781880b2121c",
25
+ "emissionsGate": "0xe60a31e6cd2f8455503ca0b3f6545dd3ddf543bd",
26
+ "sellerPools": "0x8bf4d39aa13f3cb03f87d9500767fbc4d0940652",
27
+ "sellerRegistry": "0x99c533bcc6ca646e543dba835fdbb9c2ee02cb60",
28
+ "positionInit": "0xb68ad13b681319fceb6b0a640c2fd96c0138cbc8",
29
+ "usageAccounting": "0xadd2d85316153d7bfaf7921ee9bf1bb6c7a1cbc9",
30
+ "pointsPolicyRegistry": "0x212d2c1058b84507de248a147aafeb08fb19e3b6",
31
+ "washTradingPointsPolicy": "0x7a605aaa3c725aa25012dfded6b5dddcc561d6e5",
32
+ "sellerPoolsRewards": "0x83cc5b9aa0c8cb8683f35462c385a5baaa755ee5",
33
+ "usageRewards": "0x78330bf154172f1137219bb559d4f3a270b3201f",
34
+ "legacyEmissionsEscrow": "0x4d0fc3c0bbb5233af6c4ce33223e5330c34db9ab"
35
+ }
36
+ },
37
+ },
38
+ 'base-sepolia': {
39
+ evmChainId: 84532,
40
+ registryContractAddress: '0x81562e904D228Ee05DB473f5c9453F0f0D65ad5A',
41
+ usdcContractAddress: '0xcA04797CaB6B412Cee6798B7314a05AdFDc3Cf23',
42
+ depositsContractAddress: '0x96f083A9801AFdcE7D764651954A1A9Fbd489FEA',
43
+ channelsContractAddress: '0x3b0b94AC27C042CAC17103A897Fb5cEb7D8b4cf7',
44
+ stakingContractAddress: '0x1CB76B197a20E41f9AA01806B41C59e16Cad46a7',
45
+ emissionsContractAddress: '0x9B30DAcfC20F0927fFD49fB0B84cf3EB83976a33',
46
+ antsTokenAddress: '0x10B2B40d7aDEBAB0f8a9567fc90973Fbb997aE61',
47
+ identityRegistryAddress: '0x8004A818BFB912233c491871b3d84c89A494BD9e',
48
+ },
49
+ };
50
+ //# sourceMappingURL=generated-contract-addresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-contract-addresses.js","sourceRoot":"","sources":["../../src/payments/generated-contract-addresses.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,cAAc,EAAE;QACd,UAAU,EAAE,IAAI;QAChB,uBAAuB,EAAE,4CAA4C;QACrE,mBAAmB,EAAE,4CAA4C;QACjE,uBAAuB,EAAE,4CAA4C;QACrE,uBAAuB,EAAE,4CAA4C;QACrE,wBAAwB,EAAE,4CAA4C;QACtE,sBAAsB,EAAE,4CAA4C;QACpE,wBAAwB,EAAE,4CAA4C;QACtE,8BAA8B,EAAE,4CAA4C;QAC5E,gBAAgB,EAAE,4CAA4C;QAC9D,uBAAuB,EAAE,4CAA4C;QACrE,oBAAoB,EAAE,4CAA4C;QAClE,mBAAmB,EAAE,4CAA4C;QACjE,mBAAmB,EAAE,QAAQ;QAC7B,gBAAgB,EAAE,QAAQ;QAC1B,eAAe,EAAE;YACf,QAAQ,EAAE,UAAU;YACpB,gBAAgB,EAAE,EAAE;YACpB,iBAAiB,EAAE,QAAQ;YAC3B,WAAW,EAAE;gBACX,qBAAqB,EAAE,4CAA4C;gBACnE,eAAe,EAAE,4CAA4C;gBAC7D,aAAa,EAAE,4CAA4C;gBAC3D,gBAAgB,EAAE,4CAA4C;gBAC9D,cAAc,EAAE,4CAA4C;gBAC5D,iBAAiB,EAAE,4CAA4C;gBAC/D,sBAAsB,EAAE,4CAA4C;gBACpE,yBAAyB,EAAE,4CAA4C;gBACvE,oBAAoB,EAAE,4CAA4C;gBAClE,cAAc,EAAE,4CAA4C;gBAC5D,uBAAuB,EAAE,4CAA4C;aACtE;SACF;KACF;IACD,cAAc,EAAE;QACd,UAAU,EAAE,KAAK;QACjB,uBAAuB,EAAE,4CAA4C;QACrE,mBAAmB,EAAE,4CAA4C;QACjE,uBAAuB,EAAE,4CAA4C;QACrE,uBAAuB,EAAE,4CAA4C;QACrE,sBAAsB,EAAE,4CAA4C;QACpE,wBAAwB,EAAE,4CAA4C;QACtE,gBAAgB,EAAE,4CAA4C;QAC9D,uBAAuB,EAAE,4CAA4C;KACtE;CACO,CAAC"}
@@ -18,6 +18,34 @@ export { ANTSTokenClient } from './evm/ants-token-client.js';
18
18
  export type { ANTSTokenClientConfig } from './evm/ants-token-client.js';
19
19
  export { EmissionsClient } from './evm/emissions-client.js';
20
20
  export type { EmissionsClientConfig, EmissionsEpochParams } from './evm/emissions-client.js';
21
+ export { RegistryClient } from './evm/registry-client.js';
22
+ export type { RegistryClientConfig } from './evm/registry-client.js';
23
+ export { UsageAccountingClient } from './evm/usage-accounting-client.js';
24
+ export type { UsageAccountingClientConfig, UsagePoints, UsageTotals } from './evm/usage-accounting-client.js';
25
+ export { UsageRewardsClient } from './evm/usage-rewards-client.js';
26
+ export type { UsageRewardsClientConfig, DynamicUsageConfig } from './evm/usage-rewards-client.js';
27
+ export { SellerPoolsClient, estimateEarlyExit, positionState, projectedEarlyExitSlashBps } from './evm/seller-pools-client.js';
28
+ export type { SellerPoolsClientConfig, SellerPoolPosition, EarlyExitEstimate, SellerPoolConfig, PositionPowerSegment, PositionState } from './evm/seller-pools-client.js';
29
+ export { SellerPoolsRewardsClient } from './evm/seller-pools-rewards-client.js';
30
+ export type { SellerPoolsRewardsClientConfig, DynamicStakerConfig } from './evm/seller-pools-rewards-client.js';
31
+ export { SellerRegistryClient, SellerRegistrationVerificationError } from './evm/seller-registry-client.js';
32
+ export type { SellerRegistryClientConfig } from './evm/seller-registry-client.js';
33
+ export { pendingEpochRewards, claimEpochRewards, claimBuyerEpochRewards, previewPoolRewards, claimPoolRewards } from './reward-claims.js';
34
+ export type { RewardTransactionRecorder } from './reward-claims.js';
35
+ export { PositionInitClient } from './evm/position-init-client.js';
36
+ export type { PositionInitClientConfig } from './evm/position-init-client.js';
37
+ export { EmissionsGateClient, GATE_MINTERS, gateMinterId } from './evm/emissions-gate-client.js';
38
+ export type { EmissionsGateClientConfig, GateMinter } from './evm/emissions-gate-client.js';
39
+ export { WashTradingRegistryClient, validateSellerProofArtifact, sellerProofId } from './evm/wash-trading-registry-client.js';
40
+ export type { WashTradingRegistryClientConfig, WashTradingSellerStatus, WashTradingProofStatus, WashTradingRegistryConfig, BlockReference, BlockAuthenticationChunk, SellerProofArtifact, SellerProofSubmissionStep, } from './evm/wash-trading-registry-client.js';
41
+ export { PointsPolicyRegistryClient } from './evm/points-policy-registry-client.js';
42
+ export type { PointsPolicyRegistryClientConfig } from './evm/points-policy-registry-client.js';
43
+ export { SellerRewardsPoolClient } from './evm/seller-rewards-pool-client.js';
44
+ export type { SellerRewardsPoolClientConfig } from './evm/seller-rewards-pool-client.js';
45
+ export { multicallRead, MULTICALL3_ADDRESS } from './evm/multicall.js';
46
+ export type { MulticallRequest } from './evm/multicall.js';
47
+ export { ContractStackMismatchError, legacyEpochs, newEpochs, resolveContractStack, resolveLegacyContractAddresses, } from './contract-stack.js';
48
+ export type { ContractStackAddresses, ContractStackMode, ContractStackResolution, ContractStackRpcOptions, } from './contract-stack.js';
21
49
  export { ChannelStore, CHANNEL_KIND, CHANNEL_ROLE, CHANNEL_STATUS } from './channel-store.js';
22
50
  export type { ChannelKind, ChannelRole, ChannelStatus, StoredChannel, StoredReceipt } from './channel-store.js';
23
51
  export { BuyerPaymentManager } from './buyer-payment-manager.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,20 @@ export { signSpendingAuth, signReserveAuth, signFreeUsageOpen, signFreeUsageAuth
17
17
  export { ANTSTokenClient } from './evm/ants-token-client.js';
18
18
  // Emissions
19
19
  export { EmissionsClient } from './evm/emissions-client.js';
20
+ export { RegistryClient } from './evm/registry-client.js';
21
+ export { UsageAccountingClient } from './evm/usage-accounting-client.js';
22
+ export { UsageRewardsClient } from './evm/usage-rewards-client.js';
23
+ export { SellerPoolsClient, estimateEarlyExit, positionState, projectedEarlyExitSlashBps } from './evm/seller-pools-client.js';
24
+ export { SellerPoolsRewardsClient } from './evm/seller-pools-rewards-client.js';
25
+ export { SellerRegistryClient, SellerRegistrationVerificationError } from './evm/seller-registry-client.js';
26
+ export { pendingEpochRewards, claimEpochRewards, claimBuyerEpochRewards, previewPoolRewards, claimPoolRewards } from './reward-claims.js';
27
+ export { PositionInitClient } from './evm/position-init-client.js';
28
+ export { EmissionsGateClient, GATE_MINTERS, gateMinterId } from './evm/emissions-gate-client.js';
29
+ export { WashTradingRegistryClient, validateSellerProofArtifact, sellerProofId } from './evm/wash-trading-registry-client.js';
30
+ export { PointsPolicyRegistryClient } from './evm/points-policy-registry-client.js';
31
+ export { SellerRewardsPoolClient } from './evm/seller-rewards-pool-client.js';
32
+ export { multicallRead, MULTICALL3_ADDRESS } from './evm/multicall.js';
33
+ export { ContractStackMismatchError, legacyEpochs, newEpochs, resolveContractStack, resolveLegacyContractAddresses, } from './contract-stack.js';
20
34
  // Channel persistence
21
35
  export { ChannelStore, CHANNEL_KIND, CHANNEL_ROLE, CHANNEL_STATUS } from './channel-store.js';
22
36
  // Buyer payment manager
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"AAWA,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,oDAAoD;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,6CAA6C;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,8CAA8C;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,8CAA8C;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,wDAAwD;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,4BAA4B,EAC5B,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAa7B,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAG9F,wBAAwB;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,sBAAsB;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,4EAA4E;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,yBAAyB;AACzB,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAGjG,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAGtB,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG3E,yDAAyD;AACzD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payments/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { SellerPoolsClient } from './evm/seller-pools-client.js';
2
+ import type { SellerPoolsRewardsClient } from './evm/seller-pools-rewards-client.js';
3
+ export type RewardTransactionRecorder = (hash: string, kind: 'claim' | 'accounting') => Promise<void>;
4
+ export declare function pendingEpochRewards(epochs: number[], readPending: (epochs: number[]) => Promise<bigint>): Promise<bigint>;
5
+ export declare function claimEpochRewards(epochs: number[], readPending: (epochs: number[]) => Promise<bigint>, claim: (epochs: number[]) => Promise<string>, record: RewardTransactionRecorder): Promise<void>;
6
+ export declare function claimBuyerEpochRewards(epochs: number[], readPending: (epoch: number) => Promise<bigint>, claim: (epoch: number) => Promise<string>, record: RewardTransactionRecorder): Promise<void>;
7
+ type PoolReader = Pick<SellerPoolsClient, 'allStakerPositionIds' | 'positionsBatch' | 'position' | 'currentEpoch'>;
8
+ type PoolRewards = Pick<SellerPoolsRewardsClient, 'previewStakerRewards' | 'pendingIndexedStakerReward' | 'poolRewardIndexNextEpoch' | 'initialIndexEpoch' | 'indexPoolRewards' | 'claimStakerRewardsBatch'>;
9
+ type RewardSigner = Parameters<SellerPoolsRewardsClient['claimStakerRewardsBatch']>[0];
10
+ /**
11
+ * Pending staker rewards for the wallet's open positions (the on-chain
12
+ * `stakerPositionIds` enumeration) plus any `includeIds` the caller knows
13
+ * about, typically positions closed by split, merge, or move that an indexer
14
+ * reported; those keep their earned rewards but leave the enumeration.
15
+ */
16
+ export declare function previewPoolRewards(pools: PoolReader, rewards: PoolRewards, address: string, positionId?: number, options?: {
17
+ includeIds?: number[];
18
+ }): Promise<{
19
+ id: number;
20
+ agentId: number;
21
+ amount: bigint;
22
+ closedAtEpoch: number;
23
+ }[]>;
24
+ export declare function claimPoolRewards(pools: PoolReader, rewards: PoolRewards, wallet: RewardSigner, address: string, recipient: string, record: RewardTransactionRecorder, preparing: () => void, positionId?: number, options?: {
25
+ includeIds?: number[];
26
+ }): Promise<void>;
27
+ export {};
28
+ //# sourceMappingURL=reward-claims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reward-claims.d.ts","sourceRoot":"","sources":["../../src/payments/reward-claims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAErF,MAAM,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtG,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,EAClD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,EAC5C,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC/C,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EACzC,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,KAAK,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,gBAAgB,GAAG,UAAU,GAAG,cAAc,CAAC,CAAC;AACnH,KAAK,WAAW,GAAG,IAAI,CAAC,wBAAwB,EAC9C,sBAAsB,GAAG,4BAA4B,GAAG,0BAA0B,GAClF,mBAAmB,GAAG,kBAAkB,GAAG,yBAAyB,CAAC,CAAC;AACxE,KAAK,YAAY,GAAG,UAAU,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvF;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO;;;;;KAS9J;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,yBAAyB,EACjC,SAAS,EAAE,MAAM,IAAI,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACtC,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -0,0 +1,67 @@
1
+ export async function pendingEpochRewards(epochs, readPending) {
2
+ let amount = 0n;
3
+ for (let offset = 0; offset < epochs.length; offset += 32) {
4
+ amount += await readPending(epochs.slice(offset, offset + 32));
5
+ }
6
+ return amount;
7
+ }
8
+ export async function claimEpochRewards(epochs, readPending, claim, record) {
9
+ for (let offset = 0; offset < epochs.length; offset += 32) {
10
+ const batch = epochs.slice(offset, offset + 32);
11
+ if (await readPending(batch) > 0n)
12
+ await record(await claim(batch), 'claim');
13
+ }
14
+ }
15
+ export async function claimBuyerEpochRewards(epochs, readPending, claim, record) {
16
+ for (const epoch of epochs) {
17
+ if (await readPending(epoch) > 0n)
18
+ await record(await claim(epoch), 'claim');
19
+ }
20
+ }
21
+ /**
22
+ * Pending staker rewards for the wallet's open positions (the on-chain
23
+ * `stakerPositionIds` enumeration) plus any `includeIds` the caller knows
24
+ * about, typically positions closed by split, merge, or move that an indexer
25
+ * reported; those keep their earned rewards but leave the enumeration.
26
+ */
27
+ export async function previewPoolRewards(pools, rewards, address, positionId, options = {}) {
28
+ const positions = positionId === undefined
29
+ ? await pools.positionsBatch([...new Set([...await pools.allStakerPositionIds(address), ...(options.includeIds ?? [])])])
30
+ : [await pools.position(positionId)];
31
+ for (const position of positions) {
32
+ if (position.owner.toLowerCase() !== address.toLowerCase())
33
+ throw new Error(`Position ${position.id} is not owned by this wallet.`);
34
+ }
35
+ const amounts = await rewards.previewStakerRewards(positions.map((position) => position.id));
36
+ return positions.map((position, index) => ({ id: position.id, agentId: position.agentId, amount: amounts[index], closedAtEpoch: position.closedAtEpoch }));
37
+ }
38
+ export async function claimPoolRewards(pools, rewards, wallet, address, recipient, record, preparing, positionId, options = {}) {
39
+ const pending = await previewPoolRewards(pools, rewards, address, positionId, options);
40
+ const rewardedPositions = pending.filter((position) => position.amount > 0n);
41
+ if (rewardedPositions.length === 0)
42
+ return;
43
+ const currentEpoch = await pools.currentEpoch();
44
+ for (const agentId of new Set(rewardedPositions.map((position) => position.agentId))) {
45
+ const targetEpoch = rewardedPositions.filter((position) => position.agentId === agentId)
46
+ .reduce((latest, position) => Math.max(latest, Math.min(currentEpoch, position.closedAtEpoch || currentEpoch)), 0);
47
+ let cursor = await rewards.poolRewardIndexNextEpoch(agentId) || await rewards.initialIndexEpoch();
48
+ if (cursor < targetEpoch)
49
+ preparing();
50
+ while (cursor < targetEpoch) {
51
+ await record(await rewards.indexPoolRewards(wallet, agentId, Math.min(16, targetEpoch - cursor)), 'accounting');
52
+ const next = await rewards.poolRewardIndexNextEpoch(agentId);
53
+ if (next <= cursor)
54
+ throw new Error('Reward preparation made no progress. Retry the claim later.');
55
+ cursor = next;
56
+ }
57
+ }
58
+ const ids = [];
59
+ for (const position of rewardedPositions) {
60
+ if (await rewards.pendingIndexedStakerReward(position.id) > 0n)
61
+ ids.push(position.id);
62
+ }
63
+ for (let offset = 0; offset < ids.length; offset += 32) {
64
+ await record(await rewards.claimStakerRewardsBatch(wallet, ids.slice(offset, offset + 32), recipient), 'claim');
65
+ }
66
+ }
67
+ //# sourceMappingURL=reward-claims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reward-claims.js","sourceRoot":"","sources":["../../src/payments/reward-claims.ts"],"names":[],"mappings":"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"}