@across-protocol/sdk 4.1.18 → 4.1.21

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 (193) hide show
  1. package/dist/cjs/caching/Memory/MemoryCacheClient.d.ts +6 -0
  2. package/dist/cjs/caching/Memory/MemoryCacheClient.js +32 -0
  3. package/dist/cjs/caching/Memory/MemoryCacheClient.js.map +1 -0
  4. package/dist/cjs/caching/Memory/index.d.ts +1 -0
  5. package/dist/cjs/caching/Memory/index.js +5 -0
  6. package/dist/cjs/caching/Memory/index.js.map +1 -0
  7. package/dist/cjs/caching/index.d.ts +1 -0
  8. package/dist/cjs/caching/index.js +1 -0
  9. package/dist/cjs/caching/index.js.map +1 -1
  10. package/dist/cjs/clients/HubPoolClient.d.ts +1 -1
  11. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  12. package/dist/cjs/clients/SpokePoolClient.d.ts +2 -1
  13. package/dist/cjs/clients/SpokePoolClient.js +61 -71
  14. package/dist/cjs/clients/SpokePoolClient.js.map +1 -1
  15. package/dist/cjs/index.d.ts +1 -0
  16. package/dist/cjs/index.js +2 -1
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js +2 -1
  19. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  20. package/dist/cjs/providers/cachedProvider.js +24 -20
  21. package/dist/cjs/providers/cachedProvider.js.map +1 -1
  22. package/dist/cjs/providers/solana/baseRpcFactories.d.ts +2 -2
  23. package/dist/cjs/providers/solana/baseRpcFactories.js +2 -2
  24. package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
  25. package/dist/cjs/providers/solana/cachedRpcFactory.d.ts +16 -0
  26. package/dist/cjs/providers/solana/cachedRpcFactory.js +121 -0
  27. package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -0
  28. package/dist/cjs/providers/solana/defaultRpcFactory.d.ts +1 -1
  29. package/dist/cjs/providers/solana/defaultRpcFactory.js +2 -2
  30. package/dist/cjs/providers/solana/defaultRpcFactory.js.map +1 -1
  31. package/dist/cjs/providers/solana/index.d.ts +1 -0
  32. package/dist/cjs/providers/solana/index.js +1 -0
  33. package/dist/cjs/providers/solana/index.js.map +1 -1
  34. package/dist/cjs/providers/solana/rateLimitedRpcFactory.d.ts +2 -2
  35. package/dist/cjs/svm/eventsClient.d.ts +15 -0
  36. package/dist/cjs/svm/eventsClient.js +164 -0
  37. package/dist/cjs/svm/eventsClient.js.map +1 -0
  38. package/dist/cjs/svm/index.d.ts +1 -0
  39. package/dist/cjs/svm/index.js +5 -0
  40. package/dist/cjs/svm/index.js.map +1 -0
  41. package/dist/cjs/svm/types.d.ts +29 -0
  42. package/dist/cjs/svm/types.js +21 -0
  43. package/dist/cjs/svm/types.js.map +1 -0
  44. package/dist/cjs/svm/utils/events.d.ts +3 -0
  45. package/dist/cjs/svm/utils/events.js +38 -0
  46. package/dist/cjs/svm/utils/events.js.map +1 -0
  47. package/dist/cjs/svm/utils/helpers.d.ts +2 -0
  48. package/dist/cjs/svm/utils/helpers.js +19 -0
  49. package/dist/cjs/svm/utils/helpers.js.map +1 -0
  50. package/dist/cjs/utils/DepositUtils.js +2 -3
  51. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  52. package/dist/cjs/utils/JSONUtils.d.ts +2 -0
  53. package/dist/cjs/utils/JSONUtils.js +9 -1
  54. package/dist/cjs/utils/JSONUtils.js.map +1 -1
  55. package/dist/cjs/utils/SpokeUtils.d.ts +9 -0
  56. package/dist/cjs/utils/SpokeUtils.js +29 -1
  57. package/dist/cjs/utils/SpokeUtils.js.map +1 -1
  58. package/dist/cjs/utils/index.d.ts +0 -1
  59. package/dist/cjs/utils/index.js +0 -1
  60. package/dist/cjs/utils/index.js.map +1 -1
  61. package/dist/esm/caching/Memory/MemoryCacheClient.d.ts +9 -0
  62. package/dist/esm/caching/Memory/MemoryCacheClient.js +32 -0
  63. package/dist/esm/caching/Memory/MemoryCacheClient.js.map +1 -0
  64. package/dist/esm/caching/Memory/index.d.ts +1 -0
  65. package/dist/esm/caching/Memory/index.js +2 -0
  66. package/dist/esm/caching/Memory/index.js.map +1 -0
  67. package/dist/esm/caching/index.d.ts +1 -0
  68. package/dist/esm/caching/index.js +1 -0
  69. package/dist/esm/caching/index.js.map +1 -1
  70. package/dist/esm/clients/HubPoolClient.d.ts +1 -1
  71. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  72. package/dist/esm/clients/SpokePoolClient.d.ts +2 -1
  73. package/dist/esm/clients/SpokePoolClient.js +61 -70
  74. package/dist/esm/clients/SpokePoolClient.js.map +1 -1
  75. package/dist/esm/index.d.ts +1 -0
  76. package/dist/esm/index.js +2 -0
  77. package/dist/esm/index.js.map +1 -1
  78. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js +2 -1
  79. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  80. package/dist/esm/providers/cachedProvider.js +24 -20
  81. package/dist/esm/providers/cachedProvider.js.map +1 -1
  82. package/dist/esm/providers/solana/baseRpcFactories.d.ts +2 -2
  83. package/dist/esm/providers/solana/baseRpcFactories.js +1 -1
  84. package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
  85. package/dist/esm/providers/solana/cachedRpcFactory.d.ts +16 -0
  86. package/dist/esm/providers/solana/cachedRpcFactory.js +128 -0
  87. package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -0
  88. package/dist/esm/providers/solana/defaultRpcFactory.d.ts +1 -1
  89. package/dist/esm/providers/solana/defaultRpcFactory.js +1 -1
  90. package/dist/esm/providers/solana/defaultRpcFactory.js.map +1 -1
  91. package/dist/esm/providers/solana/index.d.ts +1 -0
  92. package/dist/esm/providers/solana/index.js +1 -0
  93. package/dist/esm/providers/solana/index.js.map +1 -1
  94. package/dist/esm/providers/solana/rateLimitedRpcFactory.d.ts +2 -2
  95. package/dist/esm/svm/eventsClient.d.ts +51 -0
  96. package/dist/esm/svm/eventsClient.js +202 -0
  97. package/dist/esm/svm/eventsClient.js.map +1 -0
  98. package/dist/esm/svm/index.d.ts +1 -0
  99. package/dist/esm/svm/index.js +2 -0
  100. package/dist/esm/svm/index.js.map +1 -0
  101. package/dist/esm/svm/types.d.ts +29 -0
  102. package/dist/esm/svm/types.js +18 -0
  103. package/dist/esm/svm/types.js.map +1 -0
  104. package/dist/esm/svm/utils/events.d.ts +9 -0
  105. package/dist/esm/svm/utils/events.js +43 -0
  106. package/dist/esm/svm/utils/events.js.map +1 -0
  107. package/dist/esm/svm/utils/helpers.d.ts +5 -0
  108. package/dist/esm/svm/utils/helpers.js +18 -0
  109. package/dist/esm/svm/utils/helpers.js.map +1 -0
  110. package/dist/esm/utils/DepositUtils.js +1 -2
  111. package/dist/esm/utils/DepositUtils.js.map +1 -1
  112. package/dist/esm/utils/JSONUtils.d.ts +8 -0
  113. package/dist/esm/utils/JSONUtils.js +12 -0
  114. package/dist/esm/utils/JSONUtils.js.map +1 -1
  115. package/dist/esm/utils/SpokeUtils.d.ts +9 -0
  116. package/dist/esm/utils/SpokeUtils.js +34 -1
  117. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  118. package/dist/esm/utils/index.d.ts +0 -1
  119. package/dist/esm/utils/index.js +0 -1
  120. package/dist/esm/utils/index.js.map +1 -1
  121. package/dist/types/caching/Memory/MemoryCacheClient.d.ts +10 -0
  122. package/dist/types/caching/Memory/MemoryCacheClient.d.ts.map +1 -0
  123. package/dist/types/caching/Memory/index.d.ts +2 -0
  124. package/dist/types/caching/Memory/index.d.ts.map +1 -0
  125. package/dist/types/caching/index.d.ts +1 -0
  126. package/dist/types/caching/index.d.ts.map +1 -1
  127. package/dist/types/clients/HubPoolClient.d.ts +1 -1
  128. package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
  129. package/dist/types/clients/SpokePoolClient.d.ts +2 -1
  130. package/dist/types/clients/SpokePoolClient.d.ts.map +1 -1
  131. package/dist/types/index.d.ts +1 -0
  132. package/dist/types/index.d.ts.map +1 -1
  133. package/dist/types/lpFeeCalculator/lpFeeCalculator.d.ts.map +1 -1
  134. package/dist/types/providers/cachedProvider.d.ts.map +1 -1
  135. package/dist/types/providers/solana/baseRpcFactories.d.ts +2 -2
  136. package/dist/types/providers/solana/baseRpcFactories.d.ts.map +1 -1
  137. package/dist/types/providers/solana/cachedRpcFactory.d.ts +17 -0
  138. package/dist/types/providers/solana/cachedRpcFactory.d.ts.map +1 -0
  139. package/dist/types/providers/solana/defaultRpcFactory.d.ts +1 -1
  140. package/dist/types/providers/solana/defaultRpcFactory.d.ts.map +1 -1
  141. package/dist/types/providers/solana/index.d.ts +1 -0
  142. package/dist/types/providers/solana/index.d.ts.map +1 -1
  143. package/dist/types/providers/solana/rateLimitedRpcFactory.d.ts +2 -2
  144. package/dist/types/providers/solana/rateLimitedRpcFactory.d.ts.map +1 -1
  145. package/dist/types/svm/eventsClient.d.ts +52 -0
  146. package/dist/types/svm/eventsClient.d.ts.map +1 -0
  147. package/dist/types/svm/index.d.ts +2 -0
  148. package/dist/types/svm/index.d.ts.map +1 -0
  149. package/dist/types/svm/types.d.ts +30 -0
  150. package/dist/types/svm/types.d.ts.map +1 -0
  151. package/dist/types/svm/utils/events.d.ts +10 -0
  152. package/dist/types/svm/utils/events.d.ts.map +1 -0
  153. package/dist/types/svm/utils/helpers.d.ts +6 -0
  154. package/dist/types/svm/utils/helpers.d.ts.map +1 -0
  155. package/dist/types/utils/DepositUtils.d.ts.map +1 -1
  156. package/dist/types/utils/JSONUtils.d.ts +8 -0
  157. package/dist/types/utils/JSONUtils.d.ts.map +1 -1
  158. package/dist/types/utils/SpokeUtils.d.ts +9 -0
  159. package/dist/types/utils/SpokeUtils.d.ts.map +1 -1
  160. package/dist/types/utils/index.d.ts +0 -1
  161. package/dist/types/utils/index.d.ts.map +1 -1
  162. package/package.json +9 -4
  163. package/src/caching/Memory/MemoryCacheClient.ts +35 -0
  164. package/src/caching/Memory/index.ts +1 -0
  165. package/src/caching/index.ts +1 -0
  166. package/src/clients/HubPoolClient.ts +2 -2
  167. package/src/clients/SpokePoolClient.ts +16 -17
  168. package/src/index.ts +1 -0
  169. package/src/lpFeeCalculator/lpFeeCalculator.ts +6 -1
  170. package/src/providers/cachedProvider.ts +34 -31
  171. package/src/providers/solana/baseRpcFactories.ts +1 -1
  172. package/src/providers/solana/cachedRpcFactory.ts +124 -0
  173. package/src/providers/solana/defaultRpcFactory.ts +1 -1
  174. package/src/providers/solana/index.ts +1 -0
  175. package/src/providers/solana/rateLimitedRpcFactory.ts +2 -2
  176. package/src/svm/eventsClient.ts +205 -0
  177. package/src/svm/index.ts +1 -0
  178. package/src/svm/types.ts +47 -0
  179. package/src/svm/utils/events.ts +46 -0
  180. package/src/svm/utils/helpers.ts +9 -0
  181. package/src/utils/DepositUtils.ts +1 -2
  182. package/src/utils/JSONUtils.ts +14 -0
  183. package/src/utils/SpokeUtils.ts +42 -1
  184. package/src/utils/index.ts +0 -1
  185. package/dist/cjs/utils/FlowUtils.d.ts +0 -11
  186. package/dist/cjs/utils/FlowUtils.js +0 -34
  187. package/dist/cjs/utils/FlowUtils.js.map +0 -1
  188. package/dist/esm/utils/FlowUtils.d.ts +0 -11
  189. package/dist/esm/utils/FlowUtils.js +0 -36
  190. package/dist/esm/utils/FlowUtils.js.map +0 -1
  191. package/dist/types/utils/FlowUtils.d.ts +0 -12
  192. package/dist/types/utils/FlowUtils.d.ts.map +0 -1
  193. package/src/utils/FlowUtils.ts +0 -44
