@across-protocol/sdk 4.3.119 → 4.3.120-alpha.1

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 (53) hide show
  1. package/dist/cjs/test/constants.d.ts +58 -8
  2. package/dist/cjs/test/constants.js +70 -13
  3. package/dist/cjs/test/constants.js.map +1 -1
  4. package/dist/cjs/test/fixtures/MerkleLib.Fixture.d.ts +4 -0
  5. package/dist/cjs/test/fixtures/MerkleLib.Fixture.js +22 -0
  6. package/dist/cjs/test/fixtures/MerkleLib.Fixture.js.map +1 -0
  7. package/dist/cjs/test/fixtures/SpokePool.Fixture.d.ts +91 -1
  8. package/dist/cjs/test/fixtures/SpokePool.Fixture.js +196 -1
  9. package/dist/cjs/test/fixtures/SpokePool.Fixture.js.map +1 -1
  10. package/dist/cjs/test/types/index.d.ts +10 -11
  11. package/dist/cjs/test/utils/MerkleLib.utils.d.ts +26 -1
  12. package/dist/cjs/test/utils/MerkleLib.utils.js +40 -0
  13. package/dist/cjs/test/utils/MerkleLib.utils.js.map +1 -1
  14. package/dist/cjs/test/utils/index.d.ts +0 -1
  15. package/dist/cjs/test/utils/index.js +1 -2
  16. package/dist/cjs/test/utils/index.js.map +1 -1
  17. package/dist/cjs/test/utils/utils.d.ts +44 -17
  18. package/dist/cjs/test/utils/utils.js +223 -37
  19. package/dist/cjs/test/utils/utils.js.map +1 -1
  20. package/dist/esm/test/constants.d.ts +58 -8
  21. package/dist/esm/test/constants.js +87 -13
  22. package/dist/esm/test/constants.js.map +1 -1
  23. package/dist/esm/test/fixtures/MerkleLib.Fixture.d.ts +4 -0
  24. package/dist/esm/test/fixtures/MerkleLib.Fixture.js +19 -0
  25. package/dist/esm/test/fixtures/MerkleLib.Fixture.js.map +1 -0
  26. package/dist/esm/test/fixtures/SpokePool.Fixture.d.ts +92 -1
  27. package/dist/esm/test/fixtures/SpokePool.Fixture.js +201 -1
  28. package/dist/esm/test/fixtures/SpokePool.Fixture.js.map +1 -1
  29. package/dist/esm/test/types/index.d.ts +10 -11
  30. package/dist/esm/test/utils/MerkleLib.utils.d.ts +32 -1
  31. package/dist/esm/test/utils/MerkleLib.utils.js +44 -0
  32. package/dist/esm/test/utils/MerkleLib.utils.js.map +1 -1
  33. package/dist/esm/test/utils/index.d.ts +0 -1
  34. package/dist/esm/test/utils/index.js +0 -2
  35. package/dist/esm/test/utils/index.js.map +1 -1
  36. package/dist/esm/test/utils/utils.d.ts +44 -17
  37. package/dist/esm/test/utils/utils.js +205 -29
  38. package/dist/esm/test/utils/utils.js.map +1 -1
  39. package/dist/types/test/constants.d.ts +58 -8
  40. package/dist/types/test/constants.d.ts.map +1 -1
  41. package/dist/types/test/fixtures/MerkleLib.Fixture.d.ts +5 -0
  42. package/dist/types/test/fixtures/MerkleLib.Fixture.d.ts.map +1 -0
  43. package/dist/types/test/fixtures/SpokePool.Fixture.d.ts +92 -1
  44. package/dist/types/test/fixtures/SpokePool.Fixture.d.ts.map +1 -1
  45. package/dist/types/test/types/index.d.ts +10 -11
  46. package/dist/types/test/types/index.d.ts.map +1 -1
  47. package/dist/types/test/utils/MerkleLib.utils.d.ts +32 -1
  48. package/dist/types/test/utils/MerkleLib.utils.d.ts.map +1 -1
  49. package/dist/types/test/utils/index.d.ts +0 -1
  50. package/dist/types/test/utils/index.d.ts.map +1 -1
  51. package/dist/types/test/utils/utils.d.ts +44 -17
  52. package/dist/types/test/utils/utils.d.ts.map +1 -1
  53. package/package.json +1 -1
@@ -1,22 +1,96 @@
1
- import * as contracts from "@across-protocol/contracts/dist/test-utils"; // Contains all the Across contract constants.
1
+ import { BigNumber, ethers } from "ethers";
2
+ import { toWei, toBN, utf8ToHex } from "../src/utils";
3
+ import { ZERO_ADDRESS } from "../src/constants";
2
4
  import { DEFAULT_CONFIG_STORE_VERSION } from "./mocks";
