@veridex/sdk 1.1.5 → 1.1.7
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/{EVMClient-Bmy9czkE.d.mts → EVMClient-DqDiFak8.d.mts} +1 -1
- package/dist/auth/prepareAuth.d.mts +5 -4
- package/dist/auth/prepareAuth.js +143 -1422
- package/dist/auth/prepareAuth.js.map +1 -1
- package/dist/auth/prepareAuth.mjs +17 -96
- package/dist/auth/prepareAuth.mjs.map +1 -1
- package/dist/chains/aptos/index.d.mts +1 -1
- package/dist/chains/aptos/index.js +11 -33
- package/dist/chains/aptos/index.js.map +1 -1
- package/dist/chains/aptos/index.mjs +2 -2
- package/dist/chains/avalanche/index.d.mts +2 -2
- package/dist/chains/avalanche/index.js +19 -115
- package/dist/chains/avalanche/index.js.map +1 -1
- package/dist/chains/avalanche/index.mjs +3 -3
- package/dist/chains/evm/index.d.mts +5 -4
- package/dist/chains/evm/index.js +19 -115
- package/dist/chains/evm/index.js.map +1 -1
- package/dist/chains/evm/index.mjs +2 -2
- package/dist/chains/solana/index.d.mts +1 -1
- package/dist/chains/solana/index.js +11 -33
- package/dist/chains/solana/index.js.map +1 -1
- package/dist/chains/solana/index.mjs +2 -2
- package/dist/chains/stacks/index.d.mts +1 -1
- package/dist/chains/stacks/index.js +11 -38
- package/dist/chains/stacks/index.js.map +1 -1
- package/dist/chains/stacks/index.mjs +2 -2
- package/dist/chains/starknet/index.d.mts +36 -2
- package/dist/chains/starknet/index.js +208 -37
- package/dist/chains/starknet/index.js.map +1 -1
- package/dist/chains/starknet/index.mjs +9 -4
- package/dist/chains/stellar/index.d.mts +2 -1
- package/dist/chains/sui/index.d.mts +1 -1
- package/dist/chains/sui/index.js +11 -27
- package/dist/chains/sui/index.js.map +1 -1
- package/dist/chains/sui/index.mjs +2 -2
- package/dist/{chunk-ZNIVNPGF.mjs → chunk-3PCAVZUZ.mjs} +173 -37
- package/dist/chunk-3PCAVZUZ.mjs.map +1 -0
- package/dist/{chunk-DQOW3G7M.mjs → chunk-6BINP4RT.mjs} +48 -9
- package/dist/{chunk-DQOW3G7M.mjs.map → chunk-6BINP4RT.mjs.map} +1 -1
- package/dist/{chunk-7KN6Y4GX.mjs → chunk-AK5HWYX4.mjs} +12 -40
- package/dist/chunk-AK5HWYX4.mjs.map +1 -0
- package/dist/{chunk-QVTADARB.mjs → chunk-FPSCAGYS.mjs} +12 -35
- package/dist/chunk-FPSCAGYS.mjs.map +1 -0
- package/dist/{chunk-USVZH4QC.mjs → chunk-H3WRT6Y4.mjs} +20 -117
- package/dist/chunk-H3WRT6Y4.mjs.map +1 -0
- package/dist/{chunk-GXJUY2SC.mjs → chunk-MNH22BM2.mjs} +12 -35
- package/dist/chunk-MNH22BM2.mjs.map +1 -0
- package/dist/chunk-N42LPFPJ.mjs +177 -0
- package/dist/chunk-N42LPFPJ.mjs.map +1 -0
- package/dist/{chunk-D57UJ4L5.mjs → chunk-NKSRF45N.mjs} +12 -29
- package/dist/chunk-NKSRF45N.mjs.map +1 -0
- package/dist/{chunk-BJH5HJL5.mjs → chunk-SKZLZFE2.mjs} +91 -65
- package/dist/chunk-SKZLZFE2.mjs.map +1 -0
- package/dist/{chunk-NVRAQPSF.mjs → chunk-UF5NWMSQ.mjs} +20 -4
- package/dist/chunk-UF5NWMSQ.mjs.map +1 -0
- package/dist/chunk-WC4X3MAO.mjs +58 -0
- package/dist/chunk-WC4X3MAO.mjs.map +1 -0
- package/dist/{chunk-5FH67KLG.mjs → chunk-XHDOSV2F.mjs} +2 -2
- package/dist/{index-CKKUV4J7.d.mts → index-D1nb2JV9.d.mts} +2 -2
- package/dist/index-qyOqd8tx.d.mts +517 -0
- package/dist/index.d.mts +30 -366
- package/dist/index.js +2412 -2486
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +986 -55
- package/dist/index.mjs.map +1 -1
- package/dist/passkey-fh8bo2w-.d.mts +241 -0
- package/dist/passkey.d.mts +2 -182
- package/dist/passkey.js +86 -7
- package/dist/passkey.js.map +1 -1
- package/dist/passkey.mjs +2 -1
- package/dist/payload.d.mts +22 -28
- package/dist/payload.js +50 -9
- package/dist/payload.js.map +1 -1
- package/dist/payload.mjs +7 -3
- package/dist/platform/index.d.mts +3 -0
- package/dist/platform/index.js +216 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/index.mjs +21 -0
- package/dist/platform/index.mjs.map +1 -0
- package/dist/{portfolio-W2FQ2G3O.mjs → portfolio-MLP2JIFK.mjs} +2 -3
- package/dist/queries/index.mjs +324 -10
- package/dist/queries/index.mjs.map +1 -1
- package/dist/{types-DP2CQT8p.d.mts → types-CdlEbixV.d.mts} +12 -1
- package/dist/types.d.mts +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +7 -1
- package/dist/chunk-72ZA3OYQ.mjs +0 -20
- package/dist/chunk-72ZA3OYQ.mjs.map +0 -1
- package/dist/chunk-7KN6Y4GX.mjs.map +0 -1
- package/dist/chunk-BJH5HJL5.mjs.map +0 -1
- package/dist/chunk-D57UJ4L5.mjs.map +0 -1
- package/dist/chunk-GXJUY2SC.mjs.map +0 -1
- package/dist/chunk-NVRAQPSF.mjs.map +0 -1
- package/dist/chunk-QVTADARB.mjs.map +0 -1
- package/dist/chunk-USVZH4QC.mjs.map +0 -1
- package/dist/chunk-XDIIFIW6.mjs +0 -330
- package/dist/chunk-XDIIFIW6.mjs.map +0 -1
- package/dist/chunk-ZNIVNPGF.mjs.map +0 -1
- package/dist/chunk-ZXMTPBSP.mjs +0 -857
- package/dist/chunk-ZXMTPBSP.mjs.map +0 -1
- /package/dist/{chunk-5FH67KLG.mjs.map → chunk-XHDOSV2F.mjs.map} +0 -0
- /package/dist/{portfolio-W2FQ2G3O.mjs.map → portfolio-MLP2JIFK.mjs.map} +0 -0
|
@@ -103,6 +103,7 @@ function padTo32Bytes(address) {
|
|
|
103
103
|
}
|
|
104
104
|
return "0x" + hex.padStart(64, "0");
|
|
105
105
|
}
|
|
106
|
+
var CHALLENGE_DOMAIN = import_ethers.ethers.sha256(import_ethers.ethers.toUtf8Bytes("veridex.challenge.v1"));
|
|
106
107
|
|
|
107
108
|
// src/chains/evm/EVMClient.ts
|
|
108
109
|
var PROXY_BYTECODE_PREFIX = "0x3d602d80600a3d3981f3363d3d373d3d3d363d73";
|
|
@@ -394,129 +395,32 @@ var EVMClient = class {
|
|
|
394
395
|
);
|
|
395
396
|
}
|
|
396
397
|
async dispatch(signature, publicKeyX, publicKeyY, targetChain, actionPayload, nonce, signer) {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
const messageFee = await this.getMessageFee();
|
|
407
|
-
const tx = await hubWithSigner.dispatch(
|
|
408
|
-
signatureTuple,
|
|
409
|
-
publicKeyX,
|
|
410
|
-
publicKeyY,
|
|
411
|
-
targetChain,
|
|
412
|
-
actionPayload,
|
|
413
|
-
nonce,
|
|
414
|
-
{ value: messageFee }
|
|
415
|
-
);
|
|
416
|
-
const receipt = await tx.wait();
|
|
417
|
-
const dispatchEvent = receipt.logs.find((log) => {
|
|
418
|
-
try {
|
|
419
|
-
const parsed = hubWithSigner.interface.parseLog(log);
|
|
420
|
-
return parsed?.name === "ActionDispatched";
|
|
421
|
-
} catch {
|
|
422
|
-
return false;
|
|
423
|
-
}
|
|
424
|
-
});
|
|
425
|
-
let sequence = 0n;
|
|
426
|
-
if (dispatchEvent) {
|
|
427
|
-
const parsed = hubWithSigner.interface.parseLog(dispatchEvent);
|
|
428
|
-
sequence = BigInt(parsed?.args?.sequence?.toString() ?? "0");
|
|
429
|
-
}
|
|
430
|
-
const keyHash = import_ethers2.ethers.keccak256(
|
|
431
|
-
import_ethers2.ethers.AbiCoder.defaultAbiCoder().encode(
|
|
432
|
-
["uint256", "uint256"],
|
|
433
|
-
[publicKeyX, publicKeyY]
|
|
434
|
-
)
|
|
398
|
+
void signature;
|
|
399
|
+
void publicKeyX;
|
|
400
|
+
void publicKeyY;
|
|
401
|
+
void targetChain;
|
|
402
|
+
void actionPayload;
|
|
403
|
+
void nonce;
|
|
404
|
+
void signer;
|
|
405
|
+
throw new Error(
|
|
406
|
+
"Direct Hub dispatch requires pinned v3 destination metadata. Use VeridexSDK.transferViaRelayer() or bridgeViaRelayer()."
|
|
435
407
|
);
|
|
436
|
-
return {
|
|
437
|
-
transactionHash: receipt.hash,
|
|
438
|
-
sequence,
|
|
439
|
-
userKeyHash: keyHash,
|
|
440
|
-
targetChain,
|
|
441
|
-
blockNumber: receipt.blockNumber
|
|
442
|
-
};
|
|
443
408
|
}
|
|
444
409
|
/**
|
|
445
410
|
* Dispatch an action to the Hub via relayer (gasless)
|
|
446
411
|
* The relayer pays for gas and submits the transaction on behalf of the user
|
|
447
412
|
*/
|
|
448
413
|
async dispatchGasless(signature, publicKeyX, publicKeyY, targetChain, actionPayload, nonce, relayerUrl) {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
414
|
+
void signature;
|
|
415
|
+
void publicKeyX;
|
|
416
|
+
void publicKeyY;
|
|
417
|
+
void targetChain;
|
|
418
|
+
void actionPayload;
|
|
419
|
+
void nonce;
|
|
420
|
+
void relayerUrl;
|
|
421
|
+
throw new Error(
|
|
422
|
+
"ChainClient.dispatchGasless() cannot bind v3 destination metadata. Use VeridexSDK.transferViaRelayer() or bridgeViaRelayer()."
|
|
454
423
|
);
|
|
455
|
-
const message = import_ethers2.ethers.keccak256(
|
|
456
|
-
import_ethers2.ethers.AbiCoder.defaultAbiCoder().encode(
|
|
457
|
-
["bytes32", "uint16", "bytes", "uint256"],
|
|
458
|
-
[keyHash, targetChain, actionPayload, nonce]
|
|
459
|
-
)
|
|
460
|
-
);
|
|
461
|
-
const request = {
|
|
462
|
-
messageHash: message,
|
|
463
|
-
r: "0x" + signature.r.toString(16).padStart(64, "0"),
|
|
464
|
-
s: "0x" + signature.s.toString(16).padStart(64, "0"),
|
|
465
|
-
publicKeyX: "0x" + publicKeyX.toString(16).padStart(64, "0"),
|
|
466
|
-
publicKeyY: "0x" + publicKeyY.toString(16).padStart(64, "0"),
|
|
467
|
-
targetChain,
|
|
468
|
-
actionPayload,
|
|
469
|
-
nonce: Number(nonce)
|
|
470
|
-
};
|
|
471
|
-
const MAX_ATTEMPTS = 3;
|
|
472
|
-
const baseDelayMs = 1e3;
|
|
473
|
-
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
474
|
-
let response;
|
|
475
|
-
let lastError;
|
|
476
|
-
for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
|
|
477
|
-
try {
|
|
478
|
-
response = await fetch(`${relayerUrl}/api/v1/submit`, {
|
|
479
|
-
method: "POST",
|
|
480
|
-
headers: {
|
|
481
|
-
"Content-Type": "application/json"
|
|
482
|
-
},
|
|
483
|
-
body: JSON.stringify(request)
|
|
484
|
-
});
|
|
485
|
-
const retryable = response.status >= 500 || response.status === 408 || response.status === 429;
|
|
486
|
-
if (!retryable) {
|
|
487
|
-
break;
|
|
488
|
-
}
|
|
489
|
-
if (attempt === MAX_ATTEMPTS) break;
|
|
490
|
-
const retryAfter = response.headers.get("retry-after");
|
|
491
|
-
const explicitDelay = retryAfter ? parseInt(retryAfter, 10) * 1e3 : 0;
|
|
492
|
-
const backoff = explicitDelay > 0 ? explicitDelay : baseDelayMs * 2 ** (attempt - 1) + Math.floor(Math.random() * 200);
|
|
493
|
-
await sleep(backoff);
|
|
494
|
-
} catch (err) {
|
|
495
|
-
lastError = err;
|
|
496
|
-
if (attempt === MAX_ATTEMPTS) break;
|
|
497
|
-
const backoff = baseDelayMs * 2 ** (attempt - 1) + Math.floor(Math.random() * 200);
|
|
498
|
-
await sleep(backoff);
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
if (!response) {
|
|
502
|
-
throw new Error(
|
|
503
|
-
`Relayer submission failed after ${MAX_ATTEMPTS} attempts: ${lastError instanceof Error ? lastError.message : String(lastError)}`
|
|
504
|
-
);
|
|
505
|
-
}
|
|
506
|
-
if (!response.ok) {
|
|
507
|
-
const error = await response.json().catch(() => ({ error: response.statusText }));
|
|
508
|
-
throw new Error(`Relayer submission failed: ${error.error || response.statusText}`);
|
|
509
|
-
}
|
|
510
|
-
const result = await response.json();
|
|
511
|
-
if (!result.success) {
|
|
512
|
-
throw new Error(`Relayer submission failed: ${result.error}`);
|
|
513
|
-
}
|
|
514
|
-
return {
|
|
515
|
-
transactionHash: result.txHash,
|
|
516
|
-
sequence: BigInt(result.sequence || "0"),
|
|
517
|
-
userKeyHash: keyHash,
|
|
518
|
-
targetChain
|
|
519
|
-
};
|
|
520
424
|
}
|
|
521
425
|
async getVaultAddress(userKeyHash) {
|
|
522
426
|
try {
|