@across-protocol/sdk 4.3.3 → 4.3.5

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 (80) hide show
  1. package/dist/cjs/arch/svm/SpokeUtils.d.ts +13 -5
  2. package/dist/cjs/arch/svm/SpokeUtils.js +74 -5
  3. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  4. package/dist/cjs/arch/svm/utils.d.ts +6 -1
  5. package/dist/cjs/arch/svm/utils.js +67 -1
  6. package/dist/cjs/arch/svm/utils.js.map +1 -1
  7. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +22 -16
  8. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  9. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +2 -2
  10. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +45 -19
  11. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  12. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.d.ts +1 -1
  13. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +4 -3
  14. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  15. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.d.ts +1 -1
  16. package/dist/cjs/interfaces/SpokePool.d.ts +18 -0
  17. package/dist/cjs/interfaces/SpokePool.js.map +1 -1
  18. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.d.ts +2 -1
  19. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +7 -68
  20. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  21. package/dist/cjs/utils/AddressUtils.d.ts +2 -0
  22. package/dist/cjs/utils/AddressUtils.js +4 -0
  23. package/dist/cjs/utils/AddressUtils.js.map +1 -1
  24. package/dist/cjs/utils/DepositUtils.d.ts +3 -1
  25. package/dist/cjs/utils/DepositUtils.js +9 -1
  26. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  27. package/dist/esm/arch/svm/SpokeUtils.d.ts +23 -5
  28. package/dist/esm/arch/svm/SpokeUtils.js +86 -5
  29. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  30. package/dist/esm/arch/svm/utils.d.ts +20 -1
  31. package/dist/esm/arch/svm/utils.js +76 -1
  32. package/dist/esm/arch/svm/utils.js.map +1 -1
  33. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +24 -18
  34. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  35. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +2 -2
  36. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +55 -32
  37. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  38. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.d.ts +1 -1
  39. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +5 -4
  40. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  41. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.d.ts +1 -1
  42. package/dist/esm/interfaces/SpokePool.d.ts +18 -0
  43. package/dist/esm/interfaces/SpokePool.js.map +1 -1
  44. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.d.ts +2 -1
  45. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +9 -73
  46. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  47. package/dist/esm/utils/AddressUtils.d.ts +2 -0
  48. package/dist/esm/utils/AddressUtils.js +4 -0
  49. package/dist/esm/utils/AddressUtils.js.map +1 -1
  50. package/dist/esm/utils/DepositUtils.d.ts +15 -1
  51. package/dist/esm/utils/DepositUtils.js +19 -1
  52. package/dist/esm/utils/DepositUtils.js.map +1 -1
  53. package/dist/types/arch/svm/SpokeUtils.d.ts +23 -5
  54. package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
  55. package/dist/types/arch/svm/utils.d.ts +20 -1
  56. package/dist/types/arch/svm/utils.d.ts.map +1 -1
  57. package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -1
  58. package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +2 -2
  59. package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts.map +1 -1
  60. package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts +1 -1
  61. package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts.map +1 -1
  62. package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts +1 -1
  63. package/dist/types/interfaces/SpokePool.d.ts +18 -0
  64. package/dist/types/interfaces/SpokePool.d.ts.map +1 -1
  65. package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts +2 -1
  66. package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts.map +1 -1
  67. package/dist/types/utils/AddressUtils.d.ts +2 -0
  68. package/dist/types/utils/AddressUtils.d.ts.map +1 -1
  69. package/dist/types/utils/DepositUtils.d.ts +15 -1
  70. package/dist/types/utils/DepositUtils.d.ts.map +1 -1
  71. package/package.json +2 -2
  72. package/src/arch/svm/SpokeUtils.ts +97 -6
  73. package/src/arch/svm/utils.ts +61 -1
  74. package/src/clients/BundleDataClient/BundleDataClient.ts +12 -6
  75. package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +52 -29
  76. package/src/clients/mocks/MockSvmCpiEventsClient.ts +5 -3
  77. package/src/interfaces/SpokePool.ts +23 -0
  78. package/src/relayFeeCalculator/chain-queries/svmQuery.ts +7 -93
  79. package/src/utils/AddressUtils.ts +5 -0
  80. package/src/utils/DepositUtils.ts +49 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SpokePool.d.ts","sourceRoot":"","sources":["../../../src/interfaces/SpokePool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpokePool.d.ts","sourceRoot":"","sources":["../../../src/interfaces/SpokePool.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { TransactionSigner } from "@solana/kit";
1
2
  import { SVMProvider } from "../../arch/svm";
2
3
  import { RelayData } from "../../interfaces";
3
4
  import { Address, BigNumber, BigNumberish, SvmAddress, TransactionCostEstimate } from "../../utils";
@@ -72,7 +73,7 @@ export declare class SvmQuery implements QueryInterface {
72
73
  destinationChainId: number;
73
74
  recipient: SvmAddress;
74
75
  outputToken: SvmAddress;
75
- }, relayer: SvmAddress, repaymentChainId: number, repaymentAddress: Address): Promise<import("@solana/kit").TransactionMessageWithBlockhashLifetime & import("@solana/kit").ITransactionMessageWithFeePayerSigner<string, import("@solana/kit").TransactionSigner<string>> & Omit<Readonly<{
76
+ }, signer: TransactionSigner, repaymentChainId: number, repaymentAddress: Address): Promise<import("@solana/kit").TransactionMessageWithBlockhashLifetime & import("@solana/kit").ITransactionMessageWithFeePayerSigner<string, TransactionSigner<string>> & Omit<Readonly<{
76
77
  instructions: readonly import("@solana/kit").IInstruction<string, readonly (import("@solana/kit").IAccountLookupMeta<string, string> | import("@solana/kit").IAccountMeta<string>)[]>[];
77
78
  version: 0;
78
79
  }>, "feePayer">>;
