@across-protocol/sdk 4.3.45 → 4.3.47

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 (100) hide show
  1. package/dist/cjs/arch/evm/SpokeUtils.js +30 -28
  2. package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
  3. package/dist/cjs/arch/svm/SpokeUtils.d.ts +21 -10
  4. package/dist/cjs/arch/svm/SpokeUtils.js +129 -11
  5. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  6. package/dist/cjs/arch/svm/encoders.d.ts +19 -0
  7. package/dist/cjs/arch/svm/encoders.js +52 -0
  8. package/dist/cjs/arch/svm/encoders.js.map +1 -0
  9. package/dist/cjs/arch/svm/index.d.ts +1 -0
  10. package/dist/cjs/arch/svm/index.js +1 -0
  11. package/dist/cjs/arch/svm/index.js.map +1 -1
  12. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +4 -6
  13. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  14. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +0 -5
  15. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  16. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +0 -1
  17. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  18. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +58 -58
  19. package/dist/cjs/clients/HubPoolClient.d.ts +9 -3
  20. package/dist/cjs/clients/HubPoolClient.js +81 -56
  21. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  22. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +7 -5
  23. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  24. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +13 -16
  25. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  26. package/dist/cjs/clients/mocks/MockHubPoolClient.d.ts +2 -2
  27. package/dist/cjs/clients/mocks/MockHubPoolClient.js +1 -1
  28. package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
  29. package/dist/cjs/constants.d.ts +3 -0
  30. package/dist/cjs/constants.js +10 -2
  31. package/dist/cjs/constants.js.map +1 -1
  32. package/dist/cjs/providers/solana/retryRpcFactory.js +14 -10
  33. package/dist/cjs/providers/solana/retryRpcFactory.js.map +1 -1
  34. package/dist/esm/arch/evm/SpokeUtils.js +33 -29
  35. package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
  36. package/dist/esm/arch/svm/SpokeUtils.d.ts +38 -10
  37. package/dist/esm/arch/svm/SpokeUtils.js +152 -11
  38. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  39. package/dist/esm/arch/svm/encoders.d.ts +19 -0
  40. package/dist/esm/arch/svm/encoders.js +43 -0
  41. package/dist/esm/arch/svm/encoders.js.map +1 -0
  42. package/dist/esm/arch/svm/index.d.ts +1 -0
  43. package/dist/esm/arch/svm/index.js +1 -0
  44. package/dist/esm/arch/svm/index.js.map +1 -1
  45. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +5 -7
  46. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  47. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +1 -6
  48. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  49. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +0 -1
  50. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  51. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +58 -58
  52. package/dist/esm/clients/HubPoolClient.d.ts +9 -3
  53. package/dist/esm/clients/HubPoolClient.js +87 -60
  54. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  55. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +8 -6
  56. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  57. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +13 -18
  58. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  59. package/dist/esm/clients/mocks/MockHubPoolClient.d.ts +2 -2
  60. package/dist/esm/clients/mocks/MockHubPoolClient.js +1 -1
  61. package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
  62. package/dist/esm/constants.d.ts +3 -0
  63. package/dist/esm/constants.js +12 -1
  64. package/dist/esm/constants.js.map +1 -1
  65. package/dist/esm/providers/solana/retryRpcFactory.js +15 -10
  66. package/dist/esm/providers/solana/retryRpcFactory.js.map +1 -1
  67. package/dist/types/arch/evm/SpokeUtils.d.ts.map +1 -1
  68. package/dist/types/arch/svm/SpokeUtils.d.ts +38 -10
  69. package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
  70. package/dist/types/arch/svm/encoders.d.ts +20 -0
  71. package/dist/types/arch/svm/encoders.d.ts.map +1 -0
  72. package/dist/types/arch/svm/index.d.ts +1 -0
  73. package/dist/types/arch/svm/index.d.ts.map +1 -1
  74. package/dist/types/clients/BundleDataClient/utils/DataworkerUtils.d.ts.map +1 -1
  75. package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts.map +1 -1
  76. package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts.map +1 -1
  77. package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +58 -58
  78. package/dist/types/clients/HubPoolClient.d.ts +9 -3
  79. package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
  80. package/dist/types/clients/SpokePoolClient/EVMSpokePoolClient.d.ts.map +1 -1
  81. package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
  82. package/dist/types/clients/mocks/MockHubPoolClient.d.ts +2 -2
  83. package/dist/types/clients/mocks/MockHubPoolClient.d.ts.map +1 -1
  84. package/dist/types/constants.d.ts +3 -0
  85. package/dist/types/constants.d.ts.map +1 -1
  86. package/dist/types/providers/solana/retryRpcFactory.d.ts.map +1 -1
  87. package/package.json +2 -2
  88. package/src/arch/evm/SpokeUtils.ts +16 -9
  89. package/src/arch/svm/SpokeUtils.ts +199 -11
  90. package/src/arch/svm/encoders.ts +86 -0
  91. package/src/arch/svm/index.ts +1 -0
  92. package/src/clients/BundleDataClient/utils/DataworkerUtils.ts +20 -14
  93. package/src/clients/BundleDataClient/utils/FillUtils.ts +1 -7
  94. package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +0 -2
  95. package/src/clients/HubPoolClient.ts +79 -50
  96. package/src/clients/SpokePoolClient/EVMSpokePoolClient.ts +22 -8
  97. package/src/clients/SpokePoolClient/SpokePoolClient.ts +31 -39
  98. package/src/clients/mocks/MockHubPoolClient.ts +3 -3
  99. package/src/constants.ts +12 -0
  100. package/src/providers/solana/retryRpcFactory.ts +6 -2