3
- export var amountToDeposit = contracts.amountToDeposit, amountToLp = contracts.amountToLp, depositRelayerFeePct = contracts.depositRelayerFeePct, originChainId = contracts.originChainId, destinationChainId = contracts.destinationChainId, repaymentChainId = contracts.repaymentChainId, mockTreeRoot = contracts.mockTreeRoot, refundProposalLiveness = contracts.refundProposalLiveness, totalBond = contracts.totalBond, TokenRolesEnum = contracts.TokenRolesEnum, bondAmount = contracts.bondAmount, finalFee = contracts.finalFee, finalFeeUsdc = contracts.finalFeeUsdc, finalFeeUsdt = contracts.finalFeeUsdt, randomAddress = contracts.randomAddress, zeroAddress = contracts.zeroAddress, identifier = contracts.identifier;
4
- export var CONFIG_STORE_VERSION = DEFAULT_CONFIG_STORE_VERSION;
5
- export var randomL1Token = contracts.randomAddress();
6
- export var randomOriginToken = contracts.randomAddress();
7
- export var randomDestinationToken = contracts.randomAddress();
8
- export var randomDestinationToken2 = contracts.randomAddress();
9
- // Max number of refunds in relayer refund leaf for a { repaymentChainId, L2TokenAddress }.
5
+ // Re-export TokenRolesEnum locally instead of from @uma/common
6
+ export var TokenRolesEnum = {
7
+ OWNER: "0",
8
+ MINTER: "1",
9
+ BURNER: "3",
10
+ };
11
+ // Chain IDs
12
+ export var destinationChainId = 1342; // Should be equal to MockSpokePool.chainId() return value.
13
+ export var originChainId = 666;
14
+ export var repaymentChainId = 777;
15
+ // Max values
16
+ export var maxUint256 = ethers.constants.MaxInt256;
17
+ export var MAX_UINT32 = BigNumber.from("0xFFFFFFFF");
18
+ export var MAX_EXCLUSIVITY_OFFSET_SECONDS = 24 * 60 * 60 * 365;
19
+ // Seed / LP / deposit / relay amounts
20
+ export var amountToSeedWallets = toWei("1500");
21
+ export var amountToLp = toWei("1000");
22
+ export var amountToDeposit = toWei("100");
23
+ export var amountToRelay = toWei("25");
24
+ // Fee percentages (wei-scaled)
25
+ export var depositRelayerFeePct = toWei("0.1");
26
+ export var modifiedRelayerFeePct = toBN(depositRelayerFeePct).add(toBN(toWei("0.1")));
27
+ export var incorrectModifiedRelayerFeePct = toBN(modifiedRelayerFeePct).add(toBN(toWei("0.01")));
28
+ export var realizedLpFeePct = toWei("0.1");
29
+ export var oneHundredPct = toWei("1");
30
+ // Computed fee percentages
31
+ export var totalPostFeesPct = toBN(oneHundredPct).sub(toBN(depositRelayerFeePct).add(realizedLpFeePct));
32
+ export var totalPostModifiedFeesPct = toBN(oneHundredPct).sub(toBN(modifiedRelayerFeePct).add(realizedLpFeePct));
33
+ // Computed relay amounts
34
+ export var amountToRelayPreFees = toBN(amountToRelay).mul(toBN(oneHundredPct)).div(totalPostFeesPct);
35
+ export var amountReceived = toBN(amountToDeposit).mul(toBN(totalPostFeesPct)).div(toBN(oneHundredPct));
36
+ export var amountToRelayPreModifiedFees = toBN(amountToRelay).mul(toBN(oneHundredPct)).div(totalPostModifiedFeesPct);
37
+ export var amountToRelayPreLPFee = amountToRelayPreFees.mul(oneHundredPct.sub(realizedLpFeePct)).div(oneHundredPct);
38
+ // Deposit ID
39
+ export var firstDepositId = toBN(0);
40
+ // Bond and fee values
41
+ export var bondAmount = toWei("5");
42
+ export var finalFee = toWei("1");
43
+ export var finalFeeUsdc = ethers.utils.parseUnits("1", 6);
44
+ export var finalFeeUsdt = ethers.utils.parseUnits("1", 6);
45
+ export var totalBond = bondAmount.add(finalFee);
46
+ // Liveness
47
+ export var refundProposalLiveness = 7200;
48
+ // Addresses
49
+ export var zeroAddress = ZERO_ADDRESS;
50
+ export var zeroBytes32 = "0x0000000000000000000000000000000000000000000000000000000000000000";
51
+ // Identifier
52
+ export var identifier = utf8ToHex("ACROSS-V2");
53
+ // Raw value
54
+ export var zeroRawValue = { rawValue: "0" };
55
+ // Merkle tree / bundle mock data
56
+ export var mockBundleEvaluationBlockNumbers = [1, 2, 3];
57
+ export var mockPoolRebalanceLeafCount = 5;
58
+ export var mockPoolRebalanceRoot = ethers.utils.hexlify(ethers.utils.randomBytes(32));
59
+ export var mockRelayerRefundRoot = ethers.utils.hexlify(ethers.utils.randomBytes(32));
60
+ export var mockSlowRelayRoot = ethers.utils.hexlify(ethers.utils.randomBytes(32));
61
+ export var mockTreeRoot = ethers.utils.hexlify(ethers.utils.randomBytes(32));
62
+ // Pool amounts
63
+ export var amountHeldByPool = amountToRelay.mul(4);
64
+ export var amountToReturn = toWei("1");
65
+ // L2 gas parameters
66
+ export var sampleL2Gas = 2000000;
67
+ export var sampleL2GasSendTokens = 300000;
68
+ export var sampleL2MaxSubmissionCost = toWei("0.01");
69
+ export var sampleL2GasPrice = 5e9;
70
+ // Leaf size limits (lowercase versions matching contracts repo)
71
+ export var maxRefundsPerRelayerRefundLeaf = 3;
72
+ export var maxL1TokensPerPoolRebalanceLeaf = 3;
73
+ // L1 token transfer threshold
74
+ export var l1TokenTransferThreshold = toWei(100);
75
+ // Uppercase versions used by SDK tests
10
76
  export var MAX_REFUNDS_PER_RELAYER_REFUND_LEAF = 3;
