@across-protocol/sdk 4.2.14 → 4.2.16-alpha.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.
Files changed (43) hide show
  1. package/dist/cjs/arch/svm/SpokeUtils.d.ts +4 -4
  2. package/dist/cjs/arch/svm/SpokeUtils.js +4 -4
  3. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  4. package/dist/cjs/arch/svm/utils.d.ts +4 -0
  5. package/dist/cjs/arch/svm/utils.js +15 -1
  6. package/dist/cjs/arch/svm/utils.js.map +1 -1
  7. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +1 -0
  8. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  9. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.d.ts +1 -1
  10. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +4 -3
  11. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  12. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.d.ts +1 -1
  13. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +1 -1
  14. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  15. package/dist/esm/arch/svm/SpokeUtils.d.ts +4 -4
  16. package/dist/esm/arch/svm/SpokeUtils.js +5 -5
  17. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  18. package/dist/esm/arch/svm/utils.d.ts +7 -0
  19. package/dist/esm/arch/svm/utils.js +14 -0
  20. package/dist/esm/arch/svm/utils.js.map +1 -1
  21. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +1 -0
  22. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  23. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.d.ts +1 -1
  24. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +5 -4
  25. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  26. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.d.ts +1 -1
  27. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +2 -2
  28. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  29. package/dist/types/arch/svm/SpokeUtils.d.ts +4 -4
  30. package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
  31. package/dist/types/arch/svm/utils.d.ts +7 -0
  32. package/dist/types/arch/svm/utils.d.ts.map +1 -1
  33. package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
  34. package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts +1 -1
  35. package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts.map +1 -1
  36. package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts +1 -1
  37. package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts.map +1 -1
  38. package/package.json +2 -2
  39. package/src/arch/svm/SpokeUtils.ts +8 -6
  40. package/src/arch/svm/utils.ts +16 -0
  41. package/src/clients/SpokePoolClient/SpokePoolClient.ts +1 -0
  42. package/src/clients/mocks/MockSvmCpiEventsClient.ts +5 -3
  43. package/src/relayFeeCalculator/chain-queries/svmQuery.ts +2 -1
@@ -19,6 +19,7 @@ import {
19
19
  getU32Encoder,
20
20
  getU64Encoder,
21
21
  pipe,
22
+ ReadonlyUint8Array,
22
23
  some,
23
24
  type TransactionSigner,
24
25
  } from "@solana/kit";
@@ -31,6 +32,7 @@ import { Deposit, DepositWithBlock, FillStatus, FillWithBlock, RelayData } from
31
32
  import { BigNumber, SvmAddress, chainIsSvm, chunk, isUnsafeDepositId, keccak256, toAddressType } from "../../utils";