@@ -1 +1 @@
1
- {"version":3,"file":"svmQuery.d.ts","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/svmQuery.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,WAAW,EASZ,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,uBAAuB,EAGxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;AAEvC;;;GAGG;AACH,qBAAa,QAAS,YAAW,cAAc;IAe3C,QAAQ,CAAC,QAAQ,EAAE,WAAW;IAC9B,QAAQ,CAAC,aAAa,EAAE,iBAAiB;IACzC,QAAQ,CAAC,SAAS,EAAE,UAAU;IAC9B,QAAQ,CAAC,uBAAuB,EAAE,UAAU;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,kBAAkB,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC;IACvB,QAAQ,CAAC,qBAAqB,EAAE,MAAM;IArBxC,SAAS,CAAC,oBAAoB;;;;;;sEAAC;IAE/B;;;;;;;;;;OAUG;gBAEQ,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,iBAAiB,EAChC,SAAS,EAAE,UAAU,EACrB,uBAAuB,EAAE,UAAU,EACnC,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,oBAAQ,EAC3B,aAAa,CAAC,0BAAc,EAC5B,qBAAqB,GAAE,MAAc;IAOhD;;;;;;;;;OASG;IACG,WAAW,CACf,SAAS,EAAE,SAAS,GAAG;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,EACrD,OAAO,UAAkD,EACzD,OAAO,GAAE,OAAO,CAAC;QACf,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,EAAE,YAAY,CAAC;QACvB,iBAAiB,EAAE,SAAS,CAAC;QAC7B,qBAAqB,EAAE,SAAS,CAAC;KAClC,CAAM,GACN,OAAO,CAAC,uBAAuB,CAAC;IAqCnC;;;;;OAKG;IACG,gBAAgB,CACpB,OAAO,EAAE,SAAS,GAAG;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,EACnD,OAAO,UAAgD,GACtD,OAAO,CAAC,SAAS,CAAC;IAiBrB;;;;;OAKG;cACa,cAAc,CAC5B,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC,GAAG;QACvD,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,UAAU,CAAC;QACtB,WAAW,EAAE,UAAU,CAAC;KACzB,EACD,OAAO,EAAE,UAAU,EACnB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,OAAO;;;;IAqE3B;;;;OAIG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzD;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAI9C"}
1
+ {"version":3,"file":"svmQuery.d.ts","sourceRoot":"","sources":["../../../../src/relayFeeCalculator/chain-queries/svmQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAsD,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,WAAW,EAAoC,MAAM,gBAAgB,CAAC;AAI/E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAQ,MAAM,aAAa,CAAC;AAC1G,OAAO,EAAE,MAAM,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;AAEvC;;;GAGG;AACH,qBAAa,QAAS,YAAW,cAAc;IAe3C,QAAQ,CAAC,QAAQ,EAAE,WAAW;IAC9B,QAAQ,CAAC,aAAa,EAAE,iBAAiB;IACzC,QAAQ,CAAC,SAAS,EAAE,UAAU;IAC9B,QAAQ,CAAC,uBAAuB,EAAE,UAAU;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,kBAAkB,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC;IACvB,QAAQ,CAAC,qBAAqB,EAAE,MAAM;IArBxC,SAAS,CAAC,oBAAoB;;;;;;sEAAC;IAE/B;;;;;;;;;;OAUG;gBAEQ,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,iBAAiB,EAChC,SAAS,EAAE,UAAU,EACrB,uBAAuB,EAAE,UAAU,EACnC,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,oBAAQ,EAC3B,aAAa,CAAC,0BAAc,EAC5B,qBAAqB,GAAE,MAAc;IAOhD;;;;;;;;;OASG;IACG,WAAW,CACf,SAAS,EAAE,SAAS,GAAG;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,EACrD,OAAO,UAAkD,EACzD,OAAO,GAAE,OAAO,CAAC;QACf,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,EAAE,YAAY,CAAC;QACvB,iBAAiB,EAAE,SAAS,CAAC;QAC7B,qBAAqB,EAAE,SAAS,CAAC;KAClC,CAAM,GACN,OAAO,CAAC,uBAAuB,CAAC;IAqCnC;;;;;OAKG;IACG,gBAAgB,CACpB,OAAO,EAAE,SAAS,GAAG;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,EACnD,OAAO,UAAgD,GACtD,OAAO,CAAC,SAAS,CAAC;IAiBrB;;;;;OAKG;cACa,cAAc,CAC5B,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC,GAAG;QACvD,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,UAAU,CAAC;QACtB,WAAW,EAAE,UAAU,CAAC;KACzB,EACD,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,OAAO;;;;IAK3B;;;;OAIG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzD;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAI9C"}
@@ -21,12 +21,14 @@ export declare function isValidEvmAddress(address: string): boolean;
21
21
  */
22
22
  export declare function toAddressType(address: string, chainId: number): Address;
23
23
  export declare abstract class Address {
24
+ readonly __address_type_brand = true;
24
25
  readonly rawAddress: Uint8Array;
25
26
  evmAddress: string | undefined;
26
27
  bytes32Address: string | undefined;
27
28
  svmAddress: string | undefined;
28
29
  bnAddress: BigNumber | undefined;
29
30
  constructor(_rawAddress: Uint8Array);
31
+ static isAddress(obj: unknown): obj is Address;
30
32
  toBytes32(): string;
31
33
  truncateToBytes20(): string;
32
34
  toBase58(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"AddressUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/AddressUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAS,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,SAAS,EAA0B,MAAM,IAAI,CAAC;AAEvD;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CASjH;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAY/E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAKpF;AAKD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AAID,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAc1D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAOvE;AAID,8BAAsB,OAAO;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAGhC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAa;IAC3C,cAAc,EAAE,MAAM,GAAG,SAAS,CAAa;IAC/C,UAAU,EAAE,MAAM,GAAG,SAAS,CAAa;IAC3C,SAAS,EAAE,SAAS,GAAG,SAAS,CAAa;gBAEjC,WAAW,EAAE,UAAU;IAanC,SAAS,IAAI,MAAM;IAMnB,iBAAiB,IAAI,MAAM;IAQ3B,QAAQ,IAAI,MAAM;IAKlB,OAAO,CAAC,WAAW;IAMnB,YAAY,IAAI,MAAM;IAWtB,QAAQ,IAAI,MAAM;IAKlB,WAAW,IAAI,MAAM;IAKrB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnC,QAAQ,IAAI,MAAM;IAKlB,aAAa,IAAI,OAAO;IAKxB,eAAe,IAAI,UAAU;IAK7B,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAM3B,OAAO,CAAC,YAAY,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IAc1C,KAAK,IAAI,IAAI,IAAI,UAAU;IAI3B,KAAK,IAAI,IAAI,IAAI,UAAU;CAG5B;AAGD,qBAAa,UAAW,SAAQ,OAAO;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAGnB,UAAU,EAAE,UAAU;IASlC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAMvC,KAAK,IAAI,IAAI,IAAI,UAAU;IAK3B,QAAQ,IAAI,MAAM;IAK3B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAQ,GAAG,QAAmB,GAAG,UAAU;CAGnF;AAGD,qBAAa,UAAW,SAAQ,OAAO;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAGnB,UAAU,EAAE,UAAU;IASlC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAUvC,KAAK,IAAI,IAAI,IAAI,UAAU;IAM3B,QAAQ,IAAI,MAAM;IAK3B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAQ,GAAG,QAAmB,GAAG,UAAU;CAGnF;AAED,qBAAa,UAAW,SAAQ,OAAO;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,UAAU,EAAE,UAAU;CAInC"}
1
+ {"version":3,"file":"AddressUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/AddressUtils.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { SpokePoolClient } from "../clients";
2
- import { CachingMechanismInterface, Deposit, DepositWithBlock, Fill, RelayData, SlowFillRequest } from "../interfaces";
2
+ import { CachingMechanismInterface, Deposit, DepositWithBlock, Fill, RelayData, SlowFillRequest, ConvertedRelayData, ConvertedFill } from "../interfaces";
3
3
  export declare enum InvalidFill {
4
4
  DepositIdInvalid = 0,
5
5
  DepositIdNotFound = 1,
@@ -77,4 +77,18 @@ export declare function isDepositSpedUp(deposit: Deposit): boolean;
77
77
  * @returns Original or updated message string, depending on whether the depositor updated the deposit.
78
78
  */
79
79
  export declare function resolveDepositMessage(deposit: Deposit): string;
80
+ /**
81
+ * Converts a RelayData object with `Address` types as address fields to a `RelayData`-like object with
82
+ * strings as address fields.
83
+ * @param relayData RelayData type.
84
+ * @returns a RelayData-like type which has strings as fields.
85
+ */
86
+ export declare function convertRelayDataParamsToBytes32(relayData: RelayData): ConvertedRelayData;
87
+ /**
88
+ * Converts a Fill object with `Address` types as address fields to a `RelayData`-like object with
89
+ * strings as address fields.
90
+ * @param relayData RelayData type.
91
+ * @returns a RelayData-like type which has strings as fields.
92
+ */
93
+ export declare function convertFillParamsToBytes32(fill: Fill): ConvertedFill;
80
94
  //# sourceMappingURL=DepositUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DepositUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/DepositUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAavH,oBAAY,WAAW;IACrB,gBAAgB,IAAI;IACpB,iBAAiB,IAAA;IACjB,YAAY,IAAA;IACZ,mBAAmB,IAAA;CACpB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;;;;;;;;;GAWG;AAEH,wBAAsB,6BAA6B,CACjD,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,GAAG,eAAe,EAC5B,KAAK,CAAC,EAAE,yBAAyB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAkF9B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GACrF,MAAM,CAkBR;AAoBD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,EAC3F,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,GAAG,aAAa,CAAC,GAC1E;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkBpD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,CAAC,GAAG,OAAO,CAE/F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,OAAO,CAGnF;AAED,wBAAgB,gCAAgC,CAC9C,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,eAAe,EAAE,aAAa,GAAG,aAAa,CAAC,GAC7D,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAgB,GAAG,OAAO,CAE/D;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAI9D"}
1
+ {"version":3,"file":"DepositUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/DepositUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EACL,yBAAyB,EACzB,OAAO,EACP,gBAAgB,EAChB,IAAI,EACJ,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,aAAa,EACd,MAAM,eAAe,CAAC;AAavB,oBAAY,WAAW;IACrB,gBAAgB,IAAI;IACpB,iBAAiB,IAAA;IACjB,YAAY,IAAA;IACZ,mBAAmB,IAAA;CACpB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;;;;;;;;;GAWG;AAEH,wBAAsB,6BAA6B,CACjD,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,GAAG,eAAe,EAC5B,KAAK,CAAC,EAAE,yBAAyB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAkF9B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GACrF,MAAM,CAkBR;AAoBD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,EAC3F,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,GAAG,aAAa,CAAC,GAC1E;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkBpD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,CAAC,GAAG,OAAO,CAE/F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,OAAO,CAGnF;AAED,wBAAgB,gCAAgC,CAC9C,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,eAAe,EAAE,aAAa,GAAG,aAAa,CAAC,GAC7D,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAgB,GAAG,OAAO,CAE/D;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAI9D;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB,CASxF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAcpE"}
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.3",
4
+ "version": "4.3.5",
5
5
  "license": "AGPL-3.0",
6
6
  "homepage": "https://docs.across.to/reference/sdk",
7
7
  "files": [
@@ -106,7 +106,7 @@
106
106
  "dependencies": {
107
107
  "@across-protocol/across-token": "^1.0.0",
108
108
  "@across-protocol/constants": "^3.1.68",
109
- "@across-protocol/contracts": "^4.0.12",
109
+ "@across-protocol/contracts": "^4.1.0",
110
110
  "@coral-xyz/anchor": "^0.30.1",
111
111
  "@eth-optimism/sdk": "^3.3.1",
112
112
  "@ethersproject/bignumber": "^5.7.0",
@@ -1,5 +1,6 @@
1
1
  import { SvmSpokeClient } from "@across-protocol/contracts";
2
2
  import { decodeFillStatusAccount, fetchState } from "@across-protocol/contracts/dist/src/svm/clients/SvmSpoke";
3
+ import { intToU8Array32 } from "@across-protocol/contracts/dist/src/svm/web3-v1/conversionUtils";
3
4
  import { hashNonEmptyMessage } from "@across-protocol/contracts/dist/src/svm/web3-v1";
4
5
  import {
5
6
  ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
@@ -18,6 +19,7 @@ import {
18
19
  getU32Encoder,
19
20
  getU64Encoder,
20
21
  pipe,
22
+ ReadonlyUint8Array,
21
23
  some,
22
24
  type TransactionSigner,
23
25
  } from "@solana/kit";
@@ -39,6 +41,7 @@ import {
39
41
  } from "../../utils";
40
42
  import {
41
43
  SvmCpiEventsClient,
44
+ bigToU8a32,
42
45
  createDefaultTransaction,
43
46
  getEventAuthority,
44
47
  getFillStatusPda,
@@ -447,7 +450,7 @@ export async function fillRelayInstruction(
447
450
  exclusiveRelayer,
448
451
  inputToken,
449
452
  outputToken,
450
- inputAmount: relayData.inputAmount.toBigInt(),
453
+ inputAmount: bigToU8a32(relayData.inputAmount.toBigInt()),
451
454
  outputAmount: relayData.outputAmount.toBigInt(),
452
455
  originChainId: BigInt(relayData.originChainId),
453
456
  fillDeadline: relayData.fillDeadline,
@@ -475,6 +478,94 @@ export function createTokenAccountsInstruction(
475
478
  });
476
479
  }
477
480
 
481
+ /**
482
+ * @notice Return the fillRelay transaction for a given deposit
483
+ * @param spokePoolAddr Address of the spoke pool we're trying to fill through
484
+ * @param solanaClient RPC client to interact with Solana chain
485
+ * @param relayData RelayData instance, supplemented with destinationChainId
486
+ * @param signer signer associated with the relayer creating a Fill. Can be VoidSigner for gas estimation
487
+ * @param repaymentChainId Chain id where relayer repayment is desired
488
+ * @param repaymentAddress Address to which repayment will go to on repaymentChainId
489
+ * @returns FillRelay transaction
490
+ */
491
+ export async function getFillRelayTx(
492
+ spokePoolAddr: SvmAddress,
493
+ solanaClient: SVMProvider,
494
+ relayData: Omit<RelayData, "recipent" | "outputToken"> & {
495
+ destinationChainId: number;
496
+ recipient: SvmAddress;
497
+ outputToken: SvmAddress;
498
+ },
499
+ signer: TransactionSigner,
500
+ repaymentChainId: number,
501
+ repaymentAddress: SdkAddress
502
+ ) {
503
+ const { depositor, recipient, inputToken, outputToken, exclusiveRelayer, destinationChainId } = relayData;
504
+
505
+ // tsc appeasement...should be unnecessary, but isn't. @todo Identify why.
506
+ assert(recipient.isSVM(), `getFillRelayTx: recipient not an SVM address (${recipient})`);
507
+ assert(
508
+ repaymentAddress.isValidOn(repaymentChainId),
509
+ `getFillRelayTx: repayment address ${repaymentAddress} not valid on chain ${repaymentChainId})`
510
+ );
511
+
512
+ const program = toAddress(spokePoolAddr);
513
+ const _relayDataHash = getRelayDataHash(relayData, destinationChainId);
514
+ const relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
515
+
516
+ const [state, delegate] = await Promise.all([
517
+ getStatePda(program),
518
+ getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), toAddress(repaymentAddress), program),
519
+ ]);
520
+
521
+ const mint = toAddress(outputToken);
522
+ const mintInfo = await fetchMint(solanaClient, mint);
523
+
524
+ const [recipientAta, relayerAta, fillStatus, eventAuthority] = await Promise.all([
525
+ getAssociatedTokenAddress(recipient, outputToken, mintInfo.programAddress),
526
+ getAssociatedTokenAddress(SvmAddress.from(signer.address), outputToken, mintInfo.programAddress),
527
+ getFillStatusPda(program, relayData, destinationChainId),
528
+ getEventAuthority(program),
529
+ ]);
530
+
531
+ const svmRelayData: SvmSpokeClient.FillRelayInput["relayData"] = {
532
+ depositor: toAddress(depositor),
533
+ recipient: toAddress(recipient),
534
+ exclusiveRelayer: toAddress(exclusiveRelayer),
535
+ inputToken: toAddress(inputToken),
536
+ outputToken: mint,
537
+ inputAmount: bigToU8a32(relayData.inputAmount.toBigInt()),
538
+ outputAmount: relayData.outputAmount.toBigInt(),
539
+ originChainId: relayData.originChainId,
540
+ depositId: new Uint8Array(intToU8Array32(relayData.depositId.toNumber())),
541
+ fillDeadline: relayData.fillDeadline,
542
+ exclusivityDeadline: relayData.exclusivityDeadline,
543
+ message: new Uint8Array(Buffer.from(relayData.message, "hex")),
544
+ };
545
+
546
+ const fillInput: SvmSpokeClient.FillRelayInput = {
547
+ signer: signer,
548
+ state,
549
+ delegate,
550
+ mint,
551
+ relayerTokenAccount: relayerAta,
552
+ recipientTokenAccount: recipientAta,
553
+ fillStatus,
554
+ tokenProgram: mintInfo.programAddress,
555
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
556
+ systemProgram: SYSTEM_PROGRAM_ADDRESS,
557
+ eventAuthority,
558
+ program,
559
+ relayHash: relayDataHash,
560
+ relayData: svmRelayData,
561
+ repaymentChainId: BigInt(repaymentChainId),
562
+ repaymentAddress: toAddress(repaymentAddress),
563
+ };
564
+ // Pass createRecipientAtaIfNeeded =true to the createFillInstruction function to create the recipient token account
565
+ // if it doesn't exist.
566
+ return createFillInstruction(signer, solanaClient, fillInput, mintInfo.data.decimals, true);
567
+ }
568
+
478
569
  /**
479
570
  * Creates a fill instruction.
480
571
  * @param signer - The signer of the transaction.
@@ -643,7 +734,7 @@ export function getRelayDataHash(relayData: RelayData, destinationChainId: numbe
643
734
  encodeAddress(relayData.exclusiveRelayer),
644
735
  encodeAddress(relayData.inputToken),
645
736
  encodeAddress(relayData.outputToken),
646
- Uint8Array.from(uint64Encoder.encode(BigInt(relayData.inputAmount.toString()))),
737
+ arrayify(hexZeroPad(hexlify(relayData.inputAmount), 32)),
647
738
  Uint8Array.from(uint64Encoder.encode(BigInt(relayData.outputAmount.toString()))),
648
739
  Uint8Array.from(uint64Encoder.encode(BigInt(relayData.originChainId.toString()))),
649
740
  arrayify(hexZeroPad(hexlify(relayData.depositId), 32)),
@@ -751,7 +842,7 @@ export async function getDepositDelegatePda(
751
842
  inputToken: Address<string>;
752
843
  outputToken: Address<string>;
753
844
  inputAmount: bigint;
754
- outputAmount: bigint;
845
+ outputAmount: ReadonlyUint8Array;
755
846
  destinationChainId: bigint;
756
847
  exclusiveRelayer: Address<string>;
757
848
  quoteTimestamp: bigint;
@@ -771,7 +862,7 @@ export async function getDepositDelegatePda(
771
862
  Uint8Array.from(addrEnc.encode(depositData.inputToken)),
772
863
  Uint8Array.from(addrEnc.encode(depositData.outputToken)),
773
864
  Uint8Array.from(u64.encode(depositData.inputAmount)),
774
- Uint8Array.from(u64.encode(depositData.outputAmount)),
865
+ Uint8Array.from(depositData.outputAmount),
775
866
  Uint8Array.from(u64.encode(depositData.destinationChainId)),
776
867
  Uint8Array.from(addrEnc.encode(depositData.exclusiveRelayer)),
777
868
  Uint8Array.from(u32.encode(depositData.quoteTimestamp)),
@@ -801,7 +892,7 @@ export async function getDepositNowDelegatePda(
801
892
  inputToken: Address<string>;
802
893
  outputToken: Address<string>;
803
894
  inputAmount: bigint;
804
- outputAmount: bigint;
895
+ outputAmount: ReadonlyUint8Array;
805
896
  destinationChainId: bigint;
806
897
  exclusiveRelayer: Address<string>;
807
898
  fillDeadlineOffset: bigint;
@@ -820,7 +911,7 @@ export async function getDepositNowDelegatePda(
820
911
  Uint8Array.from(addrEnc.encode(depositData.inputToken)),
821
912
  Uint8Array.from(addrEnc.encode(depositData.outputToken)),
822
913
  Uint8Array.from(u64.encode(depositData.inputAmount)),
823
- Uint8Array.from(u64.encode(depositData.outputAmount)),
914
+ Uint8Array.from(depositData.outputAmount),
824
915
  Uint8Array.from(u64.encode(depositData.destinationChainId)),
825
916
  Uint8Array.from(addrEnc.encode(depositData.exclusiveRelayer)),
826
917
  Uint8Array.from(u32.encode(depositData.fillDeadlineOffset)),
@@ -17,7 +17,7 @@ import {
17
17
  } from "@solana/kit";
18
18
  import { SvmSpokeClient } from "@across-protocol/contracts";
19
19
  import { FillType, RelayData } from "../../interfaces";
20
- import { BigNumber, getRelayDataHash, isUint8Array, Address as SdkAddress } from "../../utils";
20
+ import { BigNumber, getRelayDataHash, isDefined, isUint8Array, Address as SdkAddress } from "../../utils";
21
21
  import { EventName, SVMEventNames, SVMProvider } from "./types";
22
22
 
23
23
  /**
@@ -49,6 +49,35 @@ export function toAddress(address: SdkAddress): Address<string> {
49
49
  return address.toBase58() as Address<string>;
50
50
  }
51
51
 
52
+ /**
53
+ * Resolve the latest finalized slot, and then work backwards to find the nearest slot containing a block.
54
+ * In most cases the first-resolved slot should also have a block. Avoid making arbitrary decisions about
55
+ * how many slots to rotate through.
56
+ */
57
+ export async function getLatestFinalizedSlotWithBlock(
58
+ provider: SVMProvider,
59
+ maxSlot: bigint,
60
+ maxLookback = 1000
61
+ ): Promise<number> {
62
+ const finalizedSlot = await provider.getSlot({ commitment: "finalized" }).send();
63
+ const endSlot = Math.min(Number(maxSlot), Number(finalizedSlot));
64
+ const opts = { maxSupportedTransactionVersion: 0, transactionDetails: "none", rewards: false } as const;
65
+
66
+ let slot = BigInt(endSlot);
67
+ do {
68
+ const block = await provider.getBlock(slot, opts).send();
69
+ if (isDefined(block) && [block.blockHeight, block.blockTime].every(isDefined)) {
70
+ break;
71
+ }
72
+ } while (--maxLookback > 0 && --slot > 0);
73
+
74
+ if (maxLookback === 0) {
75
+ throw new Error(`Unable to find Solana block between slots [${slot}, ${endSlot}]`);
76
+ }
77
+
78
+ return Number(slot);
79
+ }
80
+
52
81
  /**
53
82
  * Parses event data from a transaction.
54
83
  */
@@ -276,6 +305,21 @@ export async function getInstructionParamsPda(programId: Address, signer: Addres
276
305
  return pda;
277
306
  }
278
307
 
308
+ /**
309
+ * Returns the PDA for an individual's claim account.
310
+ * @param programId the address of the spoke pool.
311
+ * @param mint the address of the token.
312
+ * @param tokenOwner the address of the signer which owns the claim account.
313
+ */
314
+ export async function getClaimAccountPda(programId: Address, mint: Address, tokenOwner: Address): Promise<Address> {
315
+ const addressEncoder = getAddressEncoder();
316
+ const [pda] = await getProgramDerivedAddress({
317
+ programAddress: programId,
318
+ seeds: ["claim_account", addressEncoder.encode(mint), addressEncoder.encode(tokenOwner)],
319
+ });
320
+ return pda;
321
+ }
322
+
279
323
  /**
280
324
  * Returns the PDA for the Event Authority.
281
325
  * @returns The PDA for the Event Authority.
@@ -311,3 +355,19 @@ export const createDefaultTransaction = async (rpcClient: SVMProvider, signer: T
311
355
  (tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx)
312
356
  );
313
357
  };
358
+
359
+ /**
360
+ * Convert a bigint (0 ≤ n < 2^256) to a 32-byte Uint8Array (big-endian).
361
+ */
362
+ export function bigintToU8a32(n: bigint): Uint8Array {
363
+ if (n < BigInt(0) || n > ethers.constants.MaxUint256.toBigInt()) {
364
+ throw new RangeError("Value must fit in 256 bits");
365
+ }
366
+ const hexPadded = ethers.utils.hexZeroPad("0x" + n.toString(16), 32);
367
+ return ethers.utils.arrayify(hexPadded);
368
+ }
369
+
370
+ export const bigToU8a32 = (bn: bigint | BigNumber) =>
371
+ bigintToU8a32(typeof bn === "bigint" ? bn : BigInt(bn.toString()));
372
+
373
+ export const numberToU8a32 = (n: number) => bigintToU8a32(BigInt(n));
@@ -44,6 +44,8 @@ import {
44
44
  Address,
45
45
  getNetworkName,
46
46
  toBytes32,
47
+ convertRelayDataParamsToBytes32,
48
+ convertFillParamsToBytes32,
47
49
  } from "../../utils";
48
50
  import winston from "winston";
49
51
  import {
@@ -549,7 +551,7 @@ export class BundleDataClient {
549
551
 
550
552
  // @dev: If spoke pool client is undefined for a chain, then the end block will be null or undefined, which
551
553
  // should be handled gracefully and effectively cause this function to ignore refunds for the chain.
552
- let widestBundleBlockRanges = getWidestPossibleExpectedBlockRange(
554
+ let widestBundleBlockRanges = await getWidestPossibleExpectedBlockRange(
553
555
  chainIds,
554
556
  this.spokePoolClientManager.getSpokePoolClients(),
555
557
  getEndBlockBuffers(chainIds, this.blockRangeEndBlockBuffer),
@@ -923,7 +925,7 @@ export class BundleDataClient {
923
925
  this.logger.debug({
924
926
  at: "BundleDataClient#loadData",
925
927
  message: "Duplicate deposit detected",
926
- deposit,
928
+ deposit: convertRelayDataParamsToBytes32(deposit),
927
929
  });
928
930
  throw new Error("Duplicate deposit detected");
929
931
  }
@@ -1052,7 +1054,7 @@ export class BundleDataClient {
1052
1054
  this.logger.debug({
1053
1055
  at: "BundleDataClient#loadData",
1054
1056
  message: "Duplicate fill detected",
1055
- fill,
1057
+ fill: convertFillParamsToBytes32(fill),
1056
1058
  });
1057
1059
  throw new Error("Duplicate fill detected");
1058
1060
  }
@@ -1604,9 +1606,13 @@ export class BundleDataClient {
1604
1606
  at: "BundleDataClient#loadData",
1605
1607
  message: "Finished loading V3 spoke pool data and found some invalid fills in range",
1606
1608
  blockRangesForChains,
1607
- invalidFillsWithPartialMatchedDeposits,
1608
- preFillsForNextBundle,
1609
- unknownReasonInvalidFills,
1609
+ invalidFillsWithPartialMatchedDeposits: invalidFillsWithPartialMatchedDeposits.map((invalidFill) =>
1610
+ convertFillParamsToBytes32(invalidFill)
1611
+ ),
1612
+ preFillsForNextBundle: preFillsForNextBundle.map((preFill) => convertFillParamsToBytes32(preFill)),
1613
+ unknownReasonInvalidFills: unknownReasonInvalidFills.map((invalidFill) =>
1614
+ convertFillParamsToBytes32(invalidFill)
1615
+ ),
1610
1616
  });
1611
1617
  }
1612
1618
 
@@ -1,7 +1,8 @@
1
1
  import { MerkleTree } from "@across-protocol/contracts/dist/utils/MerkleTree";
2
2
  import { RunningBalances, PoolRebalanceLeaf, Clients, SpokePoolTargetBalance } from "../../../interfaces";
3
- import { SpokePoolClient } from "../../SpokePoolClient";
4
- import { BigNumber, bnZero, compareAddresses, EvmAddress } from "../../../utils";
3
+ import { isSVMSpokePoolClient, SpokePoolClient } from "../../SpokePoolClient";
4
+ import { BigNumber, bnZero, chainIsEvm, chainIsSvm, compareAddresses, EvmAddress } from "../../../utils";
5
+ import { getLatestFinalizedSlotWithBlock } from "../../../arch/svm";
5
6
  import { HubPoolClient } from "../../HubPoolClient";
6
7
  import { V3DepositWithBlock } from "./shims";
7
8
  import { AcrossConfigStoreClient } from "../../AcrossConfigStoreClient";
@@ -18,25 +19,51 @@ export type PoolRebalanceRoot = {
18
19
  // when evaluating pending root bundle. The block end numbers must be less than the latest blocks for each chain ID
19
20
  // (because we can't evaluate events in the future), and greater than the expected start blocks, which are the
20
21
  // greater of 0 and the latest bundle end block for an executed root bundle proposal + 1.
21
- export function getWidestPossibleExpectedBlockRange(
22
- chainIdListForBundleEvaluationBlockNumbers: number[],
22
+ export async function getWidestPossibleExpectedBlockRange(
23
+ chainIds: number[],
23
24
  spokeClients: { [chainId: number]: SpokePoolClient },
24
25
  endBlockBuffers: number[],
25
26
  clients: Clients,
26
27
  latestMainnetBlock: number,
27
28
  enabledChains: number[]
28
- ): number[][] {
29
+ ): Promise<number[][]> {
29
30
  // We impose a buffer on the head of the chain to increase the probability that the received blocks are final.
30
31
  // Reducing the latest block that we query also gives partially filled deposits slightly more buffer for relayers
31
32
  // to fully fill the deposit and reduces the chance that the data worker includes a slow fill payment that gets
32
33
  // filled during the challenge period.
33
- const latestPossibleBundleEndBlockNumbers = chainIdListForBundleEvaluationBlockNumbers.map(
34
- (chainId: number, index) =>
35
- spokeClients[chainId] && Math.max(spokeClients[chainId].latestHeightSearched - endBlockBuffers[index], 0)
34
+ const resolveEndBlock = (chainId: number, idx: number): number =>
35
+ Math.max(spokeClients[chainId].latestHeightSearched - endBlockBuffers[idx], 0);
36
+
37
+ // Across bundles are bounded by slots on Solana. The UMIP requires that the bundle end slot is backed by a block.
38
+ const resolveSVMEndBlock = (chainId: number, idx: number): Promise<number> => {
39
+ const spokePoolClient = spokeClients[chainId];
40
+ assert(isSVMSpokePoolClient(spokePoolClient));
41
+
42
+ const maxSlot = resolveEndBlock(chainId, idx); // Respect any configured buffer for Solana.
43
+ return getLatestFinalizedSlotWithBlock(spokePoolClient.svmEventsClient.getRpc(), BigInt(maxSlot));
44
+ };
45
+
46
+ const latestPossibleBundleEndBlockNumbers = await Promise.all(
47
+ chainIds.map((chainId, idx) => {
48
+ if (!enabledChains.includes(chainId)) {
49
+ return -1; // Chain is disabled; end block is redundant and will be overridden later.
50
+ }
51
+
52
+ if (chainIsEvm(chainId)) {
53
+ return Promise.resolve(resolveEndBlock(chainId, idx));
54
+ }
55
+
56
+ if (chainIsSvm(chainId)) {
57
+ return resolveSVMEndBlock(chainId, idx);
58
+ }
59
+
60
+ assert(false, `Unsupported chainId: ${chainId}`);
61
+ })
36
62
  );
37
- return chainIdListForBundleEvaluationBlockNumbers.map((chainId: number, index) => {
63
+
64
+ return chainIds.map((chainId: number, index) => {
38
65
  const lastEndBlockForChain = clients.hubPoolClient.getLatestBundleEndBlockForChain(
39
- chainIdListForBundleEvaluationBlockNumbers,
66
+ chainIds,
40
67
  latestMainnetBlock,
41
68
  chainId
42
69
  );
@@ -45,26 +72,22 @@ export function getWidestPossibleExpectedBlockRange(
45
72
  // and end block.
46
73
  if (!enabledChains.includes(chainId)) {
47
74
  return [lastEndBlockForChain, lastEndBlockForChain];
48
- } else {
49
- // If the latest block hasn't advanced enough from the previous proposed end block, then re-use it. It will
50
- // be regarded as disabled by the Dataworker clients. Otherwise, add 1 to the previous proposed end block.
51
- if (lastEndBlockForChain >= latestPossibleBundleEndBlockNumbers[index]) {
52
- // @dev: Without this check, then `getNextBundleStartBlockNumber` could return `latestBlock+1` even when the
53
- // latest block for the chain hasn't advanced, resulting in an invalid range being produced.
54
- return [lastEndBlockForChain, lastEndBlockForChain];
55
- } else {
56
- // Chain has advanced far enough including the buffer, return range from previous proposed end block + 1 to
57
- // latest block for chain minus buffer.
58
- return [
59
- clients.hubPoolClient.getNextBundleStartBlockNumber(
60
- chainIdListForBundleEvaluationBlockNumbers,
61
- latestMainnetBlock,
62
- chainId
63
- ),
64
- latestPossibleBundleEndBlockNumbers[index],
65
- ];
66
- }
67
75
  }
76
+
77
+ // If the latest block hasn't advanced enough from the previous proposed end block, then re-use it. It will
78
+ // be regarded as disabled by the Dataworker clients. Otherwise, add 1 to the previous proposed end block.
79
+ if (lastEndBlockForChain >= latestPossibleBundleEndBlockNumbers[index]) {
80
+ // @dev: Without this check, then `getNextBundleStartBlockNumber` could return `latestBlock+1` even when the
81
+ // latest block for the chain hasn't advanced, resulting in an invalid range being produced.
82
+ return [lastEndBlockForChain, lastEndBlockForChain];
83
+ }
84
+
85
+ // Chain has advanced far enough including the buffer, return range from previous proposed end block + 1 to
86
+ // latest block for chain minus buffer.
87
+ return [
88
+ clients.hubPoolClient.getNextBundleStartBlockNumber(chainIds, latestMainnetBlock, chainId),
89
+ latestPossibleBundleEndBlockNumbers[index],
90
+ ];
68
91
  });
69
92
  }
70
93
 
@@ -17,6 +17,7 @@ import {
17
17
  SVMEventNames,
18
18
  SVMProvider,
19
19
  getRandomSvmAddress,
20
+ bigToU8a32,
20
21
  } from "../../arch/svm";
21
22
  import { bnZero, bnOne, bs58, getCurrentTime, randomAddress, EvmAddress, SvmAddress } from "../../utils";
22
23
  import { FillType } from "../../interfaces";
@@ -82,7 +83,7 @@ export class MockSvmCpiEventsClient extends SvmCpiEventsClient {
82
83
  const inputToken = deposit.inputToken ?? getRandomSvmAddress();
83
84
  const outputToken = deposit.outputToken ?? SvmAddress.from(randomBytes(32), "base16").toBase58();
84
85
  inputAmount ??= BigInt(random(1, 1000, false));
85
- outputAmount ??= (inputAmount * BigInt(95)) / BigInt(100);
86
+ outputAmount ??= bigToU8a32((inputAmount * BigInt(95)) / BigInt(100));
86
87
  const message = deposit.message ?? new Uint8Array(32);
87
88
  const quoteTimestamp = deposit.quoteTimestamp ?? getCurrentTime();
88
89
 
@@ -114,8 +115,9 @@ export class MockSvmCpiEventsClient extends SvmCpiEventsClient {
114
115
  const { slot } = fill;
115
116
  let { depositId, inputAmount, outputAmount, fillDeadline } = fill;
116
117
  depositId ??= arrayify(hexZeroPad(hexlify(random(1, 100_000, false)), 32));
117
- inputAmount ??= BigInt(random(1, 1000, false));
118
- outputAmount ??= (inputAmount * BigInt(95)) / BigInt(100);
118
+ const inputAmountBigInt = BigInt(random(1, 1000, false));
119
+ inputAmount ??= bigToU8a32(inputAmountBigInt);
120
+ outputAmount ??= (inputAmountBigInt * BigInt(95)) / BigInt(100);
119
121
  fillDeadline ??= getCurrentTime() + 60;
120
122
 
121
123
  const depositor = fill.depositor ?? EvmAddress.from(randomAddress()).toBase58();
@@ -18,6 +18,15 @@ export interface RelayData {
18
18
  exclusivityDeadline: number;
19
19
  }
20
20
 
21
+ export interface ConvertedRelayData
22
+ extends Omit<RelayData, "depositor" | "recipient" | "inputToken" | "outputToken" | "exclusiveRelayer"> {
23
+ depositor: string;
24
+ recipient: string;
25
+ inputToken: string;
26
+ outputToken: string;
27
+ exclusiveRelayer: string;
28
+ }
29
+
21
30
  export interface SpeedUpCommon {
22
31
  updatedRecipient: Address;
23
32
  updatedOutputAmount: BigNumber;
@@ -69,6 +78,20 @@ export interface Fill extends Omit<RelayData, "message"> {
69
78
  relayExecutionInfo: RelayExecutionEventInfo;
70
79
  }
71
80
 
81
+ export interface ConvertedFill
82
+ extends Omit<
83
+ Fill,
84
+ "depositor" | "recipient" | "inputToken" | "outputToken" | "exclusiveRelayer" | "relayer" | "relayExecutionInfo"
85
+ > {
86
+ depositor: string;
87
+ recipient: string;
88
+ inputToken: string;
89
+ outputToken: string;
90
+ exclusiveRelayer: string;
91
+ relayer: string;
92
+ relayExecutionInfo: Omit<RelayExecutionEventInfo, "updatedRecipient"> & { updatedRecipient: string };
93
+ }
94
+
72
95
  export interface FillWithBlock extends Fill, SortableEvent {}
73
96
  export interface FillWithTime extends Fill, SortableEvent {
74
97
  fillTimestamp: number;