11
- // Max number of L1 tokens for a chain ID in a pool rebalance leaf.
12
77
  export var MAX_L1_TOKENS_PER_POOL_REBALANCE_LEAF = 3;
13
78
  // DAI's Rate model.
14
79
  export var sampleRateModel = {
15
- UBar: contracts.toWei(0.8).toString(),
16
- R0: contracts.toWei(0.04).toString(),
17
- R1: contracts.toWei(0.07).toString(),
18
- R2: contracts.toWei(0.75).toString(),
80
+ UBar: toWei(0.8).toString(),
81
+ R0: toWei(0.04).toString(),
82
+ R1: toWei(0.07).toString(),
83
+ R2: toWei(0.75).toString(),
19
84
  };
85
+ export var CONFIG_STORE_VERSION = DEFAULT_CONFIG_STORE_VERSION;
86
+ // Random address helper (uses ethers directly to avoid circular deps)
87
+ export function randomAddress() {
88
+ return ethers.utils.getAddress(ethers.utils.hexlify(ethers.utils.randomBytes(20)));
89
+ }
90
+ export var randomL1Token = randomAddress();
91
+ export var randomOriginToken = randomAddress();
92
+ export var randomDestinationToken = randomAddress();
93
+ export var randomDestinationToken2 = randomAddress();
20
94
  // Add Mainnet chain ID 1 to the chain ID list because the dataworker uses this chain to look up latest GlobalConfig
21
95
  // updates for config variables like MAX_REFUND_COUNT_FOR_RELAYER_REPAYMENT_LEAF.
22
96
  export var CHAIN_ID_TEST_LIST = [originChainId, destinationChainId, repaymentChainId, 1];
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../test/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,4CAA4C,CAAC,CAAC,8CAA8C;AACvH,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,CACJ,IAAA,eAAe,GAiBb,SAAS,gBAjBI,EACf,UAAU,GAgBR,SAAS,WAhBD,EACV,oBAAoB,GAelB,SAAS,qBAfS,EACpB,aAAa,GAcX,SAAS,cAdE,EACb,kBAAkB,GAahB,SAAS,mBAbO,EAClB,gBAAgB,GAYd,SAAS,iBAZK,EAChB,YAAY,GAWV,SAAS,aAXC,EACZ,sBAAsB,GAUpB,SAAS,uBAVW,EACtB,SAAS,GASP,SAAS,UATF,EACT,cAAc,GAQZ,SAAS,eARG,EACd,UAAU,GAOR,SAAS,WAPD,EACV,QAAQ,GAMN,SAAS,SANH,EACR,YAAY,GAKV,SAAS,aALC,EACZ,YAAY,GAIV,SAAS,aAJC,EACZ,aAAa,GAGX,SAAS,cAHE,EACb,WAAW,GAET,SAAS,YAFA,EACX,UAAU,GACR,SAAS,WADD,CACE;AACd,MAAM,CAAC,IAAM,oBAAoB,GAAG,4BAA4B,CAAC;AACjE,MAAM,CAAC,IAAM,aAAa,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;AACvD,MAAM,CAAC,IAAM,iBAAiB,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;AAC3D,MAAM,CAAC,IAAM,sBAAsB,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;AAChE,MAAM,CAAC,IAAM,uBAAuB,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;AAEjE,2FAA2F;AAC3F,MAAM,CAAC,IAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD,mEAAmE;AACnE,MAAM,CAAC,IAAM,qCAAqC,GAAG,CAAC,CAAC;AAEvD,oBAAoB;AACpB,MAAM,CAAC,IAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACrC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACpC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACpC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CACrC,CAAC;AAEF,oHAAoH;AACpH,iFAAiF;AACjF,MAAM,CAAC,IAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../test/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Contract } from "ethers";
2
+ export declare const merkleLibFixture: (options?: unknown) => Promise<{
3
+ merkleLibTest: Contract;
4
+ }>;
@@ -0,0 +1,19 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import hre from "hardhat";
3
+ import { getContractFactory } from "../utils/getContractFactory";
4
+ export var merkleLibFixture = hre.deployments.createFixture(function () { return __awaiter(void 0, void 0, void 0, function () {
5
+ var signer, merkleLibTest;
6
+ return __generator(this, function (_a) {
7
+ switch (_a.label) {
8
+ case 0: return [4 /*yield*/, hre.ethers.getSigners()];
9
+ case 1:
10
+ signer = (_a.sent())[0];
11
+ return [4 /*yield*/, getContractFactory("MerkleLibTest", signer)];
12
+ case 2: return [4 /*yield*/, (_a.sent()).deploy()];
13
+ case 3:
14
+ merkleLibTest = _a.sent();
15
+ return [2 /*return*/, { merkleLibTest: merkleLibTest }];
16
+ }
17
+ });
18
+ }); });
19
+ //# sourceMappingURL=MerkleLib.Fixture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MerkleLib.Fixture.js","sourceRoot":"","sources":["../../../../test/fixtures/MerkleLib.Fixture.ts"],"names":[],"mappings":";AAAA,OAAO,GAAG,MAAM,SAAS,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,CAAC,IAAM,gBAAgB,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC;;;;oBAC3C,qBAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,EAAA;;gBAAvC,MAAM,GAAI,CAAA,SAA6B,CAAA,GAAjC;gBACgB,qBAAM,kBAAkB,CAAC,eAAe,EAAE,MAAM,CAAC,EAAA;oBAAxD,qBAAM,CAAC,SAAiD,CAAC,CAAC,MAAM,EAAE,EAAA;;gBAAlF,aAAa,GAAG,SAAkE;gBACxF,sBAAO,EAAE,aAAa,eAAA,EAAE,EAAC;;;KAC1B,CAAC,CAAC"}
@@ -2,9 +2,100 @@ import "@nomiclabs/hardhat-ethers";
2
2
  import "@openzeppelin/hardhat-upgrades";
