Skip to content

Commit a0a92c3

Browse files
committed
Merge branch 'main' into staging
2 parents d682879 + 002b518 commit a0a92c3

File tree

3 files changed

+72
-7
lines changed

3 files changed

+72
-7
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"@fastify/swagger-ui": "^5.2.3",
2020
"@fastify/type-provider-typebox": "^5.1.0",
2121
"@near-js/providers": "^2.3.1",
22-
"@reservoir0x/relay-protocol-sdk": "^0.0.43",
22+
"@reservoir0x/relay-protocol-sdk": "^0.0.50",
2323
"@sinclair/typebox": "^0.34.14",
2424
"@solana/web3.js": "^1.98.2",
2525
"asn1.js": "^5.4.1",

src/services/request-handler/index.ts

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
http,
2020
parseAbi,
2121
zeroAddress,
22+
encodeAbiParameters,
2223
} from "viem";
2324
import { privateKeyToAccount } from "viem/accounts";
2425
import TronWeb from "tronweb";
@@ -125,7 +126,9 @@ export class RequestHandlerService {
125126
)?.topics[1]
126127
);
127128
if (!payloadId) {
128-
throw externalError("Could not submit withdrawal request");
129+
throw externalError(
130+
"Withdrawal request submission failed to generate payload"
131+
);
129132
}
130133

131134
encodedData = await contract.read.payloads([payloadId as Hex]);
@@ -270,7 +273,9 @@ export class RequestHandlerService {
270273
)?.topics[1]
271274
);
272275
if (!payloadId) {
273-
throw externalError("Could not submit withdrawal request");
276+
throw externalError(
277+
"Withdrawal request submission failed to generate payload"
278+
);
274279
}
275280

276281
encodedData = await contract.read.payloads([payloadId as Hex]);
@@ -453,6 +458,64 @@ export class RequestHandlerService {
453458
}
454459
}
455460

461+
case "hyperliquid-vm": {
462+
if (request.mode === "onchain") {
463+
const { contract, publicClient, walletClient } =
464+
await getOnchainAllocator();
465+
466+
const currentTime = BigInt(Date.now());
467+
468+
// TODO: Add support for "sendAsset"
469+
const data = encodeAbiParameters([{ type: "uint64" }], [currentTime]);
470+
471+
payloadParams = {
472+
chainId: chain.metadata.allocatorChainId!,
473+
depository: chain.depository!,
474+
currency: request.currency.toLowerCase(),
475+
amount: request.amount,
476+
spender: walletClient.account.address.toLowerCase(),
477+
receiver: request.recipient.toLowerCase(),
478+
data,
479+
nonce: `0x${randomBytes(32).toString("hex")}`,
480+
};
481+
482+
// This is needed before being able to submit withdraw requests
483+
await handleOneTimeApproval();
484+
485+
const txHash = await contract.write.submitWithdrawRequest([
486+
payloadParams as any,
487+
]);
488+
payloadId = await publicClient
489+
.waitForTransactionReceipt({ hash: txHash })
490+
.then(
491+
(receipt) =>
492+
receipt.logs.find(
493+
(l) =>
494+
l.address.toLowerCase() ===
495+
contract.address.toLowerCase() &&
496+
// We need the "PayloadBuild" event
497+
l.topics[0] ===
498+
"0x007d52d35e656ce646ba5807d55724e47d53e72435a328e89eb6ce56b0e95d6a"
499+
)?.topics[1]
500+
);
501+
if (!payloadId) {
502+
throw externalError(
503+
"Withdrawal request submission failed to generate payload"
504+
);
505+
}
506+
507+
encodedData = await contract.read.payloads([payloadId as Hex]);
508+
509+
id = getDecodedWithdrawalId(
510+
decodeWithdrawal(encodedData, chain.vmType)
511+
);
512+
513+
break;
514+
} else {
515+
throw externalError("Offchain allocator mode not implemented");
516+
}
517+
}
518+
456519
case "tron-vm": {
457520
if (request.mode === "onchain") {
458521
throw externalError("Onchain allocator mode not implemented");

yarn.lock

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,10 +1463,10 @@
14631463
resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.11.1.tgz#ee2bf2fac6e2d8deac0ca63471a77481548e5553"
14641464
integrity sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==
14651465

1466-
"@reservoir0x/relay-protocol-sdk@^0.0.43":
1467-
version "0.0.43"
1468-
resolved "https://registry.yarnpkg.com/@reservoir0x/relay-protocol-sdk/-/relay-protocol-sdk-0.0.43.tgz#9851289f3c3a5c100a41ae7620a8a54a8a249c7c"
1469-
integrity sha512-wHb2wB1TwVYZvUr1qzMOOX0rbSTz/5FXMNML198J9+AATEOlUMPOY75EpMeE4J3mRqGh8GEZ2hWYulLimS2TLg==
1466+
"@reservoir0x/relay-protocol-sdk@^0.0.50":
1467+
version "0.0.50"
1468+
resolved "https://registry.yarnpkg.com/@reservoir0x/relay-protocol-sdk/-/relay-protocol-sdk-0.0.50.tgz#0a5b42e9f52aa8143ed13e6bf389e19274cd8f92"
1469+
integrity sha512-2WcysR1rb2r5yqUxbSXDEvIvUk6lcDfG/pb7GUGr4Ub4AA9TNofCu2fgkB1Yu2HySfDADYWZ420wm7P26SGZQg==
14701470
dependencies:
14711471
"@coral-xyz/anchor" "^0.31.1"
14721472
"@mysten/sui" "^1.24.0"
@@ -4866,6 +4866,7 @@ string-length@^4.0.1:
48664866
strip-ansi "^6.0.0"
48674867

48684868
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
4869+
name string-width-cjs
48694870
version "4.2.3"
48704871
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
48714872
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -5283,6 +5284,7 @@ wordwrap@^1.0.0:
52835284
integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
52845285

52855286
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
5287+
name wrap-ansi-cjs
52865288
version "7.0.0"
52875289
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
52885290
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==

0 commit comments

Comments
 (0)