@@ -5,8 +5,7 @@ import { CachingMechanismInterface, Deposit, DepositWithBlock, Fill, SlowFillReq
5
5
  import { getNetworkName } from "./NetworkUtils";
6
6
  import { bnZero } from "./BigNumberUtils";
7
7
  import { getDepositInCache, getDepositKey, setDepositInCache } from "./CachingUtils";
8
- import { validateFillForDeposit } from "./FlowUtils";
9
- import { getMessageHash, isUnsafeDepositId } from "./SpokeUtils";
8
+ import { getMessageHash, isUnsafeDepositId, validateFillForDeposit } from "./SpokeUtils";
10
9
  import { getCurrentTime } from "./TimeUtils";
11
10
  import { isDefined } from "./TypeGuards";
12
11
  import { isDepositFormedCorrectly } from "./ValidatorUtils";
@@ -83,3 +83,17 @@ export function jsonReviverWithBigNumbers(_key: string, value: unknown): unknown
83
83
  }
84
84
  return value;
85
85
  }
86
+
87
+ /**
88
+ * A replacer for `JSON.stringify` that converts BigInt to a decimal string with 'n' suffix.
89
+ */
90
+ export function jsonReplacerWithBigInts(_key: string, value: unknown): unknown {
91
+ return typeof value === "bigint" ? value.toString() + "n" : value;
92
+ }
93
+
94
+ /**
95
+ * A reviver for `JSON.parse` that converts strings ending in 'n' back to BigInt.
96
+ */
97
+ export function jsonReviverWithBigInts(_key: string, value: unknown): unknown {
98
+ return typeof value === "string" && /^-?\d+n$/.test(value) ? BigInt(value.slice(0, -1)) : value;
99
+ }
@@ -1,6 +1,6 @@
1
1
  import assert from "assert";