3
3
  import "hardhat-deploy";
4
4
  import hre from "hardhat";
5
- import { Contract } from "ethers";
5
+ import { BigNumber, Contract } from "ethers";
6
+ import type { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers";
6
7
  import { zeroAddress } from "../constants";
7
8
  export { zeroAddress };
9
+ /** V2-era relay data with string chain IDs / deposit IDs */
10
+ export interface ContractRelayData {
11
+ depositor: string;
12
+ recipient: string;
13
+ destinationToken: string;
14
+ amount: BigNumber;
15
+ realizedLpFeePct: BigNumber;
16
+ relayerFeePct: BigNumber;
17
+ depositId: string;
18
+ originChainId: string;
19
+ destinationChainId: string;
20
+ message: string;
21
+ }
22
+ export interface V3RelayData {
23
+ depositor: string;
24
+ recipient: string;
25
+ exclusiveRelayer: string;
26
+ inputToken: string;
27
+ outputToken: string;
28
+ inputAmount: BigNumber;
29
+ outputAmount: BigNumber;
30
+ originChainId: number;
31
+ depositId: BigNumber;
32
+ fillDeadline: number;
33
+ exclusivityDeadline: number;
34
+ message: string;
35
+ }
36
+ export interface V3RelayExecutionParams {
37
+ relay: V3RelayData;
38
+ relayHash: string;
39
+ updatedOutputAmount: BigNumber;
40
+ updatedRecipient: string;
41
+ updatedMessage: string;
42
+ repaymentChainId: number;
43
+ }
44
+ export interface SlowFill {
45
+ relayData: ContractRelayData;
46
+ payoutAdjustmentPct: BigNumber;
47
+ }
48
+ export interface V3SlowFill {
49
+ relayData: V3RelayData;
50
+ chainId: number;
51
+ updatedOutputAmount: BigNumber;
52
+ }
53
+ export interface UpdatedRelayerFeeData {
54
+ newRelayerFeePct: string;
55
+ depositorMessageHash: string;
56
+ depositorSignature: string;
57
+ }
58
+ export declare const enum FillType {
59
+ FastFill = 0,
60
+ ReplacedSlowFill = 1,
61
+ SlowFill = 2
62
+ }
63
+ export declare const enum FillStatus {
64
+ Unfilled = 0,
65
+ RequestedSlowFill = 1,
66
+ Filled = 2
67
+ }
68
+ export declare function getRelayHash(_depositor: string, _recipient: string, _depositId: number, _originChainId: number, _destinationChainId: number, _destinationToken: string, _amount?: BigNumber, _realizedLpFeePct?: BigNumber, _relayerFeePct?: BigNumber, _message?: string): {
69
+ relayHash: string;
70
+ relayData: ContractRelayData;
71
+ };
72
+ export declare function getV3RelayHash(relayData: V3RelayData, destChainId: number): string;
73
+ export declare function getLegacyV3RelayHash(relayData: V3RelayData, destChainId: number): string;
74
+ export declare function getDepositParams(args: {
75
+ recipient?: string;
76
+ originToken: string;
77
+ amount: BigNumber;
78
+ destinationChainId: number;
79
+ relayerFeePct: BigNumber;
80
+ quoteTimestamp: number;
81
+ message?: string;
82
+ maxCount?: BigNumber;
83
+ }): string[];
84
+ export declare function getFillRelayParams(_relayData: ContractRelayData, _maxTokensToSend: BigNumber, _repaymentChain?: number, _maxCount?: BigNumber): string[];
85
+ export declare function getFillRelayUpdatedFeeParams(_relayData: ContractRelayData, _maxTokensToSend: BigNumber, _updatedFee: BigNumber, _signature: string, _repaymentChain?: number, _updatedRecipient?: string, _updatedMessage?: string, _maxCount?: BigNumber): string[];
86
+ export declare function getExecuteSlowRelayParams(_depositor: string, _recipient: string, _destToken: string, _amount: BigNumber, _originChainId: number, _realizedLpFeePct: BigNumber, _relayerFeePct: BigNumber, _depositId: number, _relayerRefundId: number, _message: string, _payoutAdjustment: BigNumber, _proof: string[]): (string | string[])[];
87
+ export declare function modifyRelayHelper(modifiedRelayerFeePct: BigNumber, depositId: string, originChainId: string, depositor: SignerWithAddress, updatedRecipient: string, updatedMessage: string): Promise<{
88
+ signature: string;
89
+ }>;
90
+ export declare function getUpdatedV3DepositSignature(depositor: SignerWithAddress, depositId: BigNumber, originChainId: number, updatedOutputAmount: BigNumber, updatedRecipient: string, updatedMessage: string): Promise<string>;
91
+ export declare function deployMockSpokePoolCaller(spokePool: Contract, rootBundleId: number, leaf: {
92
+ amountToReturn: BigNumber;
93
+ chainId: BigNumber;
94
+ refundAmounts: BigNumber[];
95
+ leafId: BigNumber;
96
+ l2TokenAddress: string;
97
+ refundAddresses: string[];
98
+ }, proof: string[]): Promise<Contract>;
8
99
  /**
9
100
  * Deploys a SpokePool with associated tokens for testing.
10
101
  * This is a local implementation that uses our local getContractFactory
@@ -3,9 +3,209 @@ import "@nomiclabs/hardhat-ethers";
3
3
  import "@openzeppelin/hardhat-upgrades";
4
4
  import "hardhat-deploy";
5
5
  import hre from "hardhat";
6
+ import { ethers as ethersLib } from "ethers";
6
7
  import { getContractFactory } from "../utils/getContractFactory";
7
- import { destinationChainId, TokenRolesEnum, zeroAddress } from "../constants";
8
+ import { amountToDeposit, depositRelayerFeePct, destinationChainId, maxUint256, realizedLpFeePct, repaymentChainId, TokenRolesEnum, zeroAddress, randomAddress, } from "../constants";
9
+ var _a = ethersLib.utils, defaultAbiCoder = _a.defaultAbiCoder, keccak256 = _a.keccak256;
8
10
  export { zeroAddress };
11
+ // ---------------------------------------------------------------------------
12
+ // Relay hash helpers
13
+ // ---------------------------------------------------------------------------
14
+ export function getRelayHash(_depositor, _recipient, _depositId, _originChainId, _destinationChainId, _destinationToken, _amount, _realizedLpFeePct, _relayerFeePct, _message) {
15
+ var relayData = {
16
+ depositor: _depositor,
17
+ recipient: _recipient,
18
+ destinationToken: _destinationToken,
19
+ amount: _amount || amountToDeposit,
20
+ originChainId: _originChainId.toString(),
21
+ destinationChainId: _destinationChainId.toString(),
22
+ realizedLpFeePct: _realizedLpFeePct || realizedLpFeePct,
23
+ relayerFeePct: _relayerFeePct || depositRelayerFeePct,
24
+ depositId: _depositId.toString(),
25
+ message: _message || "0x",
26
+ };
27
+ var relayHash = keccak256(defaultAbiCoder.encode([
28
+ "tuple(address depositor, address recipient, address destinationToken, uint256 amount, uint256 originChainId, uint256 destinationChainId, int64 realizedLpFeePct, int64 relayerFeePct, uint32 depositId, bytes message)",
29
+ ], [relayData]));
30
+ return { relayHash: relayHash, relayData: relayData };
31
+ }
32
+ export function getV3RelayHash(relayData, destChainId) {
33
+ return keccak256(defaultAbiCoder.encode([
34
+ "tuple(bytes32 depositor, bytes32 recipient, bytes32 exclusiveRelayer, bytes32 inputToken, bytes32 outputToken, uint256 inputAmount, uint256 outputAmount, uint256 originChainId, uint256 depositId, uint32 fillDeadline, uint32 exclusivityDeadline, bytes message)",
35
+ "uint256 destinationChainId",
36
+ ], [relayData, destChainId]));
37
+ }
38
+ export function getLegacyV3RelayHash(relayData, destChainId) {
39
+ return keccak256(defaultAbiCoder.encode([
40
+ "tuple(address depositor, address recipient, address exclusiveRelayer, address inputToken, address outputToken, uint256 inputAmount, uint256 outputAmount, uint256 originChainId, uint32 depositId, uint32 fillDeadline, uint32 exclusivityDeadline, bytes message)",
41
+ "uint256 destinationChainId",
42
+ ], [relayData, destChainId]));
43
+ }
44
+ // ---------------------------------------------------------------------------
45
+ // Parameter builders
46
+ // ---------------------------------------------------------------------------
47
+ export function getDepositParams(args) {
48
+ var _a, _b, _c, _d;
49
+ return [
50
+ (_a = args.recipient) !== null && _a !== void 0 ? _a : randomAddress(),
51
+ args.originToken,
52
+ args.amount.toString(),
53
+ args.destinationChainId.toString(),
54
+ args.relayerFeePct.toString(),
55
+ args.quoteTimestamp.toString(),
56
+ (_b = args.message) !== null && _b !== void 0 ? _b : "0x",
57
+ (_d = (_c = args === null || args === void 0 ? void 0 : args.maxCount) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : maxUint256.toString(),
58
+ ];
59
+ }
60
+ export function getFillRelayParams(_relayData, _maxTokensToSend, _repaymentChain, _maxCount) {
61
+ return [
62
+ _relayData.depositor,
63
+ _relayData.recipient,
64
+ _relayData.destinationToken,
65
+ _relayData.amount.toString(),
66
+ _maxTokensToSend.toString(),
67
+ _repaymentChain ? _repaymentChain.toString() : repaymentChainId.toString(),
68
+ _relayData.originChainId,
69
+ _relayData.realizedLpFeePct.toString(),
70
+ _relayData.relayerFeePct.toString(),
71
+ _relayData.depositId,
72
+ _relayData.message || "0x",
73
+ _maxCount ? _maxCount.toString() : maxUint256.toString(),
74
+ ];
75
+ }
76
+ export function getFillRelayUpdatedFeeParams(_relayData, _maxTokensToSend, _updatedFee, _signature, _repaymentChain, _updatedRecipient, _updatedMessage, _maxCount) {
77
+ return [
78
+ _relayData.depositor,
79
+ _relayData.recipient,
80
+ _updatedRecipient || _relayData.recipient,
81
+ _relayData.destinationToken,
82
+ _relayData.amount.toString(),
83
+ _maxTokensToSend.toString(),
84
+ _repaymentChain ? _repaymentChain.toString() : repaymentChainId.toString(),
85
+ _relayData.originChainId,
86
+ _relayData.realizedLpFeePct.toString(),
87
+ _relayData.relayerFeePct.toString(),
88
+ _updatedFee.toString(),
89
+ _relayData.depositId,
90
+ _relayData.message,
91
+ _updatedMessage || _relayData.message,
92
+ _signature,
93
+ _maxCount ? _maxCount.toString() : maxUint256.toString(),
94
+ ];
95
+ }
96
+ export function getExecuteSlowRelayParams(_depositor, _recipient, _destToken, _amount, _originChainId, _realizedLpFeePct, _relayerFeePct, _depositId, _relayerRefundId, _message, _payoutAdjustment, _proof) {
97
+ return [
98
+ _depositor,
99
+ _recipient,
100
+ _destToken,
101
+ _amount.toString(),
102
+ _originChainId.toString(),
103
+ _realizedLpFeePct.toString(),
104
+ _relayerFeePct.toString(),
105
+ _depositId.toString(),
106
+ _relayerRefundId.toString(),
107
+ _message,
108
+ _payoutAdjustment.toString(),
109
+ _proof,
110
+ ];
111
+ }
112
+ // ---------------------------------------------------------------------------
113
+ // EIP-712 signature helpers
114
+ // ---------------------------------------------------------------------------
115
+ export function modifyRelayHelper(modifiedRelayerFeePct, depositId, originChainId, depositor, updatedRecipient, updatedMessage) {
116
+ return __awaiter(this, void 0, void 0, function () {
117
+ var typedData, signature;
118
+ return __generator(this, function (_a) {
119
+ switch (_a.label) {
120
+ case 0:
121
+ typedData = {
122
+ types: {
123
+ UpdateDepositDetails: [
124
+ { name: "depositId", type: "uint32" },
125
+ { name: "originChainId", type: "uint256" },
126
+ { name: "updatedRelayerFeePct", type: "int64" },
127
+ { name: "updatedRecipient", type: "address" },
128
+ { name: "updatedMessage", type: "bytes" },
129
+ ],
130
+ },
131
+ domain: {
132
+ name: "ACROSS-V2",
133
+ version: "1.0.0",
134
+ chainId: Number(originChainId),
135
+ },
136
+ message: {
137
+ depositId: depositId,
138
+ originChainId: originChainId,
139
+ updatedRelayerFeePct: modifiedRelayerFeePct,
140
+ updatedRecipient: updatedRecipient,
141
+ updatedMessage: updatedMessage,
142
+ },
143
+ };
144
+ return [4 /*yield*/, depositor._signTypedData(typedData.domain, typedData.types, typedData.message)];
145
+ case 1:
146
+ signature = _a.sent();
147
+ return [2 /*return*/, { signature: signature }];
148
+ }
149
+ });
150
+ });
151
+ }
152
+ export function getUpdatedV3DepositSignature(depositor, depositId, originChainId, updatedOutputAmount, updatedRecipient, updatedMessage) {
153
+ return __awaiter(this, void 0, void 0, function () {
154
+ var typedData;
155
+ return __generator(this, function (_a) {
156
+ switch (_a.label) {
157
+ case 0:
158
+ typedData = {
159
+ types: {
160
+ UpdateDepositDetails: [
161
+ { name: "depositId", type: "uint256" },
162
+ { name: "originChainId", type: "uint256" },
163
+ { name: "updatedOutputAmount", type: "uint256" },
164
+ { name: "updatedRecipient", type: "bytes32" },
165
+ { name: "updatedMessage", type: "bytes" },
166
+ ],
167
+ },
168
+ domain: {
169
+ name: "ACROSS-V2",
170
+ version: "1.0.0",
171
+ chainId: originChainId,
172
+ },
173
+ message: {
174
+ depositId: depositId,
175
+ originChainId: originChainId,
176
+ updatedOutputAmount: updatedOutputAmount,
177
+ updatedRecipient: updatedRecipient,
178
+ updatedMessage: updatedMessage,
179
+ },
180
+ };
181
+ return [4 /*yield*/, depositor._signTypedData(typedData.domain, typedData.types, typedData.message)];
182
+ case 1: return [2 /*return*/, _a.sent()];
183
+ }
184
+ });
185
+ });
186
+ }
187
+ // ---------------------------------------------------------------------------
188
+ // Mock deployers
189
+ // ---------------------------------------------------------------------------
190
+ export function deployMockSpokePoolCaller(spokePool, rootBundleId, leaf, proof) {
191
+ return __awaiter(this, void 0, void 0, function () {
192
+ var _a, _b;
193
+ return __generator(this, function (_c) {
194
+ switch (_c.label) {
195
+ case 0:
196
+ _a = getContractFactory;
197
+ _b = ["MockCaller"];
198
+ return [4 /*yield*/, hre.ethers.getSigners()];
199
+ case 1: return [4 /*yield*/, _a.apply(void 0, _b.concat([(_c.sent())[0]]))];
200
+ case 2: return [4 /*yield*/, (_c.sent()).deploy(spokePool.address, rootBundleId, leaf, proof)];
201
+ case 3: return [2 /*return*/, _c.sent()];
202
+ }
203
+ });
204
+ });
205
+ }
206
+ // ---------------------------------------------------------------------------
207
+ // Deployment
208
+ // ---------------------------------------------------------------------------
9
209
  /**
10
210
  * Deploys a SpokePool with associated tokens for testing.
11
211
  * This is a local implementation that uses our local getContractFactory
@@ -1 +1 @@
1
- {"version":3,"file":"SpokePool.Fixture.js","sourceRoot":"","sources":["../../../../test/fixtures/SpokePool.Fixture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpokePool.Fixture.js","sourceRoot":"","sources":["../../../../test/fixtures/SpokePool.Fixture.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { HardhatEthersHelpers } from "@nomiclabs/hardhat-ethers/types";
2
- import type { ethers } from "ethers";
2
+ import type { ethers, Contract, BigNumber } from "ethers";
3
3
  import winston from "winston";
4
- import * as utils from "@across-protocol/contracts/dist/test-utils";
5
4
  import { sinon } from "../utils";
6
5
  export type EthersTestLibrary = typeof ethers & HardhatEthersHelpers;
7
6
  export type SpyLoggerResult = {
@@ -9,20 +8,20 @@ export type SpyLoggerResult = {
9
8
  spyLogger: winston.Logger;
10
9
  };
11
10
  export type SpokePoolDeploymentResult = {
12
- weth: utils.Contract;
13
- erc20: utils.Contract;
14
- spokePool: utils.Contract;
15
- unwhitelistedErc20: utils.Contract;
16
- destErc20: utils.Contract;
11
+ weth: Contract;
12
+ erc20: Contract;
13
+ spokePool: Contract;
14
+ unwhitelistedErc20: Contract;
15
+ destErc20: Contract;
17
16
  deploymentBlock: number;
18
17
  };
19
18
  export type ContractsV2SlowFillRelayData = {
20
19
  depositor: string;
21
20
  recipient: string;
22
21
  destinationToken: string;
23
- amount: utils.BigNumber;
24
- realizedLpFeePct: utils.BigNumber;
25
- relayerFeePct: utils.BigNumber;
22
+ amount: BigNumber;
23
+ realizedLpFeePct: BigNumber;
24
+ relayerFeePct: BigNumber;
26
25
  depositId: string;
27
26
  originChainId: string;
28
27
  destinationChainId: string;
@@ -30,5 +29,5 @@ export type ContractsV2SlowFillRelayData = {
30
29
  };
31
30
  export type ContractsV2SlowFill = {
32
31
  relayData: ContractsV2SlowFillRelayData;
33
- payoutAdjustmentPct: utils.BigNumber;
32
+ payoutAdjustmentPct: BigNumber;
34
33
  };
@@ -3,7 +3,7 @@
3
3
  * These are reimplementations of the utilities from @across-protocol/contracts
4
4
  * to avoid dependency on their getContractFactory which looks for Hardhat artifacts.
5
5
  */