32
33
  import {
33
34
  SvmCpiEventsClient,
35
+ bigToU8a32,
34
36
  createDefaultTransaction,
35
37
  getEventAuthority,
36
38
  getFillStatusPda,
@@ -398,7 +400,7 @@ export async function fillRelayInstruction(
398
400
  exclusiveRelayer: exclusiveRelayer.toV2Address(),
399
401
  inputToken: inputToken.toV2Address(),
400
402
  outputToken: outputToken.toV2Address(),
401
- inputAmount: deposit.inputAmount.toBigInt(),
403
+ inputAmount: bigToU8a32(deposit.inputAmount),
402
404
  outputAmount: deposit.outputAmount.toBigInt(),
403
405
  originChainId: BigInt(deposit.originChainId),
404
406
  fillDeadline: deposit.fillDeadline,
@@ -596,7 +598,7 @@ export function getRelayDataHash(relayData: RelayData, destinationChainId: numbe
596
598
  Uint8Array.from(addressEncoder.encode(SvmAddress.from(relayData.exclusiveRelayer, "base16").toV2Address())),
597
599
  Uint8Array.from(addressEncoder.encode(SvmAddress.from(relayData.inputToken, "base16").toV2Address())),
598
600
  Uint8Array.from(addressEncoder.encode(SvmAddress.from(relayData.outputToken, "base16").toV2Address())),
599
- Uint8Array.from(uint64Encoder.encode(BigInt(relayData.inputAmount.toString()))),
601
+ arrayify(hexZeroPad(hexlify(relayData.inputAmount), 32)),
600
602
  Uint8Array.from(uint64Encoder.encode(BigInt(relayData.outputAmount.toString()))),
601
603
  Uint8Array.from(uint64Encoder.encode(BigInt(relayData.originChainId.toString()))),
602
604
  arrayify(hexZeroPad(hexlify(relayData.depositId), 32)),
@@ -704,7 +706,7 @@ export async function getDepositDelegatePda(
704
706
  inputToken: Address<string>;
705
707
  outputToken: Address<string>;
706
708
  inputAmount: bigint;
707
- outputAmount: bigint;
709
+ outputAmount: ReadonlyUint8Array;
708
710
  destinationChainId: bigint;
709
711
  exclusiveRelayer: Address<string>;
710
712
  quoteTimestamp: bigint;
@@ -724,7 +726,7 @@ export async function getDepositDelegatePda(
724
726
  Uint8Array.from(addrEnc.encode(depositData.inputToken)),
725
727
  Uint8Array.from(addrEnc.encode(depositData.outputToken)),
726
728
  Uint8Array.from(u64.encode(depositData.inputAmount)),
727
- Uint8Array.from(u64.encode(depositData.outputAmount)),
729
+ Uint8Array.from(depositData.outputAmount),
728
730
  Uint8Array.from(u64.encode(depositData.destinationChainId)),
729
731
  Uint8Array.from(addrEnc.encode(depositData.exclusiveRelayer)),
730
732
  Uint8Array.from(u32.encode(depositData.quoteTimestamp)),
@@ -754,7 +756,7 @@ export async function getDepositNowDelegatePda(
754
756
  inputToken: Address<string>;
755
757
  outputToken: Address<string>;
756
758
  inputAmount: bigint;
757
- outputAmount: bigint;
759
+ outputAmount: ReadonlyUint8Array;
758
760
  destinationChainId: bigint;
759
761
  exclusiveRelayer: Address<string>;
760
762
  fillDeadlineOffset: bigint;
@@ -773,7 +775,7 @@ export async function getDepositNowDelegatePda(
773
775
  Uint8Array.from(addrEnc.encode(depositData.inputToken)),
774
776
  Uint8Array.from(addrEnc.encode(depositData.outputToken)),
775
777
  Uint8Array.from(u64.encode(depositData.inputAmount)),
776
- Uint8Array.from(u64.encode(depositData.outputAmount)),
778
+ Uint8Array.from(depositData.outputAmount),
777
779
  Uint8Array.from(u64.encode(depositData.destinationChainId)),
778
780
  Uint8Array.from(addrEnc.encode(depositData.exclusiveRelayer)),
779
781
  Uint8Array.from(u32.encode(depositData.fillDeadlineOffset)),
@@ -304,3 +304,19 @@ export const createDefaultTransaction = async (rpcClient: SVMProvider, signer: T
304
304
  (tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx)
305
305
  );
306
306
  };
307
+
308
+ /**
309
+ * Convert a bigint (0 ≤ n < 2^256) to a 32-byte Uint8Array (big-endian).
310
+ */
311
+ export function bigintToU8a32(n: bigint): Uint8Array {
312
+ if (n < BigInt(0) || n > ethers.constants.MaxUint256.toBigInt()) {
313
+ throw new RangeError("Value must fit in 256 bits");
314
+ }
315
+ const hexPadded = ethers.utils.hexZeroPad("0x" + n.toString(16), 32);
316
+ return ethers.utils.arrayify(hexPadded);
317
+ }
318
+
319
+ export const bigToU8a32 = (bn: bigint | BigNumber) =>
320
+ bigintToU8a32(typeof bn === "bigint" ? bn : BigInt(bn.toString()));
321
+
322
+ export const numberToU8a32 = (n: number) => bigintToU8a32(BigInt(n));
@@ -70,6 +70,7 @@ export const knownEventNames = [
70
70
  "RequestedSlowFill",
71
71
  "FilledV3Relay",
72
72
  "FilledRelay",
73
+ "BridgedToHubPool",
73
74
  "ClaimedRelayerRefund",
74
75
  ];
75
76
 
@@ -16,6 +16,7 @@ import {
16
16
  SVMEventNames,
17
17
  SVMProvider,
18
18
  getRandomSvmAddress,
19
+ bigToU8a32,
19
20
  } from "../../arch/svm";
20
21
  import { bnZero, bnOne, bs58, getCurrentTime, randomAddress, EvmAddress } from "../../utils";
21
22
  import { FillType } from "../../interfaces";
@@ -79,7 +80,7 @@ export class MockSvmCpiEventsClient extends SvmCpiEventsClient {
79
80
  const inputToken = deposit.inputToken ?? getRandomSvmAddress();
80
81
  const outputToken = deposit.outputToken ?? EvmAddress.from(randomAddress()).toBase58();
81
82
  inputAmount ??= BigInt(random(1, 1000, false));
82
- outputAmount ??= (inputAmount * BigInt(95)) / BigInt(100);
83
+ outputAmount ??= bigToU8a32((inputAmount * BigInt(95)) / BigInt(100));
83
84
  const message = deposit.message ?? new Uint8Array(32);
84
85
  const quoteTimestamp = deposit.quoteTimestamp ?? getCurrentTime();
85
86
 
@@ -111,8 +112,9 @@ export class MockSvmCpiEventsClient extends SvmCpiEventsClient {
111
112
  const { slot } = fill;
112
113
  let { depositId, inputAmount, outputAmount, fillDeadline } = fill;
113
114
  depositId ??= arrayify(hexZeroPad(hexlify(random(1, 100_000, false)), 32));
114
- inputAmount ??= BigInt(random(1, 1000, false));
115
- outputAmount ??= (inputAmount * BigInt(95)) / BigInt(100);
115
+ const inputAmountBigInt = BigInt(random(1, 1000, false));
116
+ inputAmount ??= bigToU8a32(inputAmountBigInt);
117
+ outputAmount ??= (inputAmountBigInt * BigInt(95)) / BigInt(100);
116
118
  fillDeadline ??= getCurrentTime() + 60;
117
119
 
118
120
  const depositor = fill.depositor ?? EvmAddress.from(randomAddress()).toBase58();
@@ -6,6 +6,7 @@ import { getComputeUnitEstimateForTransactionMessageFactory } from "@solana/kit"
6
6
  import {
7
7
  SVMProvider,
8
8
  SolanaVoidSigner,
9
+ bigToU8a32,
9
10
  createFillInstruction,
10
11
  getAssociatedTokenAddress,
11
12
  getEventAuthority,
@@ -166,7 +167,7 @@ export class SvmQuery implements QueryInterface {
166
167
  exclusiveRelayer: toSvmAddress(deposit.exclusiveRelayer),
167
168
  inputToken: toSvmAddress(deposit.inputToken),
168
169
  outputToken: mint.toV2Address(),
169
- inputAmount: deposit.inputAmount.toBigInt(),
170
+ inputAmount: bigToU8a32(deposit.inputAmount),
170
171
  outputAmount: deposit.outputAmount.toBigInt(),
171
172
  originChainId: deposit.originChainId,
172
173
  depositId: new Uint8Array(intToU8Array32(deposit.depositId.toNumber())),