2
2
  import { BytesLike, Contract, PopulatedTransaction, providers, utils as ethersUtils } from "ethers";
3
- import { CHAIN_IDs, MAX_SAFE_DEPOSIT_ID, ZERO_ADDRESS, ZERO_BYTES } from "../constants";
3
+ import { CHAIN_IDs, MAX_SAFE_DEPOSIT_ID, UNDEFINED_MESSAGE_HASH, ZERO_ADDRESS, ZERO_BYTES } from "../constants";
4
4
  import { Deposit, FillStatus, FillWithBlock, RelayData } from "../interfaces";
5
5
  import { SpokePoolClient } from "../clients";
6
6
  import { chunk } from "./ArrayUtils";
@@ -88,6 +88,47 @@ export function getRelayEventKey(
88
88
  .join("-");
89
89
  }
90
90
 
91
+ const RELAYDATA_KEYS = [
92
+ "depositId",
93
+ "originChainId",
94
+ "destinationChainId",
95
+ "depositor",
96
+ "recipient",
97
+ "inputToken",
98
+ "inputAmount",
99
+ "outputToken",
100
+ "outputAmount",
101
+ "fillDeadline",
102
+ "exclusivityDeadline",
103
+ "exclusiveRelayer",
104
+ "messageHash",
105
+ ] as const;
106
+
107
+ // Ensure that each deposit element is included with the same value in the fill. This includes all elements defined
108
+ // by the depositor as well as destinationToken, which are pulled from other clients.
109
+ export function validateFillForDeposit(
110
+ relayData: Omit<RelayData, "message"> & { messageHash: string; destinationChainId: number },
111
+ deposit?: Omit<Deposit, "quoteTimestamp" | "fromLiteChain" | "toLiteChain">
112
+ ): { valid: true } | { valid: false; reason: string } {
113
+ if (deposit === undefined) {
114
+ return { valid: false, reason: "Deposit is undefined" };
115
+ }
116
+
117
+ // Note: this short circuits when a key is found where the comparison doesn't match.
118
+ // TODO: if we turn on "strict" in the tsconfig, the elements of FILL_DEPOSIT_COMPARISON_KEYS will be automatically
119
+ // validated against the fields in Fill and Deposit, generating an error if there is a discrepency.
120
+ let invalidKey = RELAYDATA_KEYS.find((key) => relayData[key].toString() !== deposit[key].toString());
121
+
122
+ // There should be no paths for `messageHash` to be unset, but mask it off anyway.
123
+ if (!isDefined(invalidKey) && [relayData.messageHash, deposit.messageHash].includes(UNDEFINED_MESSAGE_HASH)) {
124
+ invalidKey = "messageHash";
125
+ }
126
+
127
+ return isDefined(invalidKey)
128
+ ? { valid: false, reason: `${invalidKey} mismatch (${relayData[invalidKey]} != ${deposit[invalidKey]})` }
129
+ : { valid: true };
130
+ }
131
+
91
132
  /**
92
133
  * Find the block range that contains the deposit ID. This is a binary search that searches for the block range
93
134
  * that contains the deposit ID.
@@ -9,7 +9,6 @@ export * from "./TypeGuards";
9
9
  export * from "./TypeUtils";
10
10
  export * from "./TokenUtils";
11
11
  export * from "./LogUtils";
12
- export * from "./FlowUtils";
13
12
  export * from "./BundleUtils";
14
13
  export * from "./JSONUtils";
15
14
  export * from "./IPFSUtils";
@@ -1,11 +0,0 @@
1
- import { Deposit, RelayData } from "../interfaces";
2
- export declare const RELAYDATA_KEYS: readonly ["depositId", "originChainId", "destinationChainId", "depositor", "recipient", "inputToken", "inputAmount", "outputToken", "outputAmount", "fillDeadline", "exclusivityDeadline", "exclusiveRelayer", "messageHash"];
3
- export declare function validateFillForDeposit(relayData: Omit<RelayData, "message"> & {
4
- messageHash: string;
5
- destinationChainId: number;
6
- }, deposit?: Omit<Deposit, "quoteTimestamp" | "fromLiteChain" | "toLiteChain">): {
7
- valid: true;
8
- } | {
9
- valid: false;
10
- reason: string;
11
- };
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateFillForDeposit = exports.RELAYDATA_KEYS = void 0;
4
- var utils_1 = require("../utils");
5
- var constants_1 = require("../constants");
6
- exports.RELAYDATA_KEYS = [
7
- "depositId",
8
- "originChainId",
9
- "destinationChainId",
10
- "depositor",
11
- "recipient",
12
- "inputToken",
13
- "inputAmount",
14
- "outputToken",
15
- "outputAmount",
16
- "fillDeadline",
17
- "exclusivityDeadline",
18
- "exclusiveRelayer",
19
- "messageHash",
20
- ];
21
- function validateFillForDeposit(relayData, deposit) {
22
- if (deposit === undefined) {
23
- return { valid: false, reason: "Deposit is undefined" };
24
- }
25
- var invalidKey = exports.RELAYDATA_KEYS.find(function (key) { return relayData[key].toString() !== deposit[key].toString(); });
26
- if (!(0, utils_1.isDefined)(invalidKey) && [relayData.messageHash, deposit.messageHash].includes(constants_1.UNDEFINED_MESSAGE_HASH)) {
27
- invalidKey = "messageHash";
28
- }
29
- return (0, utils_1.isDefined)(invalidKey)
30
- ? { valid: false, reason: "".concat(invalidKey, " mismatch (").concat(relayData[invalidKey], " != ").concat(deposit[invalidKey], ")") }
31
- : { valid: true };
32
- }
33
- exports.validateFillForDeposit = validateFillForDeposit;
34
- //# sourceMappingURL=FlowUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FlowUtils.js","sourceRoot":"","sources":["../../../src/utils/FlowUtils.ts"],"names":[],"mappings":";;;AAAA,kCAAqC;AAErC,0CAAsD;AAEzC,QAAA,cAAc,GAAG;IAC5B,WAAW;IACX,eAAe;IACf,oBAAoB;IACpB,WAAW;IACX,WAAW;IACX,YAAY;IACZ,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,kBAAkB;IAClB,aAAa;CACL,CAAC;AAIX,SAAgB,sBAAsB,CACpC,SAA2F,EAC3F,OAA2E;IAE3E,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;KACzD;IAKD,IAAI,UAAU,GAAG,sBAAc,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAArD,CAAqD,CAAC,CAAC;IAGrG,IAAI,CAAC,IAAA,iBAAS,EAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,kCAAsB,CAAC,EAAE;QAC3G,UAAU,GAAG,aAAa,CAAC;KAC5B;IAED,OAAO,IAAA,iBAAS,EAAC,UAAU,CAAC;QAC1B,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAG,UAAU,wBAAc,SAAS,CAAC,UAAU,CAAC,iBAAO,OAAO,CAAC,UAAU,CAAC,MAAG,EAAE;QACzG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AArBD,wDAqBC"}
@@ -1,11 +0,0 @@
1
- import { Deposit, RelayData } from "../interfaces";
2
- export declare const RELAYDATA_KEYS: readonly ["depositId", "originChainId", "destinationChainId", "depositor", "recipient", "inputToken", "inputAmount", "outputToken", "outputAmount", "fillDeadline", "exclusivityDeadline", "exclusiveRelayer", "messageHash"];
3
- export declare function validateFillForDeposit(relayData: Omit<RelayData, "message"> & {
4
- messageHash: string;
5
- destinationChainId: number;
6
- }, deposit?: Omit<Deposit, "quoteTimestamp" | "fromLiteChain" | "toLiteChain">): {
7
- valid: true;
8
- } | {
9
- valid: false;
10
- reason: string;
11
- };
@@ -1,36 +0,0 @@
1
- import { isDefined } from "../utils";
2
- import { UNDEFINED_MESSAGE_HASH } from "../constants";
3
- export var RELAYDATA_KEYS = [
4
- "depositId",
5
- "originChainId",
6
- "destinationChainId",
7
- "depositor",
8
- "recipient",
9
- "inputToken",
10
- "inputAmount",
11
- "outputToken",
12
- "outputAmount",
13
- "fillDeadline",
14
- "exclusivityDeadline",
15
- "exclusiveRelayer",
16
- "messageHash",
17
- ];
18
- // Ensure that each deposit element is included with the same value in the fill. This includes all elements defined
19
- // by the depositor as well as destinationToken, which are pulled from other clients.
20
- export function validateFillForDeposit(relayData, deposit) {
21
- if (deposit === undefined) {
22
- return { valid: false, reason: "Deposit is undefined" };
23
- }
24
- // Note: this short circuits when a key is found where the comparison doesn't match.
25
- // TODO: if we turn on "strict" in the tsconfig, the elements of FILL_DEPOSIT_COMPARISON_KEYS will be automatically
26
- // validated against the fields in Fill and Deposit, generating an error if there is a discrepency.
27
- var invalidKey = RELAYDATA_KEYS.find(function (key) { return relayData[key].toString() !== deposit[key].toString(); });
28
- // There should be no paths for `messageHash` to be unset, but mask it off anyway.
29
- if (!isDefined(invalidKey) && [relayData.messageHash, deposit.messageHash].includes(UNDEFINED_MESSAGE_HASH)) {
30
- invalidKey = "messageHash";
31
- }
32
- return isDefined(invalidKey)
33
- ? { valid: false, reason: "".concat(invalidKey, " mismatch (").concat(relayData[invalidKey], " != ").concat(deposit[invalidKey], ")") }
34
- : { valid: true };
35
- }
36
- //# sourceMappingURL=FlowUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FlowUtils.js","sourceRoot":"","sources":["../../../src/utils/FlowUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,IAAM,cAAc,GAAG;IAC5B,WAAW;IACX,eAAe;IACf,oBAAoB;IACpB,WAAW;IACX,WAAW;IACX,YAAY;IACZ,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,kBAAkB;IAClB,aAAa;CACL,CAAC;AAEX,mHAAmH;AACnH,qFAAqF;AACrF,MAAM,UAAU,sBAAsB,CACpC,SAA2F,EAC3F,OAA2E;IAE3E,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;KACzD;IAED,oFAAoF;IACpF,mHAAmH;IACnH,mGAAmG;IACnG,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAArD,CAAqD,CAAC,CAAC;IAErG,kFAAkF;IAClF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;QAC3G,UAAU,GAAG,aAAa,CAAC;KAC5B;IAED,OAAO,SAAS,CAAC,UAAU,CAAC;QAC1B,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAG,UAAU,wBAAc,SAAS,CAAC,UAAU,CAAC,iBAAO,OAAO,CAAC,UAAU,CAAC,MAAG,EAAE;QACzG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC"}
@@ -1,12 +0,0 @@
1
- import { Deposit, RelayData } from "../interfaces";
2
- export declare const RELAYDATA_KEYS: readonly ["depositId", "originChainId", "destinationChainId", "depositor", "recipient", "inputToken", "inputAmount", "outputToken", "outputAmount", "fillDeadline", "exclusivityDeadline", "exclusiveRelayer", "messageHash"];
3
- export declare function validateFillForDeposit(relayData: Omit<RelayData, "message"> & {
4
- messageHash: string;
5
- destinationChainId: number;
6
- }, deposit?: Omit<Deposit, "quoteTimestamp" | "fromLiteChain" | "toLiteChain">): {
7
- valid: true;
8
- } | {
9
- valid: false;
10
- reason: string;
11
- };
12
- //# sourceMappingURL=FlowUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FlowUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/FlowUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGnD,eAAO,MAAM,cAAc,+NAcjB,CAAC;AAIX,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"}
@@ -1,44 +0,0 @@
1
- import { isDefined } from "../utils";
2
- import { Deposit, RelayData } from "../interfaces";
3
- import { UNDEFINED_MESSAGE_HASH } from "../constants";
4
-
5
- export const RELAYDATA_KEYS = [
6
- "depositId",
7
- "originChainId",
8
- "destinationChainId",
9
- "depositor",
10
- "recipient",
11
- "inputToken",
12
- "inputAmount",
13
- "outputToken",
14
- "outputAmount",
15
- "fillDeadline",
16
- "exclusivityDeadline",
17
- "exclusiveRelayer",
18
- "messageHash",
19
- ] as const;
20
-
21
- // Ensure that each deposit element is included with the same value in the fill. This includes all elements defined
22
- // by the depositor as well as destinationToken, which are pulled from other clients.
23
- export function validateFillForDeposit(
24
- relayData: Omit<RelayData, "message"> & { messageHash: string; destinationChainId: number },
25
- deposit?: Omit<Deposit, "quoteTimestamp" | "fromLiteChain" | "toLiteChain">
26
- ): { valid: true } | { valid: false; reason: string } {
27
- if (deposit === undefined) {
28
- return { valid: false, reason: "Deposit is undefined" };
29
- }
30
-
31
- // Note: this short circuits when a key is found where the comparison doesn't match.
32
- // TODO: if we turn on "strict" in the tsconfig, the elements of FILL_DEPOSIT_COMPARISON_KEYS will be automatically
33
- // validated against the fields in Fill and Deposit, generating an error if there is a discrepency.
34
- let invalidKey = RELAYDATA_KEYS.find((key) => relayData[key].toString() !== deposit[key].toString());
35
-
36
- // There should be no paths for `messageHash` to be unset, but mask it off anyway.
37
- if (!isDefined(invalidKey) && [relayData.messageHash, deposit.messageHash].includes(UNDEFINED_MESSAGE_HASH)) {
38
- invalidKey = "messageHash";
39
- }
40
-
41
- return isDefined(invalidKey)
42
- ? { valid: false, reason: `${invalidKey} mismatch (${relayData[invalidKey]} != ${deposit[invalidKey]})` }
43
- : { valid: true };
44
- }