6
- import { BigNumber, ethers } from "ethers";
6
+ import { BigNumber, Contract, ethers } from "ethers";
7
7
  import { MerkleTree } from "@across-protocol/contracts/dist/utils/MerkleTree";
8
8
  /**
9
9
  * Get the parameter type for a contract function parameter.
@@ -64,3 +64,34 @@ export declare function buildSlowRelayTree(slowFills: unknown[]): Promise<Merkle
64
64
  * Build a V3 slow relay Merkle tree.
65
65
  */
66
66
  export declare function buildV3SlowRelayTree(slowFills: unknown[]): Promise<MerkleTree<unknown>>;
67
+ /**
68
+ * Construct a single-leaf relayer refund tree.
69
+ */
70
+ export declare function constructSingleRelayerRefundTree(l2Token: Contract | string, destinationChainId: number, amount?: BigNumber): Promise<{
71
+ leaves: {
72
+ leafId: BigNumber;
73
+ chainId: BigNumber;
74
+ amountToReturn: BigNumber;
75
+ l2TokenAddress: string;
76
+ refundAddresses: string[];
77
+ refundAmounts: BigNumber[];
78
+ }[];
79
+ tree: MerkleTree<unknown>;
80
+ }>;
81
+ /**
82
+ * Construct a single-chain pool rebalance tree.
83
+ */
84
+ export declare function constructSingleChainTree(token: string, scalingSize?: number, repaymentChain?: number, decimals?: number): Promise<{
85
+ tokensSendToL2: BigNumber;
86
+ realizedLpFees: BigNumber;
87
+ leaves: {
88
+ leafId: BigNumber;
89
+ chainId: BigNumber;
90
+ groupIndex: BigNumber;
91
+ bundleLpFees: BigNumber[];
92
+ netSendAmounts: BigNumber[];
93
+ runningBalances: BigNumber[];
94
+ l1Tokens: string[];
95
+ }[];
96
+ tree: MerkleTree<unknown>;
97
+ }>;
@@ -8,6 +8,7 @@ import { BigNumber, ethers } from "ethers";
8
8
  import { getContractFactory } from "./getContractFactory";
