@eva-protocol/sdk 0.0.1-beta.0
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/dist/src/config/index.d.ts +3 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +3 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/networks.d.ts +10 -0
- package/dist/src/config/networks.d.ts.map +1 -0
- package/dist/src/config/networks.js +64 -0
- package/dist/src/config/networks.js.map +1 -0
- package/dist/src/core/client.d.ts +107 -0
- package/dist/src/core/client.d.ts.map +1 -0
- package/dist/src/core/client.js +595 -0
- package/dist/src/core/client.js.map +1 -0
- package/dist/src/core/index.d.ts +2 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +2 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/modules/capital_pool.d.ts +12 -0
- package/dist/src/modules/capital_pool.d.ts.map +1 -0
- package/dist/src/modules/capital_pool.js +60 -0
- package/dist/src/modules/capital_pool.js.map +1 -0
- package/dist/src/modules/claims.d.ts +7 -0
- package/dist/src/modules/claims.d.ts.map +1 -0
- package/dist/src/modules/claims.js +76 -0
- package/dist/src/modules/claims.js.map +1 -0
- package/dist/src/modules/claims_query.d.ts +26 -0
- package/dist/src/modules/claims_query.d.ts.map +1 -0
- package/dist/src/modules/claims_query.js +109 -0
- package/dist/src/modules/claims_query.js.map +1 -0
- package/dist/src/modules/cover.d.ts +8 -0
- package/dist/src/modules/cover.d.ts.map +1 -0
- package/dist/src/modules/cover.js +66 -0
- package/dist/src/modules/cover.js.map +1 -0
- package/dist/src/modules/index.d.ts +8 -0
- package/dist/src/modules/index.d.ts.map +1 -0
- package/dist/src/modules/index.js +8 -0
- package/dist/src/modules/index.js.map +1 -0
- package/dist/src/modules/seal.d.ts +18 -0
- package/dist/src/modules/seal.d.ts.map +1 -0
- package/dist/src/modules/seal.js +110 -0
- package/dist/src/modules/seal.js.map +1 -0
- package/dist/src/modules/staking_pool.d.ts +6 -0
- package/dist/src/modules/staking_pool.d.ts.map +1 -0
- package/dist/src/modules/staking_pool.js +50 -0
- package/dist/src/modules/staking_pool.js.map +1 -0
- package/dist/src/modules/staking_query.d.ts +36 -0
- package/dist/src/modules/staking_query.d.ts.map +1 -0
- package/dist/src/modules/staking_query.js +41 -0
- package/dist/src/modules/staking_query.js.map +1 -0
- package/dist/src/modules/walrus.d.ts +42 -0
- package/dist/src/modules/walrus.d.ts.map +1 -0
- package/dist/src/modules/walrus.js +77 -0
- package/dist/src/modules/walrus.js.map +1 -0
- package/dist/src/types/capital_pool.d.ts +14 -0
- package/dist/src/types/capital_pool.d.ts.map +1 -0
- package/dist/src/types/capital_pool.js +2 -0
- package/dist/src/types/capital_pool.js.map +1 -0
- package/dist/src/types/claims.d.ts +52 -0
- package/dist/src/types/claims.d.ts.map +1 -0
- package/dist/src/types/claims.js +8 -0
- package/dist/src/types/claims.js.map +1 -0
- package/dist/src/types/client.d.ts +13 -0
- package/dist/src/types/client.d.ts.map +1 -0
- package/dist/src/types/client.js +2 -0
- package/dist/src/types/client.js.map +1 -0
- package/dist/src/types/cover.d.ts +17 -0
- package/dist/src/types/cover.d.ts.map +1 -0
- package/dist/src/types/cover.js +2 -0
- package/dist/src/types/cover.js.map +1 -0
- package/dist/src/types/index.d.ts +8 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +8 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/network.d.ts +43 -0
- package/dist/src/types/network.d.ts.map +1 -0
- package/dist/src/types/network.js +2 -0
- package/dist/src/types/network.js.map +1 -0
- package/dist/src/types/seal.d.ts +39 -0
- package/dist/src/types/seal.d.ts.map +1 -0
- package/dist/src/types/seal.js +2 -0
- package/dist/src/types/seal.js.map +1 -0
- package/dist/src/types/staking.d.ts +22 -0
- package/dist/src/types/staking.d.ts.map +1 -0
- package/dist/src/types/staking.js +2 -0
- package/dist/src/types/staking.js.map +1 -0
- package/dist/src/types/walrus.d.ts +12 -0
- package/dist/src/types/walrus.d.ts.map +1 -0
- package/dist/src/types/walrus.js +2 -0
- package/dist/src/types/walrus.js.map +1 -0
- package/dist/src/utils/evidence.d.ts +56 -0
- package/dist/src/utils/evidence.d.ts.map +1 -0
- package/dist/src/utils/evidence.js +114 -0
- package/dist/src/utils/evidence.js.map +1 -0
- package/dist/src/utils/index.d.ts +5 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +5 -0
- package/dist/src/utils/index.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,595 @@
|
|
|
1
|
+
import { SuiGrpcClient } from '@mysten/sui/grpc';
|
|
2
|
+
import { bcs } from '@mysten/sui/bcs';
|
|
3
|
+
import { getNetworkConfig, USDE_TYPE } from '../config/networks';
|
|
4
|
+
import { populateDeposit, populateRedeem, populateWithdrawTreasury, buildTreasuryBalanceTx, } from '../modules/capital_pool';
|
|
5
|
+
import { populateBuyCover, getPremiumWithFee as getPremiumWithFeeMoveCall } from '../modules/cover';
|
|
6
|
+
import { populateCreateProof, populateStake, populateUnstake, } from '../modules/staking_pool';
|
|
7
|
+
import { populateSubmitClaim, populateCastVote, populateRedeemClaimPayout, populateRetrieveDeposit, } from '../modules/claims';
|
|
8
|
+
import { encryptEvidence as sealEncryptEvidence, decryptEvidence as sealDecryptEvidence, } from '../modules/seal';
|
|
9
|
+
import { createWalrusClient, uploadToWalrus, suiObjectIdToWalrusBlobId } from '../modules/walrus';
|
|
10
|
+
import { buildGetClaimTx, buildGetAssessmentTx, buildGetClaimOutcomeTx, parseClaimFromBcs, parseAssessmentFromBcs, } from '../modules/claims_query';
|
|
11
|
+
import { buildGetProtocolStatusTx, buildGetPoolTotalEvaAndSharesTx, } from '../modules/staking_query';
|
|
12
|
+
import { coinWithBalance, Transaction } from '@mysten/sui/transactions';
|
|
13
|
+
import { CLAIM_OUTCOME } from '../types';
|
|
14
|
+
const getNetworkUrl = (network) => {
|
|
15
|
+
return network === 'testnet'
|
|
16
|
+
? 'https://fullnode.testnet.sui.io:443'
|
|
17
|
+
: 'https://fullnode.mainnet.sui.io:443';
|
|
18
|
+
};
|
|
19
|
+
export class EvaClient {
|
|
20
|
+
constructor(network) {
|
|
21
|
+
this.network = network;
|
|
22
|
+
this.config = getNetworkConfig(network);
|
|
23
|
+
this.client = new SuiGrpcClient({
|
|
24
|
+
network,
|
|
25
|
+
baseUrl: getNetworkUrl(network),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async deposit(tx, deposited_amount, signer) {
|
|
29
|
+
const coin = coinWithBalance({ type: USDE_TYPE, balance: deposited_amount });
|
|
30
|
+
const { eva_coin } = populateDeposit(tx, this.config, {
|
|
31
|
+
coin,
|
|
32
|
+
});
|
|
33
|
+
return { eva_coin };
|
|
34
|
+
}
|
|
35
|
+
async redeem(tx, eva_amount, signer) {
|
|
36
|
+
const evaCoinType = this.config.types.eva;
|
|
37
|
+
const { usde_coin } = populateRedeem(tx, this.config, {
|
|
38
|
+
coin: coinWithBalance({ type: evaCoinType, balance: eva_amount }),
|
|
39
|
+
});
|
|
40
|
+
return { usde_coin };
|
|
41
|
+
}
|
|
42
|
+
createProof(tx, protocolName) {
|
|
43
|
+
return populateCreateProof(tx, this.config, { protocolName });
|
|
44
|
+
}
|
|
45
|
+
stake(tx, proof, evaAmount) {
|
|
46
|
+
const coin = coinWithBalance({ type: this.config.types.eva, balance: evaAmount });
|
|
47
|
+
populateStake(tx, this.config, { proof, coin });
|
|
48
|
+
}
|
|
49
|
+
unstake(tx, proof, trancheId, sharesToBurn) {
|
|
50
|
+
return populateUnstake(tx, this.config, {
|
|
51
|
+
proof,
|
|
52
|
+
trancheId,
|
|
53
|
+
sharesToBurn,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
async buyCover(tx, protocolName, coverAmount, durationDays, paymentAmount) {
|
|
57
|
+
const coin = coinWithBalance({ type: USDE_TYPE, balance: paymentAmount });
|
|
58
|
+
const { receipt, change_coin } = populateBuyCover(tx, this.config, {
|
|
59
|
+
protocolName,
|
|
60
|
+
coverAmount,
|
|
61
|
+
durationDays,
|
|
62
|
+
coin,
|
|
63
|
+
});
|
|
64
|
+
return { receipt, change_coin };
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Query total payment amount (premium + protocol fee) in USDE minimal units for given cover params.
|
|
68
|
+
* Uses cover::get_premium_with_fee on-chain; return value is decoded from the first command's BCS (u64).
|
|
69
|
+
*/
|
|
70
|
+
async getPremium(protocolName, coverAmount, durationDays, sender) {
|
|
71
|
+
const tx = new Transaction();
|
|
72
|
+
tx.setSenderIfNotSet(sender ?? '0x0');
|
|
73
|
+
getPremiumWithFeeMoveCall(tx, this.config, {
|
|
74
|
+
protocolName,
|
|
75
|
+
coverAmount,
|
|
76
|
+
durationDays,
|
|
77
|
+
});
|
|
78
|
+
const result = await this.client.simulateTransaction({
|
|
79
|
+
transaction: tx,
|
|
80
|
+
include: { commandResults: true },
|
|
81
|
+
});
|
|
82
|
+
if (result.$kind === 'FailedTransaction') {
|
|
83
|
+
const err = result.FailedTransaction?.status?.error;
|
|
84
|
+
throw new Error(err ? String(err) : 'get_premium simulation failed');
|
|
85
|
+
}
|
|
86
|
+
const commandResults = result.commandResults;
|
|
87
|
+
if (!commandResults?.length || !commandResults[0].returnValues?.length) {
|
|
88
|
+
throw new Error('get_premium: no return value in commandResults');
|
|
89
|
+
}
|
|
90
|
+
const bcsBytes = commandResults[0].returnValues[0].bcs;
|
|
91
|
+
if (!bcsBytes || bcsBytes.length === 0) {
|
|
92
|
+
throw new Error('get_premium: empty BCS return value');
|
|
93
|
+
}
|
|
94
|
+
const value = bcs.U64.parse(bcsBytes);
|
|
95
|
+
return typeof value === 'bigint' ? value : BigInt(value);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Admin withdraw from protocol treasury. Adds withdraw_treasury moveCall to tx.
|
|
99
|
+
* USDE is transferred to tx sender. Requires AdminCap owned by signer.
|
|
100
|
+
*/
|
|
101
|
+
withdrawTreasury(tx, amount, adminCapId) {
|
|
102
|
+
populateWithdrawTreasury(tx, this.config, { adminCapId, amount });
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Query protocol treasury balance in USDE minimal units (MIST).
|
|
106
|
+
*/
|
|
107
|
+
async getTreasuryBalance(sender) {
|
|
108
|
+
const tx = new Transaction();
|
|
109
|
+
tx.setSenderIfNotSet(sender ?? '0x0');
|
|
110
|
+
buildTreasuryBalanceTx(tx, this.config);
|
|
111
|
+
const result = await this.client.simulateTransaction({
|
|
112
|
+
transaction: tx,
|
|
113
|
+
include: { commandResults: true },
|
|
114
|
+
});
|
|
115
|
+
if (result.$kind === 'FailedTransaction') {
|
|
116
|
+
const err = result.FailedTransaction?.status?.error;
|
|
117
|
+
throw new Error(err ? String(err) : 'treasury_balance simulation failed');
|
|
118
|
+
}
|
|
119
|
+
const commandResults = result.commandResults;
|
|
120
|
+
if (!commandResults?.length || !commandResults[0].returnValues?.length) {
|
|
121
|
+
throw new Error('treasury_balance: no return value');
|
|
122
|
+
}
|
|
123
|
+
const bcsBytes = commandResults[0].returnValues[0].bcs;
|
|
124
|
+
if (!bcsBytes || bcsBytes.length === 0) {
|
|
125
|
+
throw new Error('treasury_balance: empty BCS return value');
|
|
126
|
+
}
|
|
127
|
+
const value = bcs.U64.parse(bcsBytes);
|
|
128
|
+
return typeof value === 'bigint' ? value : BigInt(value);
|
|
129
|
+
}
|
|
130
|
+
// --- Staking queries: proofs, pools, balances ---
|
|
131
|
+
/** List user's StakeProof objects with protocol name and share amount. */
|
|
132
|
+
async getStakeProofs(owner) {
|
|
133
|
+
// Query both package IDs: proofs can be created by original or upgraded package
|
|
134
|
+
const protocol = this.config.packageIds.protocol;
|
|
135
|
+
const protocolOriginal = this.config.packageIds.protocolOriginal;
|
|
136
|
+
const pkgs = [...new Set([protocolOriginal, protocol].filter(Boolean))];
|
|
137
|
+
const objects = [];
|
|
138
|
+
for (const pkg of pkgs) {
|
|
139
|
+
const proofType = `${pkg}::staking_pool::StakeProof`;
|
|
140
|
+
const res = await this.client.listOwnedObjects({
|
|
141
|
+
owner,
|
|
142
|
+
type: proofType,
|
|
143
|
+
include: { content: true, objectBcs: true, json: true },
|
|
144
|
+
});
|
|
145
|
+
objects.push(...res.objects);
|
|
146
|
+
}
|
|
147
|
+
// Fallback: if no type filter found any, try without type (find any StakeProof)
|
|
148
|
+
if (objects.length === 0 && (protocol || protocolOriginal)) {
|
|
149
|
+
const all = await this.client.listOwnedObjects({
|
|
150
|
+
owner,
|
|
151
|
+
include: { content: true, objectBcs: true, json: true },
|
|
152
|
+
limit: 100,
|
|
153
|
+
});
|
|
154
|
+
for (const obj of all.objects) {
|
|
155
|
+
const t = obj.type ?? '';
|
|
156
|
+
if (t.includes('::staking_pool::StakeProof')) {
|
|
157
|
+
objects.push(obj);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const results = [];
|
|
162
|
+
for (const obj of objects) {
|
|
163
|
+
const objectId = obj.objectId;
|
|
164
|
+
if (!objectId)
|
|
165
|
+
continue;
|
|
166
|
+
let protocolName = '';
|
|
167
|
+
let shareAmount = 0n;
|
|
168
|
+
const rawContent = obj.content;
|
|
169
|
+
const rawJson = obj.json;
|
|
170
|
+
const content = (rawJson ?? rawContent);
|
|
171
|
+
const contentObj = content && typeof content === 'object' && !(content instanceof Uint8Array) ? content : undefined;
|
|
172
|
+
if (contentObj) {
|
|
173
|
+
const pid = contentObj.protocol_id;
|
|
174
|
+
if (Array.isArray(pid)) {
|
|
175
|
+
protocolName = new TextDecoder().decode(new Uint8Array(pid));
|
|
176
|
+
}
|
|
177
|
+
else if (pid && typeof pid === 'object' && 'bytes' in pid) {
|
|
178
|
+
protocolName = new TextDecoder().decode(new Uint8Array(pid.bytes));
|
|
179
|
+
}
|
|
180
|
+
else if (typeof pid === 'string') {
|
|
181
|
+
try {
|
|
182
|
+
const bytes = new Uint8Array([...atob(pid)].map((c) => c.charCodeAt(0)));
|
|
183
|
+
protocolName = new TextDecoder().decode(bytes);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
protocolName = pid;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (contentObj.total_shares !== undefined) {
|
|
190
|
+
shareAmount = BigInt(String(contentObj.total_shares));
|
|
191
|
+
}
|
|
192
|
+
else if (contentObj.share_amount !== undefined) {
|
|
193
|
+
shareAmount = BigInt(String(contentObj.share_amount));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (!protocolName) {
|
|
197
|
+
const bcsVal = obj.objectBcs ?? obj.bcs;
|
|
198
|
+
const bcsBytes = bcsVal instanceof Uint8Array ? bcsVal : Array.isArray(bcsVal) ? new Uint8Array(bcsVal) : null;
|
|
199
|
+
if (bcsBytes && bcsBytes.length >= 40) {
|
|
200
|
+
let off = 32;
|
|
201
|
+
let len = 0;
|
|
202
|
+
let shift = 0;
|
|
203
|
+
while (off < bcsBytes.length) {
|
|
204
|
+
const b = bcsBytes[off++];
|
|
205
|
+
len |= (b & 0x7f) << shift;
|
|
206
|
+
if (b < 0x80)
|
|
207
|
+
break;
|
|
208
|
+
shift += 7;
|
|
209
|
+
}
|
|
210
|
+
if (off + len + 8 <= bcsBytes.length) {
|
|
211
|
+
protocolName = new TextDecoder().decode(bcsBytes.slice(off, off + len));
|
|
212
|
+
shareAmount = BigInt(new DataView(bcsBytes.buffer, bcsBytes.byteOffset + off + len, 8).getBigUint64(0, true));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
results.push({ objectId, protocolName, shareAmount });
|
|
217
|
+
}
|
|
218
|
+
// Merge multiple proofs for same protocol: sum shareAmount, keep objectId of proof with most shares for stake/unstake
|
|
219
|
+
const byProtocol = new Map();
|
|
220
|
+
for (const r of results) {
|
|
221
|
+
if (!r.protocolName)
|
|
222
|
+
continue;
|
|
223
|
+
const existing = byProtocol.get(r.protocolName);
|
|
224
|
+
if (!existing) {
|
|
225
|
+
byProtocol.set(r.protocolName, { objectId: r.objectId, shareAmount: r.shareAmount, maxProofAmount: r.shareAmount });
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
const newTotal = existing.shareAmount + r.shareAmount;
|
|
229
|
+
const useR = r.shareAmount > existing.maxProofAmount;
|
|
230
|
+
byProtocol.set(r.protocolName, {
|
|
231
|
+
objectId: useR ? r.objectId : existing.objectId,
|
|
232
|
+
shareAmount: newTotal,
|
|
233
|
+
maxProofAmount: useR ? r.shareAmount : existing.maxProofAmount,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
const proofs = [...byProtocol.entries()].map(([protocolName, { objectId, shareAmount }]) => ({
|
|
238
|
+
objectId,
|
|
239
|
+
protocolName,
|
|
240
|
+
shareAmount,
|
|
241
|
+
trancheDeposits: [],
|
|
242
|
+
}));
|
|
243
|
+
for (const p of proofs) {
|
|
244
|
+
try {
|
|
245
|
+
const deposits = await this.getProofTrancheDeposits(p.objectId);
|
|
246
|
+
if (deposits.length > 0)
|
|
247
|
+
p.trancheDeposits = deposits;
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// Ignore
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return proofs;
|
|
254
|
+
}
|
|
255
|
+
/** Get tranche deposits for a proof (tranche_id -> shares). Uses RPC sui_getDynamicFields. Returns empty if unavailable. */
|
|
256
|
+
async getProofTrancheDeposits(proofId) {
|
|
257
|
+
try {
|
|
258
|
+
const res = await this.client.getObject({ objectId: proofId });
|
|
259
|
+
const obj = 'object' in res ? res.object : null;
|
|
260
|
+
if (obj instanceof Error || !obj)
|
|
261
|
+
return [];
|
|
262
|
+
const content = obj.content;
|
|
263
|
+
if (!content || content.dataType !== 'moveObject' || !content.fields)
|
|
264
|
+
return [];
|
|
265
|
+
const tableRef = content.fields.tranche_deposits;
|
|
266
|
+
const tableId = tableRef?.id;
|
|
267
|
+
if (!tableId || typeof tableId !== 'string')
|
|
268
|
+
return [];
|
|
269
|
+
const baseUrl = this.network === 'testnet' ? 'https://fullnode.testnet.sui.io' : 'https://fullnode.mainnet.sui.io';
|
|
270
|
+
const deposits = [];
|
|
271
|
+
let cursor = null;
|
|
272
|
+
do {
|
|
273
|
+
const body = { jsonrpc: '2.0', id: 1, method: 'suix_getDynamicFields', params: [tableId, cursor, 100] };
|
|
274
|
+
const res = await fetch(baseUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) });
|
|
275
|
+
const json = (await res.json());
|
|
276
|
+
const data = json.result?.data ?? [];
|
|
277
|
+
for (const field of data) {
|
|
278
|
+
const nameB64 = typeof field.name === 'string' ? field.name : field.name?.bcs;
|
|
279
|
+
if (!nameB64 || !field.objectId)
|
|
280
|
+
continue;
|
|
281
|
+
const nameBytes = new Uint8Array(Uint8Array.from(atob(nameB64), (c) => c.charCodeAt(0)));
|
|
282
|
+
const valueRes = await fetch(baseUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'sui_getObject', params: [field.objectId, { showContent: true, showBcs: true }] }) });
|
|
283
|
+
const valueJson = (await valueRes.json());
|
|
284
|
+
const valueB64 = valueJson.result?.data?.bcs;
|
|
285
|
+
if (nameBytes.length >= 8 && valueB64) {
|
|
286
|
+
const valueBytes = new Uint8Array(Uint8Array.from(atob(valueB64), (c) => c.charCodeAt(0)));
|
|
287
|
+
if (valueBytes.length >= 8) {
|
|
288
|
+
const tid = BigInt(new DataView(nameBytes.buffer, 0, 8).getBigUint64(0, true));
|
|
289
|
+
const sh = BigInt(new DataView(valueBytes.buffer, 0, 8).getBigUint64(0, true));
|
|
290
|
+
deposits.push({ trancheId: tid, shares: sh });
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
cursor = json.result?.nextCursor ?? null;
|
|
295
|
+
} while (cursor);
|
|
296
|
+
return deposits.sort((a, b) => (a.trancheId < b.trancheId ? -1 : 1));
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
return [];
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/** First active tranche id (tranches with id < this are expired and withdrawable). */
|
|
303
|
+
getFirstActiveTrancheId() {
|
|
304
|
+
const TRANCHE_DURATION_MS = 91 * 24 * 3600 * 1000;
|
|
305
|
+
return BigInt(Math.floor(Date.now() / TRANCHE_DURATION_MS));
|
|
306
|
+
}
|
|
307
|
+
/** Get list of protocol names from config (fallback when chain query fails). */
|
|
308
|
+
getProtocols() {
|
|
309
|
+
return this.config.knownProtocols ?? [];
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Get protocol names by iterating StakingRegistry.pools Table dynamic fields.
|
|
313
|
+
* Each Table key is protocol_id (vector<u8>); decode to string.
|
|
314
|
+
*/
|
|
315
|
+
async getProtocolsFromChain() {
|
|
316
|
+
const registryId = this.config.objectIds.stakingRegistry;
|
|
317
|
+
const { objects } = await this.client.getObjects({
|
|
318
|
+
objectIds: [registryId],
|
|
319
|
+
include: { json: true },
|
|
320
|
+
});
|
|
321
|
+
const obj = objects[0];
|
|
322
|
+
if (obj instanceof Error || !obj?.json)
|
|
323
|
+
return this.getProtocols();
|
|
324
|
+
const pools = obj.json.pools;
|
|
325
|
+
const tableId = pools?.id;
|
|
326
|
+
if (!tableId || typeof tableId !== 'string')
|
|
327
|
+
return this.getProtocols();
|
|
328
|
+
const protocolNames = [];
|
|
329
|
+
let cursor = null;
|
|
330
|
+
do {
|
|
331
|
+
const { dynamicFields, hasNextPage, cursor: nextCursor } = await this.client.listDynamicFields({
|
|
332
|
+
parentId: tableId,
|
|
333
|
+
cursor,
|
|
334
|
+
limit: 50,
|
|
335
|
+
});
|
|
336
|
+
for (const field of dynamicFields) {
|
|
337
|
+
const bcsBytes = field.name?.bcs;
|
|
338
|
+
if (bcsBytes && bcsBytes.length > 0) {
|
|
339
|
+
const bytes = bcsBytes instanceof Uint8Array ? bcsBytes : new Uint8Array(bcsBytes);
|
|
340
|
+
let off = 0;
|
|
341
|
+
let len = 0;
|
|
342
|
+
let shift = 0;
|
|
343
|
+
while (off < bytes.length) {
|
|
344
|
+
const b = bytes[off++];
|
|
345
|
+
len |= (b & 0x7f) << shift;
|
|
346
|
+
if (b < 0x80)
|
|
347
|
+
break;
|
|
348
|
+
shift += 7;
|
|
349
|
+
}
|
|
350
|
+
if (off + len <= bytes.length) {
|
|
351
|
+
const protocolName = new TextDecoder().decode(bytes.slice(off, off + len));
|
|
352
|
+
if (protocolName)
|
|
353
|
+
protocolNames.push(protocolName);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
cursor = hasNextPage ? nextCursor : null;
|
|
358
|
+
} while (cursor);
|
|
359
|
+
return protocolNames.length > 0 ? protocolNames : this.getProtocols();
|
|
360
|
+
}
|
|
361
|
+
/** Get pool info for a protocol: covered amount, total staked, total shares, capacity. */
|
|
362
|
+
async getPoolInfo(protocolName, sender) {
|
|
363
|
+
const readU64 = (v) => {
|
|
364
|
+
const b = v?.bcs;
|
|
365
|
+
if (!b || b.length < 8)
|
|
366
|
+
return null;
|
|
367
|
+
const arr = b instanceof Uint8Array ? b : new Uint8Array(b);
|
|
368
|
+
return BigInt(new DataView(arr.buffer, arr.byteOffset, 8).getBigUint64(0, true));
|
|
369
|
+
};
|
|
370
|
+
const tx1 = new Transaction();
|
|
371
|
+
tx1.setSenderIfNotSet(sender ?? '0x0');
|
|
372
|
+
buildGetProtocolStatusTx(tx1, this.config, protocolName);
|
|
373
|
+
const result1 = await this.client.simulateTransaction({
|
|
374
|
+
transaction: tx1,
|
|
375
|
+
include: { commandResults: true },
|
|
376
|
+
});
|
|
377
|
+
if (result1.$kind === 'FailedTransaction')
|
|
378
|
+
return null;
|
|
379
|
+
const rvs0 = result1.commandResults?.[0]?.returnValues;
|
|
380
|
+
if (!rvs0 || rvs0.length < 4)
|
|
381
|
+
return null;
|
|
382
|
+
const coveredAmount = readU64(rvs0[0]);
|
|
383
|
+
const totalStaked = readU64(rvs0[1]);
|
|
384
|
+
const riskWeightBps = readU64(rvs0[2]);
|
|
385
|
+
const leverageFactorBps = readU64(rvs0[3]);
|
|
386
|
+
if (coveredAmount === null || totalStaked === null || riskWeightBps === null || leverageFactorBps === null)
|
|
387
|
+
return null;
|
|
388
|
+
let totalShares = 0n;
|
|
389
|
+
const tx2 = new Transaction();
|
|
390
|
+
tx2.setSenderIfNotSet(sender ?? '0x0');
|
|
391
|
+
buildGetPoolTotalEvaAndSharesTx(tx2, this.config, protocolName);
|
|
392
|
+
const result2 = await this.client.simulateTransaction({
|
|
393
|
+
transaction: tx2,
|
|
394
|
+
include: { commandResults: true },
|
|
395
|
+
});
|
|
396
|
+
if (result2.$kind !== 'FailedTransaction') {
|
|
397
|
+
const rvs1 = result2.commandResults?.[0]?.returnValues;
|
|
398
|
+
if (rvs1 && rvs1.length >= 2) {
|
|
399
|
+
totalShares = readU64(rvs1[1]) ?? 0n;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
const capacity = (totalStaked * leverageFactorBps) / 10000n;
|
|
403
|
+
return {
|
|
404
|
+
protocolName,
|
|
405
|
+
coveredAmount,
|
|
406
|
+
totalStaked,
|
|
407
|
+
totalShares,
|
|
408
|
+
riskWeightBps,
|
|
409
|
+
leverageFactorBps,
|
|
410
|
+
capacity,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
/** Get all pools info by iterating StakingRegistry.pools, then querying each protocol. */
|
|
414
|
+
async getAllPoolsInfo(sender) {
|
|
415
|
+
const protocols = await this.getProtocolsFromChain();
|
|
416
|
+
const results = [];
|
|
417
|
+
for (const name of protocols) {
|
|
418
|
+
const info = await this.getPoolInfo(name, sender);
|
|
419
|
+
if (info)
|
|
420
|
+
results.push(info);
|
|
421
|
+
}
|
|
422
|
+
return results;
|
|
423
|
+
}
|
|
424
|
+
/** Get USDE balance for owner. */
|
|
425
|
+
async getUsdeBalance(owner) {
|
|
426
|
+
const res = await this.client.getBalance({
|
|
427
|
+
owner,
|
|
428
|
+
coinType: USDE_TYPE,
|
|
429
|
+
});
|
|
430
|
+
return BigInt(res.balance?.balance ?? '0');
|
|
431
|
+
}
|
|
432
|
+
/** Get EVA balance for owner. */
|
|
433
|
+
async getEvaBalance(owner) {
|
|
434
|
+
const res = await this.client.getBalance({
|
|
435
|
+
owner,
|
|
436
|
+
coinType: this.config.types.eva,
|
|
437
|
+
});
|
|
438
|
+
return BigInt(res.balance?.balance ?? '0');
|
|
439
|
+
}
|
|
440
|
+
// --- Seal: encrypt evidence (Step 1 of submit claim) ---
|
|
441
|
+
/** Encrypt evidence (text, image, or binary). Supports: string, Uint8Array, base64, File, Blob. */
|
|
442
|
+
async encryptEvidence(data, allowlistObjectId) {
|
|
443
|
+
const allowlist = allowlistObjectId ?? this.config.objectIds.allowlist;
|
|
444
|
+
const seal = this.config.seal;
|
|
445
|
+
if (!seal)
|
|
446
|
+
throw new Error('Seal config required for encryptEvidence');
|
|
447
|
+
return sealEncryptEvidence(this.client, {
|
|
448
|
+
data,
|
|
449
|
+
allowlistObjectId: allowlist,
|
|
450
|
+
sealPackageId: seal.packageId ?? this.config.packageIds.protocol,
|
|
451
|
+
sealServerConfigs: seal.serverConfigs,
|
|
452
|
+
threshold: 2,
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
// --- Walrus: upload and read ---
|
|
456
|
+
/** Read blob from Walrus by blobId. Accepts Walrus format (base64url) or Sui Object ID (0x+hex from claim evidence). */
|
|
457
|
+
async readBlobFromWalrus(blobIdOrObjectId) {
|
|
458
|
+
const walrusConfig = this.config.walrus;
|
|
459
|
+
if (!walrusConfig)
|
|
460
|
+
throw new Error('Walrus config required for readBlobFromWalrus');
|
|
461
|
+
const walrusClient = createWalrusClient(this.client, walrusConfig.uploadRelay);
|
|
462
|
+
const blobId = blobIdOrObjectId.startsWith('0x') && blobIdOrObjectId.length === 66
|
|
463
|
+
? suiObjectIdToWalrusBlobId(blobIdOrObjectId)
|
|
464
|
+
: blobIdOrObjectId;
|
|
465
|
+
return walrusClient.walrus.readBlob({ blobId });
|
|
466
|
+
}
|
|
467
|
+
async uploadToWalrus(blob, signer, options) {
|
|
468
|
+
const walrusConfig = this.config.walrus;
|
|
469
|
+
if (!walrusConfig)
|
|
470
|
+
throw new Error('Walrus config required for uploadToWalrus');
|
|
471
|
+
const walrusClient = createWalrusClient(this.client, walrusConfig.uploadRelay);
|
|
472
|
+
return uploadToWalrus(walrusClient, { blob, ...options }, signer);
|
|
473
|
+
}
|
|
474
|
+
// --- Claims: submit (Step 3), vote, redeem, retrieve ---
|
|
475
|
+
submitClaim(tx, params) {
|
|
476
|
+
populateSubmitClaim(tx, this.config, params);
|
|
477
|
+
}
|
|
478
|
+
castVote(tx, claimId, voteAccept) {
|
|
479
|
+
populateCastVote(tx, this.config, { claimId, voteAccept });
|
|
480
|
+
}
|
|
481
|
+
redeemClaimPayout(tx, coverReceipt, claimId) {
|
|
482
|
+
return populateRedeemClaimPayout(tx, this.config, {
|
|
483
|
+
coverReceipt,
|
|
484
|
+
claimId,
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
retrieveDeposit(tx, coverReceipt, claimId) {
|
|
488
|
+
return populateRetrieveDeposit(tx, this.config, {
|
|
489
|
+
coverReceipt,
|
|
490
|
+
claimId,
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
/** Claim deposit amount in MIST (default 100e9). */
|
|
494
|
+
getClaimDepositMist() {
|
|
495
|
+
return this.config.claimDepositMist ?? BigInt(100000000000);
|
|
496
|
+
}
|
|
497
|
+
// --- Claims query: get claim, assessment, outcome ---
|
|
498
|
+
async getClaim(claimId, sender) {
|
|
499
|
+
const tx = new Transaction();
|
|
500
|
+
tx.setSenderIfNotSet(sender ?? '0x0');
|
|
501
|
+
buildGetClaimTx(tx, this.config, claimId);
|
|
502
|
+
const result = await this.client.simulateTransaction({
|
|
503
|
+
transaction: tx,
|
|
504
|
+
include: { commandResults: true },
|
|
505
|
+
});
|
|
506
|
+
if (result.$kind === 'FailedTransaction') {
|
|
507
|
+
const err = result.FailedTransaction?.status?.error;
|
|
508
|
+
throw new Error(err ? String(err) : 'get_claim simulation failed');
|
|
509
|
+
}
|
|
510
|
+
const commandResults = result.commandResults;
|
|
511
|
+
if (!commandResults?.length || !commandResults[0].returnValues?.length) {
|
|
512
|
+
return null;
|
|
513
|
+
}
|
|
514
|
+
const bcsBytes = commandResults[0].returnValues[0].bcs;
|
|
515
|
+
if (!bcsBytes || bcsBytes.length === 0)
|
|
516
|
+
return null;
|
|
517
|
+
return parseClaimFromBcs(bcsBytes);
|
|
518
|
+
}
|
|
519
|
+
async getAssessment(claimId, sender) {
|
|
520
|
+
const tx = new Transaction();
|
|
521
|
+
tx.setSenderIfNotSet(sender ?? '0x0');
|
|
522
|
+
buildGetAssessmentTx(tx, this.config, claimId);
|
|
523
|
+
const result = await this.client.simulateTransaction({
|
|
524
|
+
transaction: tx,
|
|
525
|
+
include: { commandResults: true },
|
|
526
|
+
});
|
|
527
|
+
if (result.$kind === 'FailedTransaction') {
|
|
528
|
+
const err = result.FailedTransaction?.status?.error;
|
|
529
|
+
throw new Error(err ? String(err) : 'get_assessment simulation failed');
|
|
530
|
+
}
|
|
531
|
+
const commandResults = result.commandResults;
|
|
532
|
+
if (!commandResults?.length || !commandResults[0].returnValues?.length) {
|
|
533
|
+
return null;
|
|
534
|
+
}
|
|
535
|
+
const bcsBytes = commandResults[0].returnValues[0].bcs;
|
|
536
|
+
if (!bcsBytes || bcsBytes.length === 0)
|
|
537
|
+
return null;
|
|
538
|
+
return parseAssessmentFromBcs(bcsBytes);
|
|
539
|
+
}
|
|
540
|
+
async getClaimOutcome(claimId, nowSec, sender) {
|
|
541
|
+
const tx = new Transaction();
|
|
542
|
+
tx.setSenderIfNotSet(sender ?? '0x0');
|
|
543
|
+
const now = nowSec ?? BigInt(Math.floor(Date.now() / 1000));
|
|
544
|
+
buildGetClaimOutcomeTx(tx, this.config, claimId, now);
|
|
545
|
+
const result = await this.client.simulateTransaction({
|
|
546
|
+
transaction: tx,
|
|
547
|
+
include: { commandResults: true },
|
|
548
|
+
});
|
|
549
|
+
if (result.$kind === 'FailedTransaction') {
|
|
550
|
+
const err = result.FailedTransaction?.status?.error;
|
|
551
|
+
throw new Error(err ? String(err) : 'get_claim_outcome simulation failed');
|
|
552
|
+
}
|
|
553
|
+
const commandResults = result.commandResults;
|
|
554
|
+
if (!commandResults?.length || !commandResults[0].returnValues?.length) {
|
|
555
|
+
return CLAIM_OUTCOME.PENDING;
|
|
556
|
+
}
|
|
557
|
+
const bcsBytes = commandResults[0].returnValues[0].bcs;
|
|
558
|
+
if (!bcsBytes || bcsBytes.length === 0)
|
|
559
|
+
return CLAIM_OUTCOME.PENDING;
|
|
560
|
+
const v = bcs.U8.parse(bcsBytes);
|
|
561
|
+
return typeof v === 'number' ? v : Number(v);
|
|
562
|
+
}
|
|
563
|
+
/** Decrypt claim evidence (for assessors). Returns raw bytes. Requires signer in allowlist for protocol_id. */
|
|
564
|
+
async decryptEvidence(encryptedBytes, protocolId, signer) {
|
|
565
|
+
const seal = this.config.seal;
|
|
566
|
+
if (!seal)
|
|
567
|
+
throw new Error('Seal config required for decryptEvidence');
|
|
568
|
+
return sealDecryptEvidence(this.client, signer, {
|
|
569
|
+
encryptedBytes,
|
|
570
|
+
protocolId,
|
|
571
|
+
allowlistObjectId: this.config.objectIds.allowlist,
|
|
572
|
+
sealPackageId: seal.packageId ?? this.config.packageIds.protocol,
|
|
573
|
+
sealServerConfigs: seal.serverConfigs,
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* Fetch blob from Walrus, decrypt, and return as text. For assessors viewing text evidence.
|
|
578
|
+
*/
|
|
579
|
+
async decryptEvidenceAsText(blobId, protocolId, signer) {
|
|
580
|
+
const { evidenceBytesToText } = await import('../utils/evidence');
|
|
581
|
+
const encrypted = await this.readBlobFromWalrus(blobId);
|
|
582
|
+
const bytes = await this.decryptEvidence(encrypted, protocolId, signer);
|
|
583
|
+
return evidenceBytesToText(bytes);
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Fetch blob from Walrus, decrypt, and return as image data URL (for img src). For assessors viewing image evidence.
|
|
587
|
+
*/
|
|
588
|
+
async decryptEvidenceAsImage(blobId, protocolId, signer) {
|
|
589
|
+
const { evidenceBytesToImageDataUrl } = await import('../utils/evidence');
|
|
590
|
+
const encrypted = await this.readBlobFromWalrus(blobId);
|
|
591
|
+
const bytes = await this.decryptEvidence(encrypted, protocolId, signer);
|
|
592
|
+
return evidenceBytesToImageDataUrl(bytes);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
|