@@ -1 +1 @@
1
- {"version":3,"file":"SpokePoolClient.d.ts","sourceRoot":"","sources":["../../../../src/clients/SpokePoolClient/SpokePoolClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpokePoolClient.d.ts","sourceRoot":"","sources":["../../../../src/clients/SpokePoolClient/SpokePoolClient.ts"],"names":[],"mappings":"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"}
@@ -25,8 +25,8 @@ export declare class MockHubPoolClient extends HubPoolClient {
25
25
  l2TokenEnabledForL1TokenAtBlock(l1Token: EvmAddress, destinationChainId: number, hubBlockNumber: number): boolean;
26
26
  l2TokenHasPoolRebalanceRoute(l2Token: Address, chainId: number, hubPoolBlock: number): boolean;
27
27
  deleteTokenMapping(l1Token: string, chainId: number): void;
28
- getL1TokenForL2TokenAtBlock(l2Token: Address, chainId: number, blockNumber: number): EvmAddress | undefined;
29
- getL2TokenForL1TokenAtBlock(l1Token: EvmAddress, chainId: number, blockNumber: number): Address | undefined;
28
+ getL1TokenForL2TokenAtBlock(l2Token: Address, chainId: number, blockNumber: number): EvmAddress;
29
+ getL2TokenForL1TokenAtBlock(l1Token: EvmAddress, chainId: number, blockNumber: number): Address;
30
30
  getTokenInfoForL1Token(l1Token: EvmAddress): L1TokenInfo | undefined;
31
31
  _update(eventNames: string[]): Promise<HubPoolUpdate>;
32
32
  readonly eventSignatures: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"MockHubPoolClient.d.ts","sourceRoot":"","sources":["../../../../src/clients/mocks/MockHubPoolClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MockHubPoolClient.d.ts","sourceRoot":"","sources":["../../../../src/clients/mocks/MockHubPoolClient.ts"],"names":[],"mappings":"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"}
@@ -32,4 +32,7 @@ export declare const STABLE_COIN_SYMBOLS: string[];
32
32
  export declare const CUSTOM_GAS_TOKENS: {
33
33
  [x: number]: string;
34
34
  };
35
+ export declare const SPOKEPOOL_UPGRADE_BLOCKS: {
36
+ [x: number]: number;
37
+ };
35
38
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAqB,YAAY,UAAY,UAAU,QAAoB,CAAC;AAGnF,eAAO,MAAM,kBAAkB,kCAAkC,CAAC;AAIlE,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAGlC,eAAO,MAAM,2CAA2C,IAAI,CAAC;AAG7D,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAOtD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,UAA2B,CAAC;AAE1E,eAAO,MAAM,mBAAmB,QAAuB,CAAC;AACxD,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAEhD,eAAO,MAAM,iCAAiC,+CAA+C,CAAC;AAC9F,eAAO,MAAM,qCAAqC,iDAAiD,CAAC;AACpG,eAAO,MAAM,sCAAsC,+CAA+C,CAAC;AAEnG,eAAO,MAAM,+BAA+B,gDAAgD,CAAC;AAE7F,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,oBAAoB,UAKhC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAY/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;CAO7B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAqB,YAAY,UAAY,UAAU,QAAoB,CAAC;AAGnF,eAAO,MAAM,kBAAkB,kCAAkC,CAAC;AAIlE,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAGlC,eAAO,MAAM,2CAA2C,IAAI,CAAC;AAG7D,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAOtD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,UAA2B,CAAC;AAE1E,eAAO,MAAM,mBAAmB,QAAuB,CAAC;AACxD,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAEhD,eAAO,MAAM,iCAAiC,+CAA+C,CAAC;AAC9F,eAAO,MAAM,qCAAqC,iDAAiD,CAAC;AACpG,eAAO,MAAM,sCAAsC,+CAA+C,CAAC;AAEnG,eAAO,MAAM,+BAA+B,gDAAgD,CAAC;AAE7F,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,oBAAoB,UAKhC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAY/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;CAO7B,CAAC;AAKF,eAAO,MAAM,wBAAwB;;CAOpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"retryRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA2C,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAItE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,qBAAa,qBAAsB,SAAQ,uBAAuB;IAO9D,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IANpC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGd,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EAClC,GAAG,4BAA4B,EAAE,qBAAqB,CAAC,OAAO,2BAA2B,CAAC;IAuBrF,eAAe,IAAI,YAAY;IAMtC;;;;;OAKG;YACW,QAAQ;IAuCtB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}
1
+ {"version":3,"file":"retryRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA2C,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAItE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,qBAAa,qBAAsB,SAAQ,uBAAuB;IAO9D,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IANpC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGd,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EAClC,GAAG,4BAA4B,EAAE,qBAAqB,CAAC,OAAO,2BAA2B,CAAC;IAuBrF,eAAe,IAAI,YAAY;IAMtC;;;;;OAKG;YACW,QAAQ;IA0CtB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@across-protocol/sdk",
3
3
  "author": "UMA Team",
4
- "version": "4.3.45",
4
+ "version": "4.3.47",
5
5
  "license": "AGPL-3.0",
6
6
  "homepage": "https://docs.across.to/reference/sdk",
7
7
  "files": [
@@ -34,7 +34,7 @@
34
34
  "bump-version:minor": "yarn version --minor --no-git-tag-version --no-commit-hooks && git commit -m 'chore: bump version' ./package.json --no-verify",
35
35
  "bump-version:patch": "yarn version --patch --no-git-tag-version --no-commit-hooks && git commit -m 'chore: bump version' ./package.json --no-verify",
36
36
  "typechain": "typechain --target ethers-v5 --out-dir src/utils/abi/typechain 'src/utils/abi/contracts/*.json' && eslint --fix src/utils/abi/typechain && yarn prettier --write \"src/utils/abi/typechain/**/*.ts\"",
37
- "yalc:watch": "nodemon --watch src --ext ts,tsx,json,js,jsx --ignore src/utils/abi/ --exec 'yalc publish --push --changed'"
37
+ "yalc:watch": "nodemon --watch src --ext ts,tsx,json,js,jsx --exec 'yalc push'"
38
38
  },
39
39
  "lint-staged": {
40
40
  "*.ts": "yarn lint"
@@ -1,6 +1,6 @@
1
1
  import assert from "assert";
2
2
  import { BytesLike, Contract, PopulatedTransaction, providers } from "ethers";
3
- import { CHAIN_IDs } from "../../constants";
3
+ import { CHAIN_IDs, SPOKEPOOL_UPGRADE_BLOCKS } from "../../constants";
4
4
  import {
5
5
  Deposit,
6
6
  FillStatus,
@@ -263,9 +263,6 @@ export async function findFillBlock(
263
263
  highBlockNumber?: number
264
264
  ): Promise<number | undefined> {
265
265
  const { provider } = spokePool;
266
- highBlockNumber ??= await provider.getBlockNumber();
267
- assert(highBlockNumber > lowBlockNumber, `Block numbers out of range (${lowBlockNumber} >= ${highBlockNumber})`);
268
-
269
266
  // In production the chainId returned from the provider matches 1:1 with the actual chainId. Querying the provider
270
267
  // object saves an RPC query because the chainId is cached by StaticJsonRpcProvider instances. In hre, the SpokePool
271
268
  // may be configured with a different chainId than what is returned by the provider.
@@ -277,6 +274,12 @@ export async function findFillBlock(
277
274
  `Origin & destination chain IDs must not be equal (${destinationChainId})`
278
275
  );
279
276
 
277
+ // For a subset of older SpokePools, their deployment ABIs did not include the fillStatus mapping.
278
+ // Bound any searches by the blocks where fillStatus was added.
279
+ lowBlockNumber = Math.max(lowBlockNumber, SPOKEPOOL_UPGRADE_BLOCKS[destinationChainId] ?? lowBlockNumber);
280
+ highBlockNumber ??= await provider.getBlockNumber();
281
+ assert(highBlockNumber > lowBlockNumber, `Block numbers out of range (${lowBlockNumber} >= ${highBlockNumber})`);
282
+
280
283
  // Make sure the relay was completed within the block range supplied by the caller.
281
284
  const [initialFillStatus, finalFillStatus] = (
282
285
  await Promise.all([
@@ -346,29 +349,33 @@ export async function findFillEvent(
346
349
  const destinationChainId = Object.values(CHAIN_IDs).includes(relayData.originChainId)
347
350
  ? (await spokePool.provider.getNetwork()).chainId
348
351
  : Number(await spokePool.chainId());
349
- const fillEvent = spreadEventWithBlockNumber(event) as FillWithBlock & {
352
+ const fillEvent = spreadEventWithBlockNumber(event) as Omit<
353
+ FillWithBlock,
354
+ "depositor" | "recipient" | "inputToken" | "outputToken" | "exclusiveRelayer" | "relayer"
355
+ > & {
350
356
  depositor: string;
351
357
  recipient: string;
352
358
  inputToken: string;
353
359
  outputToken: string;
354
360
  exclusiveRelayer: string;
355
361
  relayer: string;
356
- relayExecutionInfo: RelayExecutionEventInfo & { updatedRecipient: string };
362
+ relayExecutionInfo: Omit<RelayExecutionEventInfo, "updatedRecipient"> & { updatedRecipient: string };
357
363
  };
358
- const fill = {
364
+ const fill: FillWithBlock = {
359
365
  ...fillEvent,
360
366
  inputToken: toAddressType(fillEvent.inputToken, relayData.originChainId),
361
367
  outputToken: toAddressType(fillEvent.outputToken, destinationChainId),
362
368
  depositor: toAddressType(fillEvent.depositor, relayData.originChainId),
363
369
  recipient: toAddressType(fillEvent.recipient, destinationChainId),
364
370
  exclusiveRelayer: toAddressType(fillEvent.exclusiveRelayer, destinationChainId),
365
- relayer: toAddressType(fillEvent.relayer, destinationChainId),
371
+ relayer: toAddressType(fillEvent.relayer, fillEvent.repaymentChainId),
366
372
  relayExecutionInfo: {
367
373
  ...fillEvent.relayExecutionInfo,
368
374
  updatedRecipient: toAddressType(fillEvent.relayExecutionInfo.updatedRecipient, destinationChainId),
369
375
  },
370
376
  destinationChainId,
371
377
  messageHash: getMessageHash(event.args.message),
372
- } as FillWithBlock;
378
+ };
379
+
373
380
  return fill;
374
381
  }
@@ -16,6 +16,7 @@ import {
16
16
  Address,
17
17
  FetchAccountConfig,
18
18
  IAccountMeta,
19
+ IInstruction,
19
20
  KeyPairSigner,
20
21
  ReadonlyUint8Array,
21
22
  appendTransactionMessageInstruction,
@@ -31,6 +32,8 @@ import {
31
32
  signTransactionMessageWithSigners,
32
33
  some,
33
34
  type TransactionSigner,
35
+ type WritableAccount,
36
+ type ReadonlyAccount,
34
37
  type Commitment,
35
38
  } from "@solana/kit";
36
39
  import assert from "assert";
@@ -73,6 +76,10 @@ import {
73
76
  toAddress,
74
77
  unwrapEventData,
75
78
  getRootBundlePda,
79
+ getAcrossPlusMessageDecoder,
80
+ getAccountMeta,
81
+ getInstructionParamsPda,
82
+ type AcrossPlusMessage,
76
83
  toSvmRelayData,
77
84
  } from "./";
78
85
  import { SvmCpiEventsClient } from "./eventsClient";
@@ -479,26 +486,30 @@ export async function findFillEvent(
479
486
 
480
487
  if (fillEvents.length > 0) {
481
488
  const rawFillEvent = fillEvents[0];
482
- const eventData = unwrapEventData(rawFillEvent.data, ["depositId", "inputAmount"]) as FillWithBlock & {
489
+ const eventData = unwrapEventData(rawFillEvent.data, ["depositId", "inputAmount"]) as Omit<
490
+ FillWithBlock,
491
+ "depositor" | "recipient" | "inputToken" | "outputToken" | "exclusiveRelayer" | "relayer"
492
+ > & {
483
493
  depositor: string;
484
494
  recipient: string;
485
495
  inputToken: string;
486
496
  outputToken: string;
487
497
  exclusiveRelayer: string;
488
498
  relayer: string;
489
- relayExecutionInfo: RelayExecutionEventInfo & { updatedRecipient: string };
499
+ relayExecutionInfo: Omit<RelayExecutionEventInfo, "updatedRecipient"> & { updatedRecipient: string };
490
500
  };
491
501
  const originChainId = eventData.originChainId;
492
- const parsedFillEvent = {
502
+
503
+ const parsedFillEvent: FillWithBlock = {
493
504
  ...eventData,
494
- transactionHash: rawFillEvent.signature,
505
+ txnRef: rawFillEvent.signature,
495
506
  blockNumber: Number(rawFillEvent.slot),
496
- transactionIndex: 0,
507
+ txnIndex: 0,
497
508
  logIndex: 0,
498
509
  destinationChainId,
499
510
  inputToken: toAddressType(eventData.inputToken, originChainId),
500
511
  outputToken: toAddressType(eventData.outputToken, destinationChainId),
501
- relayer: toAddressType(eventData.relayer, destinationChainId),
512
+ relayer: toAddressType(eventData.relayer, eventData.repaymentChainId),
502
513
  exclusiveRelayer: toAddressType(eventData.exclusiveRelayer, destinationChainId),
503
514
  depositor: toAddressType(eventData.depositor, originChainId),
504
515
  recipient: toAddressType(eventData.recipient, destinationChainId),
@@ -506,7 +517,8 @@ export async function findFillEvent(
506
517
  ...eventData.relayExecutionInfo,
507
518
  updatedRecipient: eventData.relayExecutionInfo.updatedRecipient,
508
519
  },
509
- } as FillWithBlock;
520
+ };
521
+
510
522
  return parsedFillEvent;
511
523
  }
512
524
 
@@ -628,6 +640,21 @@ export async function getFillRelayTx(
628
640
  getAssociatedTokenAddress(SvmAddress.from(signer.address), relayData.outputToken, mintInfo.programAddress),
629
641
  ]);
630
642
 
643
+ // Add remaining accounts if the relayData has a non-empty message.
644
+ // @dev ! since in the context of creating a `fillRelayTx`, `relayData` must be defined.
645
+ const remainingAccounts: (WritableAccount | ReadonlyAccount)[] = [];
646
+ if (relayData.message !== "0x") {
647
+ const acrossPlusMessage = deserializeMessage(relayData.message);
648
+ // The first `remainingAccount` _must_ be the handler address.
649
+ // https://github.com/across-protocol/contracts/blob/3310f8dc716407a5f97ef5fd2eae63df83251f2f/programs/svm-spoke/src/utils/message_utils.rs#L36.
650
+ remainingAccounts.push(getAccountMeta(acrossPlusMessage.handler, true));
651
+ remainingAccounts.push(
652
+ ...acrossPlusMessage.accounts.map((account, idx) =>
653
+ getAccountMeta(account, idx < acrossPlusMessage.accounts.length - acrossPlusMessage.read_only_len)
654
+ )
655
+ );
656
+ }
657
+
631
658
  const fillInput: SvmSpokeClient.FillRelayInput = {
632
659
  signer: signer,
633
660
  state,
@@ -648,7 +675,108 @@ export async function getFillRelayTx(
648
675
  };
649
676
  // Pass createRecipientAtaIfNeeded =true to the createFillInstruction function to create the recipient token account
650
677
  // if it doesn't exist.
651
- return createFillInstruction(signer, solanaClient, fillInput, mintInfo.data.decimals, true);
678
+ return createFillInstruction(
679
+ signer,
680
+ solanaClient,
681
+ fillInput,
682
+ svmRelayData,
683
+ mintInfo.data.decimals,
684
+ true,
685
+ remainingAccounts
686
+ );
687
+ }
688
+
689
+ /**
690
+ * Creates a fill instruction with an instruction params PDA as the relayData input.
691
+ * @param spokePoolAddr Address of the spoke pool we're trying to fill through
692
+ * @param solanaClient RPC client to interact with Solana chain
693
+ * @param relayData RelayData instance, supplemented with destinationChainId
694
+ * @param signer signer associated with the relayer creating a Fill. Can be VoidSigner for gas estimation
695
+ * @param repaymentChainId Chain id where relayer repayment is desired
696
+ * @param repaymentAddress Address to which repayment will go to on repaymentChainId
697
+ * @returns FillRelay transaction
698
+ */
699
+ export async function getIPFillRelayTx(
700
+ spokePoolAddr: SvmAddress,
701
+ solanaClient: SVMProvider,
702
+ relayData: Omit<RelayData, "recipient" | "outputToken"> & {
703
+ destinationChainId: number;
704
+ recipient: SvmAddress;
705
+ outputToken: SvmAddress;
706
+ },
707
+ signer: TransactionSigner,
708
+ repaymentChainId: number,
709
+ repaymentAddress: SdkAddress
710
+ ) {
711
+ const program = toAddress(spokePoolAddr);
712
+ const _relayDataHash = getRelayDataHash(
713
+ { ...relayData, messageHash: getMessageHash(relayData.message) },
714
+ relayData.destinationChainId
715
+ );
716
+ const relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
717
+
718
+ const [state, delegate, instructionParams] = await Promise.all([
719
+ getStatePda(program),
720
+ getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), toAddress(repaymentAddress), program),
721
+ getInstructionParamsPda(program, signer.address),
722
+ ]);
723
+
724
+ const mint = toAddress(relayData.outputToken);
725
+ const mintInfo = await getMintInfo(solanaClient, mint);
726
+
727
+ const [recipientAta, relayerAta, fillStatus, eventAuthority] = await Promise.all([
728
+ getAssociatedTokenAddress(relayData.recipient, relayData.outputToken, mintInfo.programAddress),
729
+ getAssociatedTokenAddress(SvmAddress.from(signer.address), relayData.outputToken, mintInfo.programAddress),
730
+ getFillStatusPda(program, relayData, relayData.destinationChainId),
731
+ getEventAuthority(program),
732
+ ]);
733
+
734
+ // Add remaining accounts if the relayData has a non-empty message.
735
+ // @dev ! since in the context of creating a `fillRelayTx`, `relayData` must be defined.
736
+ const remainingAccounts: (WritableAccount | ReadonlyAccount)[] = [];
737
+ if (relayData.message !== "0x") {
738
+ const acrossPlusMessage = deserializeMessage(relayData.message);
739
+ // The first `remainingAccount` _must_ be the handler address.
740
+ // https://github.com/across-protocol/contracts/blob/3310f8dc716407a5f97ef5fd2eae63df83251f2f/programs/svm-spoke/src/utils/message_utils.rs#L36.
741
+ remainingAccounts.push(getAccountMeta(acrossPlusMessage.handler, true));
742
+ remainingAccounts.push(
743
+ ...acrossPlusMessage.accounts.map((account, idx) =>
744
+ getAccountMeta(account, idx < acrossPlusMessage.accounts.length - acrossPlusMessage.read_only_len)
745
+ )
746
+ );
747
+ }
748
+
749
+ const fillInput: SvmSpokeClient.FillRelayInput = {
750
+ signer: signer,
751
+ state,
752
+ delegate,
753
+ mint,
754
+ relayerTokenAccount: relayerAta,
755
+ recipientTokenAccount: recipientAta,
756
+ fillStatus,
757
+ tokenProgram: mintInfo.programAddress,
758
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
759
+ systemProgram: SYSTEM_PROGRAM_ADDRESS,
760
+ eventAuthority,
761
+ program,
762
+ instructionParams,
763
+ relayHash: relayDataHash,
764
+ relayData: null,
765
+ repaymentChainId: null,
766
+ repaymentAddress: null,
767
+ };
768
+
769
+ // Pass createRecipientAtaIfNeeded =true to the createFillInstruction function to create the recipient token account
770
+ // if it doesn't exist.
771
+ return createFillInstruction(
772
+ signer,
773
+ solanaClient,
774
+ fillInput,
775
+ { outputAmount: relayData.outputAmount.toBigInt(), recipient: toAddress(relayData.recipient) },
776
+ mintInfo.data.decimals,
777
+ true,
778
+ remainingAccounts
779
+ );
652
780
  }
653
781
 
654
782
  /**
@@ -664,8 +792,10 @@ export const createFillInstruction = async (
664
792
  signer: TransactionSigner,
665
793
  solanaClient: SVMProvider,
666
794
  fillInput: SvmSpokeClient.FillRelayInput,
795
+ relayData: Pick<SvmSpokeClient.RelayDataArgs, "outputAmount" | "recipient">,
667
796
  tokenDecimals: number,
668
- createRecipientAtaIfNeeded: boolean = true
797
+ createRecipientAtaIfNeeded: boolean = true,
798
+ remainingAccounts: (WritableAccount | ReadonlyAccount)[] = []
669
799
  ) => {
670
800
  const mintInfo = await getMintInfo(solanaClient, fillInput.mint);
671
801
  const approveIx = getApproveCheckedInstruction(
@@ -674,7 +804,7 @@ export const createFillInstruction = async (
674
804
  mint: fillInput.mint,
675
805
  delegate: fillInput.delegate,
676
806
  owner: fillInput.signer,
677
- amount: (fillInput.relayData as SvmSpokeClient.RelayDataArgs).outputAmount,
807
+ amount: relayData.outputAmount,
678
808
  decimals: tokenDecimals,
679
809
  },
680
810
  {
@@ -685,7 +815,7 @@ export const createFillInstruction = async (
685
815
  const getCreateAssociatedTokenIdempotentIx = () =>
686
816
  getCreateAssociatedTokenIdempotentInstruction({
687
817
  payer: signer,
688
- owner: (fillInput.relayData as SvmSpokeClient.RelayDataArgs).recipient,
818
+ owner: relayData.recipient,
689
819
  mint: fillInput.mint,
690
820
  ata: fillInput.recipientTokenAccount,
691
821
  systemProgram: SYSTEM_PROGRAM_ADDRESS,
@@ -694,6 +824,9 @@ export const createFillInstruction = async (
694
824
 
695
825
  const createFillIx = SvmSpokeClient.getFillRelayInstruction(fillInput);
696
826
 
827
+ // Add remaining accounts.
828
+ createFillIx.accounts.push(...remainingAccounts);
829
+
697
830
  return pipe(
698
831
  await createDefaultTransaction(solanaClient, signer),
699
832
  (tx) =>
@@ -703,6 +836,14 @@ export const createFillInstruction = async (
703
836
  );
704
837
  };
705
838
 
839
+ export function deserializeMessage(_message: string): AcrossPlusMessage {
840
+ const message = new Uint8Array(Buffer.from(_message.startsWith("0x") ? _message.slice(2) : _message, "hex"));
841
+ // Add remaining accounts if the relayData has a non-empty message.
842
+ // @dev ! since in the context of creating a `fillRelayTx`, `relayData` must be defined.
843
+ const acrossPlusMessageDecoder = getAcrossPlusMessageDecoder();
844
+ return acrossPlusMessageDecoder.decode(message);
845
+ }
846
+
706
847
  /**
707
848
  * Creates a deposit instruction.
708
849
  * @param signer - The signer of the transaction.
@@ -972,6 +1113,53 @@ async function fetchBatchFillStatusFromPdaAccounts(
972
1113
  return fillStatuses;
973
1114
  }
974
1115
 
1116
+ /**
1117
+ * Returns a set of instructions to execute to fill a relay via instruction params.
1118
+ * @param spokePool The program ID of the Solana spoke pool.
1119
+ * @param relayData The relay data to write to the instruction params PDA.
1120
+ * @param signer The transaction signer and authority of the instruction params PDA.
1121
+ * @param maxWriteSize The maximum fragment size to write to instruction params.
1122
+ */
1123
+ export async function getFillRelayViaInstructionParamsInstructions(
1124
+ spokePool: Address<string>,
1125
+ relayData: RelayData,
1126
+ repaymentChainId: number,
1127
+ repaymentAddress: SdkAddress,
1128
+ signer: TransactionSigner<string>,
1129
+ maxWriteSize = 450
1130
+ ): Promise<IInstruction[]> {
1131
+ const instructionParams = await getInstructionParamsPda(spokePool, signer.address);
1132
+
1133
+ const relayDataEncoder = SvmSpokeClient.getFillRelayParamsEncoder();
1134
+ const svmRelayData = toSvmRelayData(relayData);
1135
+ const encodedRelayData = relayDataEncoder.encode({
1136
+ relayData: svmRelayData,
1137
+ repaymentChainId,
1138
+ repaymentAddress: toAddress(repaymentAddress),
1139
+ });
1140
+
1141
+ const initInstructionParamsIx = SvmSpokeClient.getInitializeInstructionParamsInstruction({
1142
+ signer,
1143
+ instructionParams,
1144
+ totalSize: encodedRelayData.length,
1145
+ });
1146
+ const instructions: IInstruction[] = [initInstructionParamsIx];
1147
+
1148
+ for (let i = 0; i <= encodedRelayData.length / maxWriteSize; ++i) {
1149
+ const offset = i * maxWriteSize;
1150
+ const offsetEnd = Math.min(offset + maxWriteSize, encodedRelayData.length);
1151
+ const fragment = encodedRelayData.slice(offset, offsetEnd);
1152
+ const writeInstructionParamsIx = SvmSpokeClient.getWriteInstructionParamsFragmentInstruction({
1153
+ signer,
1154
+ instructionParams,
1155
+ offset,
1156
+ fragment,
1157
+ });
1158
+ instructions.push(writeInstructionParamsIx);
1159
+ }
1160
+ return instructions;
1161
+ }
1162
+
975
1163
  /**
976
1164
  * Returns the delegate PDA for deposit.
977
1165
  */
@@ -0,0 +1,86 @@
1
+ import {
2
+ AccountRole,
3
+ addDecoderSizePrefix,
4
+ addEncoderSizePrefix,
5
+ getAddressDecoder,
6
+ getAddressEncoder,
7
+ getArrayEncoder,
8
+ getArrayDecoder,
9
+ getBytesDecoder,
10
+ getBytesEncoder,
11
+ getStructDecoder,
12
+ getStructEncoder,
13
+ getU8Decoder,
14
+ getU8Encoder,
15
+ getU32Decoder,
16
+ getU32Encoder,
17
+ getU64Decoder,
18
+ getU64Encoder,
19
+ type Address,
20
+ type Decoder,
21
+ type Encoder,
22
+ type ReadonlyUint8Array,
23
+ type WritableAccount,
24
+ type ReadonlyAccount,
25
+ } from "@solana/kit";
26
+
27
+ export type AcrossPlusMessage = {
28
+ handler: Address;
29
+ read_only_len: number;
30
+ value_amount: bigint;
31
+ accounts: Array<Address>;
32
+ handler_message: ReadonlyUint8Array;
33
+ };
34
+
35
+ export type CompiledIx = {
36
+ program_id_index: number;
37
+ account_key_indexes: Array<number>;
38
+ data: ReadonlyUint8Array;
39
+ };
40
+
41
+ export function getAcrossPlusMessageEncoder(): Encoder<AcrossPlusMessage> {
42
+ return getStructEncoder([
43
+ ["handler", getAddressEncoder()],
44
+ ["read_only_len", getU8Encoder()],
45
+ ["value_amount", getU64Encoder()],
46
+ ["accounts", getArrayEncoder(getAddressEncoder())],
47
+ ["handler_message", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],
48
+ ]);
49
+ }
50
+
51
+ export function getAcrossPlusMessageDecoder(): Decoder<AcrossPlusMessage> {
52
+ return getStructDecoder([
53
+ ["handler", getAddressDecoder()],
54
+ ["read_only_len", getU8Decoder()],
55
+ ["value_amount", getU64Decoder()],
56
+ ["accounts", getArrayDecoder(getAddressDecoder())],
57
+ ["handler_message", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],
58
+ ]);
59
+ }
60
+
61
+ export function getHandlerMessageEncoder(): Encoder<Array<CompiledIx>> {
62
+ return getArrayEncoder(getCompiledIxEncoder());
63
+ }
64
+
65
+ export function getCompiledIxEncoder(): Encoder<CompiledIx> {
66
+ return getStructEncoder([
67
+ ["program_id_index", getU8Encoder()],
68
+ ["account_key_indexes", getArrayEncoder(getU8Encoder())],
69
+ ["data", addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],
70
+ ]);
71
+ }
72
+
73
+ export function getCompiledIxDecoder(): Decoder<CompiledIx> {
74
+ return getStructDecoder([
75
+ ["program_id_index", getU8Decoder()],
76
+ ["account_key_indexes", getArrayDecoder(getU8Decoder())],
77
+ ["data", addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],
78
+ ]);
79
+ }
80
+
81
+ export function getAccountMeta(value: Address, isWritable: boolean): WritableAccount | ReadonlyAccount {
82
+ return Object.freeze({
83
+ address: value,
84
+ role: isWritable ? AccountRole.WRITABLE : AccountRole.READONLY,
85
+ });
86
+ }
@@ -5,3 +5,4 @@ export * from "./utils";
5
5
  export * from "./constants";
6
6
  export * from "./BlockUtils";
7
7
  export * from "./provider";
8
+ export * from "./encoders";
@@ -18,7 +18,6 @@ import {
18
18
  count2DDictionaryValues,
19
19
  count3DDictionaryValues,
20
20
  toAddressType,
21
- isDefined,
22
21
  } from "../../../utils";
23
22
  import {
24
23
  addLastRunningBalance,
@@ -154,15 +153,21 @@ export function _buildPoolRebalanceRoot(
154
153
  ([l2TokenAddress, { realizedLpFees: totalRealizedLpFee, totalRefundAmount }]) => {
155
154
  // If the repayment token and repayment chain ID do not map to a PoolRebalanceRoute graph, then
156
155
  // there are no relevant L1 running balances.
156
+ if (
157
+ !clients.hubPoolClient.l2TokenHasPoolRebalanceRoute(
158
+ toAddressType(l2TokenAddress, repaymentChainId),
159
+ repaymentChainId,
160
+ mainnetBundleEndBlock
161
+ )
162
+ ) {
163
+ chainWithRefundsOnly.add(repaymentChainId);
164
+ return;
165
+ }
157
166
  const l1Token = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
158
167
  toAddressType(l2TokenAddress, repaymentChainId),
159
168
  repaymentChainId,
160
169
  mainnetBundleEndBlock
161
170
  );
162
- if (!l1Token) {
163
- chainWithRefundsOnly.add(repaymentChainId);
164
- return;
165
- }
166
171
  const l1TokenAddr = l1Token.toNative();
167
172
  assert(l1Token.isEVM(), `Expected an EVM address: ${l1TokenAddr}`);
168
173
 
@@ -188,9 +193,6 @@ export function _buildPoolRebalanceRoot(
188
193
  destinationChainId,
189
194
  mainnetBundleEndBlock
190
195
  );
191
-
192
- assert(isDefined(l1TokenCounterpart), "getRefundInformationFromFill: l1TokenCounterpart is undefined");
193
-
194
196
  const lpFee = deposit.lpFeePct.mul(deposit.inputAmount).div(fixedPointAdjustment);
195
197
  updateRunningBalance(
196
198
  runningBalances,
@@ -220,8 +222,6 @@ export function _buildPoolRebalanceRoot(
220
222
  destinationChainId,
221
223
  mainnetBundleEndBlock
222
224
  );
223
- assert(isDefined(l1TokenCounterpart), "getRefundInformationFromFill: l1TokenCounterpart is undefined");
224
-
225
225
  const lpFee = deposit.lpFeePct.mul(deposit.inputAmount).div(fixedPointAdjustment);
226
226
  updateRunningBalance(
227
227
  runningBalances,
@@ -277,15 +277,21 @@ export function _buildPoolRebalanceRoot(
277
277
  deposits.forEach((deposit) => {
278
278
  // If the repayment token and repayment chain ID do not map to a PoolRebalanceRoute graph, then
279
279
  // there are no relevant L1 running balances.
280
+ if (
281
+ !clients.hubPoolClient.l2TokenHasPoolRebalanceRoute(
282
+ deposit.inputToken,
283
+ deposit.originChainId,
284
+ mainnetBundleEndBlock
285
+ )
286
+ ) {
287
+ chainWithRefundsOnly.add(deposit.originChainId);
288
+ return;
289
+ }
280
290
  const l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
281
291
  toAddressType(inputToken, originChainId),
282
292
  originChainId,
283
293
  mainnetBundleEndBlock
284
294
  );
285
- if (!l1TokenCounterpart) {
286
- chainWithRefundsOnly.add(deposit.originChainId);
287
- return;
288
- }
289
295
  updateRunningBalance(runningBalances, originChainId, l1TokenCounterpart.toEvmAddress(), deposit.inputAmount);
290
296
  });
291
297
  });