9
9
  import { MerkleTree } from "@across-protocol/contracts/dist/utils/MerkleTree";
10
10
  import { expect } from "chai";
11
+ import { amountToReturn, repaymentChainId } from "../constants";
11
12
  var _a = ethers.utils, keccak256 = _a.keccak256, defaultAbiCoder = _a.defaultAbiCoder;
12
13
  /**
13
14
  * Get the parameter type for a contract function parameter.
@@ -147,4 +148,47 @@ export function buildV3SlowRelayTree(slowFills) {
147
148
  });
148
149
  });
149
150
  }
151
+ /**
152
+ * Construct a single-leaf relayer refund tree.
153
+ */
154
+ export function constructSingleRelayerRefundTree(l2Token, destinationChainId, amount) {
155
+ return __awaiter(this, void 0, void 0, function () {
156
+ var amountToUse, l2TokenAddress, leaves, tree;
157
+ return __generator(this, function (_a) {
158
+ switch (_a.label) {
159
+ case 0:
160
+ amountToUse = amount !== undefined ? amount : amountToReturn;
161
+ l2TokenAddress = typeof l2Token === "string" ? l2Token : l2Token.address;
162
+ leaves = buildRelayerRefundLeaves([destinationChainId], [amountToUse], [l2TokenAddress], [[]], [[]]);
163
+ return [4 /*yield*/, buildRelayerRefundTree(leaves)];
164
+ case 1:
165
+ tree = _a.sent();
166
+ return [2 /*return*/, { leaves: leaves, tree: tree }];
167
+ }
168
+ });
169
+ });
170
+ }
171
+ /**
172
+ * Construct a single-chain pool rebalance tree.
173
+ */
174
+ export function constructSingleChainTree(token_1) {
175
+ return __awaiter(this, arguments, void 0, function (token, scalingSize, repaymentChain, decimals) {
176
+ var tokensSendToL2, realizedLpFees, leaves, tree;
177
+ if (scalingSize === void 0) { scalingSize = 1; }
178
+ if (repaymentChain === void 0) { repaymentChain = repaymentChainId; }
179
+ if (decimals === void 0) { decimals = 18; }
180
+ return __generator(this, function (_a) {
181
+ switch (_a.label) {
182
+ case 0:
183
+ tokensSendToL2 = ethers.utils.parseUnits((100 * scalingSize).toString(), decimals);
184
+ realizedLpFees = ethers.utils.parseUnits((10 * scalingSize).toString(), decimals);
185
+ leaves = buildPoolRebalanceLeaves([repaymentChain], [[token]], [[realizedLpFees]], [[tokensSendToL2]], [[tokensSendToL2]], [0]);
186
+ return [4 /*yield*/, buildPoolRebalanceLeafTree(leaves)];
187
+ case 1:
188
+ tree = _a.sent();
189
+ return [2 /*return*/, { tokensSendToL2: tokensSendToL2, realizedLpFees: realizedLpFees, leaves: leaves, tree: tree }];
190
+ }
191
+ });
192
+ });
193
+ }
150
194
  //# sourceMappingURL=MerkleLib.utils.js.map