zerc20-client-sdk 0.1.6 → 0.1.8
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.
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HubEntry, TokenEntry } from "../registry/tokens.js";
|
|
2
|
-
import { AggregationTreeState, BurnArtifacts, EventsWithEligibility, GlobalTeleportProofWithEvent, LocalTeleportProof } from "../types.js";
|
|
2
|
+
import { AggregationTreeState, BurnArtifacts, EventsWithEligibility, GlobalTeleportProofWithEvent, LocalTeleportProof, SeparatedChainEvents } from "../types.js";
|
|
3
|
+
export declare function clearAggregationStateCache(): void;
|
|
3
4
|
export interface RedeemChainContext {
|
|
4
5
|
chainId: bigint;
|
|
5
6
|
token: TokenEntry;
|
|
@@ -40,6 +41,27 @@ export interface RedeemContextParams {
|
|
|
40
41
|
indexerFetchLimit?: number;
|
|
41
42
|
eventBlockSpan?: bigint | number;
|
|
42
43
|
}
|
|
44
|
+
export interface AnnouncementStatus {
|
|
45
|
+
token: TokenEntry;
|
|
46
|
+
aggregationState: AggregationTreeState;
|
|
47
|
+
events: EventsWithEligibility;
|
|
48
|
+
chains: SeparatedChainEvents[];
|
|
49
|
+
totalEligibleValue: bigint;
|
|
50
|
+
totalPendingValue: bigint;
|
|
51
|
+
totalIndexedValue: bigint;
|
|
52
|
+
totalTeleported: bigint;
|
|
53
|
+
}
|
|
54
|
+
export interface AnnouncementStatusParams {
|
|
55
|
+
burn: BurnArtifacts;
|
|
56
|
+
tokens: readonly TokenEntry[];
|
|
57
|
+
hub: HubEntry;
|
|
58
|
+
verifierContract: VerifierContractLike;
|
|
59
|
+
indexerUrl: string;
|
|
60
|
+
indexerFetchLimit?: number;
|
|
61
|
+
eventBlockSpan?: bigint | number;
|
|
62
|
+
cacheTtlMs?: number;
|
|
63
|
+
}
|
|
43
64
|
export declare function collectRedeemContext(params: RedeemContextParams): Promise<RedeemContext>;
|
|
65
|
+
export declare function getAnnouncementStatus(params: AnnouncementStatusParams): Promise<AnnouncementStatus>;
|
|
44
66
|
export {};
|
|
45
67
|
//# sourceMappingURL=receive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../src/operations/receive.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,4BAA4B,EAC5B,kBAAkB,
|
|
1
|
+
{"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../src/operations/receive.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,29 @@ import { findTokenByChain } from "../registry/tokens.js";
|
|
|
3
3
|
import { normalizeHex } from "../utils/hex.js";
|
|
4
4
|
import { fetchAggregationTreeState, fetchLocalTeleportMerkleProofs as fetchLocalTeleportProofs, fetchTransferEvents, generateGlobalTeleportMerkleProofs as generateGlobalTeleportProofs, separateEventsByEligibility, } from "../wasm/index.js";
|
|
5
5
|
import { getTreeIndexForChain } from "./teleport.js";
|
|
6
|
+
const aggregationStateCache = new Map();
|
|
7
|
+
function getCacheKey(hubAddress, chainId) {
|
|
8
|
+
return `${hubAddress.toLowerCase()}-${chainId}`;
|
|
9
|
+
}
|
|
10
|
+
async function fetchAggregationTreeStateWithCache(params) {
|
|
11
|
+
const cacheTtl = params.cacheTtlMs;
|
|
12
|
+
const cacheKey = getCacheKey(params.hub.hubAddress, params.token.chainId);
|
|
13
|
+
const cached = aggregationStateCache.get(cacheKey);
|
|
14
|
+
const now = Date.now();
|
|
15
|
+
if (cacheTtl != null && cached && now - cached.timestamp < cacheTtl) {
|
|
16
|
+
return cached.state;
|
|
17
|
+
}
|
|
18
|
+
const state = await fetchAggregationTreeState(params);
|
|
19
|
+
aggregationStateCache.set(cacheKey, {
|
|
20
|
+
state,
|
|
21
|
+
timestamp: now,
|
|
22
|
+
chainId: params.token.chainId,
|
|
23
|
+
});
|
|
24
|
+
return state;
|
|
25
|
+
}
|
|
26
|
+
export function clearAggregationStateCache() {
|
|
27
|
+
aggregationStateCache.clear();
|
|
28
|
+
}
|
|
6
29
|
export async function collectRedeemContext(params) {
|
|
7
30
|
const primaryChainId = params.burn.generalRecipient.chainId;
|
|
8
31
|
const primaryToken = findTokenByChain(params.tokens, primaryChainId);
|
|
@@ -93,6 +116,50 @@ export async function collectRedeemContext(params) {
|
|
|
93
116
|
function isViemVerifierContract(contract) {
|
|
94
117
|
return typeof contract.read?.totalTeleported === "function";
|
|
95
118
|
}
|
|
119
|
+
export async function getAnnouncementStatus(params) {
|
|
120
|
+
const primaryChainId = params.burn.generalRecipient.chainId;
|
|
121
|
+
const primaryToken = findTokenByChain(params.tokens, primaryChainId);
|
|
122
|
+
// Use cached aggregation state for display
|
|
123
|
+
const aggregationState = await fetchAggregationTreeStateWithCache({
|
|
124
|
+
hub: params.hub,
|
|
125
|
+
token: primaryToken,
|
|
126
|
+
eventBlockSpan: params.eventBlockSpan,
|
|
127
|
+
cacheTtlMs: params.cacheTtlMs,
|
|
128
|
+
});
|
|
129
|
+
const chainEvents = await fetchTransferEvents({
|
|
130
|
+
indexerUrl: params.indexerUrl,
|
|
131
|
+
tokens: params.tokens,
|
|
132
|
+
burnAddresses: [params.burn.burnAddress],
|
|
133
|
+
indexerFetchLimit: params.indexerFetchLimit ?? DEFAULT_INDEXER_FETCH_LIMIT,
|
|
134
|
+
});
|
|
135
|
+
const separatedChains = await separateEventsByEligibility({
|
|
136
|
+
aggregationState,
|
|
137
|
+
events: chainEvents,
|
|
138
|
+
});
|
|
139
|
+
// Combine all events from all chains
|
|
140
|
+
const combinedEvents = { eligible: [], ineligible: [] };
|
|
141
|
+
for (const entry of separatedChains) {
|
|
142
|
+
combinedEvents.eligible.push(...entry.events.eligible);
|
|
143
|
+
combinedEvents.ineligible.push(...entry.events.ineligible);
|
|
144
|
+
}
|
|
145
|
+
// Calculate totals
|
|
146
|
+
const totalEligibleValue = combinedEvents.eligible.reduce((acc, event) => acc + event.value, 0n);
|
|
147
|
+
const totalPendingValue = combinedEvents.ineligible.reduce((acc, event) => acc + event.value, 0n);
|
|
148
|
+
const totalIndexedValue = totalEligibleValue + totalPendingValue;
|
|
149
|
+
// Get total teleported amount
|
|
150
|
+
const recipientFr = normalizeHex(params.burn.generalRecipient.fr);
|
|
151
|
+
const totalTeleported = await readTotalTeleported(params.verifierContract, recipientFr);
|
|
152
|
+
return {
|
|
153
|
+
token: primaryToken,
|
|
154
|
+
aggregationState,
|
|
155
|
+
events: combinedEvents,
|
|
156
|
+
chains: separatedChains,
|
|
157
|
+
totalEligibleValue,
|
|
158
|
+
totalPendingValue,
|
|
159
|
+
totalIndexedValue,
|
|
160
|
+
totalTeleported,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
96
163
|
async function readTotalTeleported(contract, recipientFr) {
|
|
97
164
|
if (isViemVerifierContract(contract)) {
|
|
98
165
|
const value = await contract.read.totalTeleported([recipientFr]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receive.js","sourceRoot":"","sources":["../../src/operations/receive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAwB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"receive.js","sourceRoot":"","sources":["../../src/operations/receive.ts"],"names":[],"mappings":"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"}
|