@across-protocol/contracts 4.0.1 → 4.0.3

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 (74) hide show
  1. package/dist/deploy/consts.d.ts +1 -1
  2. package/dist/deploy/consts.js +9 -13
  3. package/dist/deployments/deployments.json +24 -1
  4. package/dist/hardhat.config.js +17 -1
  5. package/dist/scripts/svm/fakeFillWithRandomDistribution.js +2 -2
  6. package/dist/scripts/svm/queryEvents.js +1 -1
  7. package/dist/scripts/svm/simpleDeposit.js +3 -3
  8. package/dist/scripts/svm/simpleFakeRelayerRepayment.js +1 -1
  9. package/dist/scripts/svm/simpleFill.js +19 -6
  10. package/dist/src/svm/assets/idl/svm_spoke.json +388 -388
  11. package/dist/src/svm/assets/svm_spoke.d.ts +388 -388
  12. package/dist/src/svm/clients/SvmSpoke/accounts/executeSlowRelayLeafParams.d.ts +31 -0
  13. package/dist/src/svm/clients/SvmSpoke/accounts/executeSlowRelayLeafParams.js +70 -0
  14. package/dist/src/svm/clients/SvmSpoke/accounts/fillRelayParams.d.ts +31 -0
  15. package/dist/src/svm/clients/SvmSpoke/accounts/fillRelayParams.js +67 -0
  16. package/dist/src/svm/clients/SvmSpoke/accounts/index.d.ts +3 -3
  17. package/dist/src/svm/clients/SvmSpoke/accounts/index.js +3 -3
  18. package/dist/src/svm/clients/SvmSpoke/accounts/requestSlowFillParams.d.ts +27 -0
  19. package/dist/src/svm/clients/SvmSpoke/accounts/requestSlowFillParams.js +66 -0
  20. package/dist/src/svm/clients/SvmSpoke/instructions/deposit.d.ts +123 -0
  21. package/dist/src/svm/clients/SvmSpoke/instructions/{depositV3.js → deposit.js} +23 -23
  22. package/dist/src/svm/clients/SvmSpoke/instructions/depositNow.d.ts +119 -0
  23. package/dist/src/svm/clients/SvmSpoke/instructions/{depositV3Now.js → depositNow.js} +23 -23
  24. package/dist/src/svm/clients/SvmSpoke/instructions/executeSlowRelayLeaf.d.ts +104 -0
  25. package/dist/src/svm/clients/SvmSpoke/instructions/{executeV3SlowRelayLeaf.js → executeSlowRelayLeaf.js} +26 -26
  26. package/dist/src/svm/clients/SvmSpoke/instructions/fillRelay.d.ts +104 -0
  27. package/dist/src/svm/clients/SvmSpoke/instructions/{fillV3Relay.js → fillRelay.js} +26 -26
  28. package/dist/src/svm/clients/SvmSpoke/instructions/index.d.ts +6 -6
  29. package/dist/src/svm/clients/SvmSpoke/instructions/index.js +6 -6
  30. package/dist/src/svm/clients/SvmSpoke/instructions/requestSlowFill.d.ts +76 -0
  31. package/dist/src/svm/clients/SvmSpoke/instructions/{requestV3SlowFill.js → requestSlowFill.js} +25 -25
  32. package/dist/src/svm/clients/SvmSpoke/instructions/unsafeDeposit.d.ts +127 -0
  33. package/dist/src/svm/clients/SvmSpoke/instructions/{unsafeDepositV3.js → unsafeDeposit.js} +23 -23
  34. package/dist/src/svm/clients/SvmSpoke/programs/svmSpoke.d.ts +23 -23
  35. package/dist/src/svm/clients/SvmSpoke/programs/svmSpoke.js +29 -29
  36. package/dist/src/svm/clients/SvmSpoke/types/{filledV3Relay.d.ts → filledRelay.d.ts} +8 -8
  37. package/dist/src/svm/clients/SvmSpoke/types/{filledV3Relay.js → filledRelay.js} +9 -9
  38. package/dist/src/svm/clients/SvmSpoke/types/{v3FundsDeposited.d.ts → fundsDeposited.d.ts} +5 -5
  39. package/dist/src/svm/clients/SvmSpoke/types/{v3FundsDeposited.js → fundsDeposited.js} +7 -7
  40. package/dist/src/svm/clients/SvmSpoke/types/index.d.ts +6 -6
  41. package/dist/src/svm/clients/SvmSpoke/types/index.js +6 -6
  42. package/dist/src/svm/clients/SvmSpoke/types/{v3RelayData.d.ts → relayData.d.ts} +5 -5
  43. package/dist/src/svm/clients/SvmSpoke/types/{v3RelayData.js → relayData.js} +7 -7
  44. package/dist/src/svm/clients/SvmSpoke/types/{v3RelayExecutionEventInfo.d.ts → relayExecutionEventInfo.d.ts} +5 -5
  45. package/dist/src/svm/clients/SvmSpoke/types/{v3RelayExecutionEventInfo.js → relayExecutionEventInfo.js} +7 -7
  46. package/dist/src/svm/clients/SvmSpoke/types/{requestedV3SlowFill.d.ts → requestedSlowFill.d.ts} +5 -5
  47. package/dist/src/svm/clients/SvmSpoke/types/{requestedV3SlowFill.js → requestedSlowFill.js} +7 -7
  48. package/dist/src/svm/clients/SvmSpoke/types/{v3SlowFill.d.ts → slowFill.d.ts} +8 -8
  49. package/dist/src/svm/clients/SvmSpoke/types/{v3SlowFill.js → slowFill.js} +9 -9
  50. package/dist/src/svm/web3-v1/instructionParamsUtils.d.ts +8 -8
  51. package/dist/src/svm/web3-v1/instructionParamsUtils.js +16 -16
  52. package/dist/src/types/svm.d.ts +6 -6
  53. package/dist/target/types/svm_spoke.d.ts +388 -388
  54. package/dist/tasks/enableL1TokenAcrossEcosystem.js +14 -10
  55. package/dist/test/svm/SvmSpoke.Deposit.js +48 -47
  56. package/dist/test/svm/SvmSpoke.Fill.AcrossPlus.js +2 -2
  57. package/dist/test/svm/SvmSpoke.Fill.js +28 -56
  58. package/dist/test/svm/SvmSpoke.SlowFill.AcrossPlus.js +13 -13
  59. package/dist/test/svm/SvmSpoke.SlowFill.js +40 -40
  60. package/dist/utils/constants.d.ts +1 -1
  61. package/dist/utils/constants.js +3 -1
  62. package/package.json +2 -2
  63. package/dist/src/svm/clients/SvmSpoke/accounts/executeV3SlowRelayLeafParams.d.ts +0 -31
  64. package/dist/src/svm/clients/SvmSpoke/accounts/executeV3SlowRelayLeafParams.js +0 -70
  65. package/dist/src/svm/clients/SvmSpoke/accounts/fillV3RelayParams.d.ts +0 -31
  66. package/dist/src/svm/clients/SvmSpoke/accounts/fillV3RelayParams.js +0 -67
  67. package/dist/src/svm/clients/SvmSpoke/accounts/requestV3SlowFillParams.d.ts +0 -27
  68. package/dist/src/svm/clients/SvmSpoke/accounts/requestV3SlowFillParams.js +0 -66
  69. package/dist/src/svm/clients/SvmSpoke/instructions/depositV3.d.ts +0 -123
  70. package/dist/src/svm/clients/SvmSpoke/instructions/depositV3Now.d.ts +0 -119
  71. package/dist/src/svm/clients/SvmSpoke/instructions/executeV3SlowRelayLeaf.d.ts +0 -104
  72. package/dist/src/svm/clients/SvmSpoke/instructions/fillV3Relay.d.ts +0 -104
  73. package/dist/src/svm/clients/SvmSpoke/instructions/requestV3SlowFill.d.ts +0 -76
  74. package/dist/src/svm/clients/SvmSpoke/instructions/unsafeDepositV3.d.ts +0 -127
@@ -59,5 +59,5 @@ export declare const POLYGON_CHAIN_IDS: {
59
59
  * @link https://developers.circle.com/stablecoins/docs/supported-domains
60
60
  */
61
61
  export declare const CIRCLE_DOMAIN_IDs: {
62
- [chainId: number]: number;
62
+ [k: string]: number;
63
63
  };
@@ -143,6 +143,10 @@ exports.OP_STACK_ADDRESS_MAP = {
143
143
  L1CrossDomainMessenger: "0x58Cc85b8D04EA49cC6DBd3CbFFd00B4B8D6cb3ef",
144
144
  L1StandardBridge: "0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1",
145
145
  },
146
+ [utils_1.CHAIN_IDs.UNICHAIN_SEPOLIA]: {
147
+ L1CrossDomainMessenger: "0x448A37330A60494E666F6DD60aD48d930AEbA381",
148
+ L1StandardBridge: "0xea58fcA6849d79EAd1f26608855c2D6407d54Ce2",
149
+ },
146
150
  },
147
151
  };
148
152
  exports.L2_ADDRESS_MAP = {
@@ -226,6 +230,10 @@ exports.L2_ADDRESS_MAP = {
226
230
  cctpTokenMessenger: "0x4e744b28E787c3aD0e810eD65A24461D4ac5a762",
227
231
  cctpMessageTransmitter: "0x353bE9E2E38AB1D19104534e4edC21c643Df86f4",
228
232
  },
233
+ [utils_1.CHAIN_IDs.UNICHAIN_SEPOLIA]: {
234
+ cctpTokenMessenger: "0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782",
235
+ cctpMessageTransmitter: "0xbc498c326533d675cf571B90A2Ced265ACb7d086",
236
+ },
229
237
  };
230
238
  exports.POLYGON_CHAIN_IDS = {
231
239
  [utils_1.CHAIN_IDs.MAINNET]: utils_1.CHAIN_IDs.POLYGON,
@@ -236,16 +244,4 @@ exports.POLYGON_CHAIN_IDS = {
236
244
  * and is an internal mappinng maintained by Circle.
237
245
  * @link https://developers.circle.com/stablecoins/docs/supported-domains
238
246
  */
239
- exports.CIRCLE_DOMAIN_IDs = {
240
- [utils_1.CHAIN_IDs.MAINNET]: 0,
241
- [utils_1.CHAIN_IDs.OPTIMISM]: 2,
242
- [utils_1.CHAIN_IDs.ARBITRUM]: 3,
243
- [utils_1.CHAIN_IDs.BASE]: 6,
244
- [utils_1.CHAIN_IDs.POLYGON]: 7,
245
- // Testnet
246
- [utils_1.CHAIN_IDs.SEPOLIA]: 0,
247
- [utils_1.CHAIN_IDs.OPTIMISM_SEPOLIA]: 2,
248
- [utils_1.CHAIN_IDs.ARBITRUM_SEPOLIA]: 3,
249
- [utils_1.CHAIN_IDs.BASE_SEPOLIA]: 6,
250
- [utils_1.CHAIN_IDs.POLYGON_AMOY]: 7,
251
- };
247
+ exports.CIRCLE_DOMAIN_IDs = Object.fromEntries(Object.entries(utils_1.PUBLIC_NETWORKS).map(([chainId, { cctpDomain }]) => [Number(chainId), cctpDomain]));
@@ -156,7 +156,8 @@
156
156
  "Polygon_Adapter": { "address": "0x540029039E493b1B843653f93C3064A956931747", "blockNumber": 5984591 },
157
157
  "Lisk_Adapter": { "address": "0x13a8B1D6443016424e2b8Bac40dD884Ee679AFc4", "blockNumber": 6226289 },
158
158
  "Lens_Adapter": { "address": "0x8fac6F764ae0b4F632FE2E6c938ED5637E629ff2", "blockNumber": 7448085 },
159
- "Blast_Adapter": { "address": "0x09500Ffd743e01B4146a4BA795231Ca7Ca37819f", "blockNumber": 6233857 }
159
+ "Blast_Adapter": { "address": "0x09500Ffd743e01B4146a4BA795231Ca7Ca37819f", "blockNumber": 6233857 },
160
+ "DoctorWho_Adapter": { "address": "0x2b482aFb675e1F231521d5E56770ce4aac592246", "blockNumber": 7698546 }
160
161
  },
161
162
  "37111": {
162
163
  "SpokePool": { "address": "0x6A0a7f39530923911832Dd60667CE5da5449967B", "blockNumber": 156275 },
@@ -178,5 +179,27 @@
178
179
  "130": {
179
180
  "SpokePool": { "address": "0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64", "blockNumber": 7915488 },
180
181
  "MulticallHandler": { "address": "0x924a9f036260DdD5808007E1AA95f08eD08aA569", "blockNumber": 7930191 }
182
+ },
183
+ "1301": {
184
+ "SpokePool": { "address": "0x6999526e507Cc3b03b180BbE05E1Ff938259A874", "blockNumber": 12593713 },
185
+ "MulticallHandler": { "address": "0x924a9f036260DdD5808007E1AA95f08eD08aA569", "blockNumber": 12594561 }
186
+ },
187
+ "133268194659241": {
188
+ "SvmSpoke": {
189
+ "address": "JAZWcGrpSWNPTBj8QtJ9UyQqhJCDhG9GJkDeMf5NQBiq",
190
+ "blockNumber": 356313770
191
+ },
192
+ "MulticallHandler": {
193
+ "address": "Fk1RpqsfeWt8KnFCTW9NQVdVxYvxuqjGn6iPB9wrmM8h",
194
+ "blockNumber": 356321050
195
+ },
196
+ "MessageTransmitter": {
197
+ "address": "CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",
198
+ "blockNumber": 339604856
199
+ },
200
+ "TokenMessengerMinter": {
201
+ "address": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",
202
+ "blockNumber": 277864039
203
+ }
181
204
  }
182
205
  }
@@ -344,6 +344,13 @@ const config = {
344
344
  accounts: { mnemonic },
345
345
  companionNetworks: { l1: "mainnet" },
346
346
  },
347
+ "unichain-sepolia": {
348
+ chainId: constants_1.CHAIN_IDs.UNICHAIN_SEPOLIA,
349
+ url: "https://sepolia.unichain.org",
350
+ saveDeployments: true,
351
+ accounts: { mnemonic },
352
+ companionNetworks: { l1: "sepolia" },
353
+ },
347
354
  },
348
355
  gasReporter: { enabled: process.env.REPORT_GAS !== undefined, currency: "USD" },
349
356
  etherscan: {
@@ -375,7 +382,8 @@ const config = {
375
382
  alephzero: "blockscout",
376
383
  ink: "blockscout",
377
384
  soneium: "blockscout",
378
- unichain: process.env.UNISCAN_API_KEY,
385
+ unichain: process.env.UNICHAIN_ETHERSCAN_API_KEY,
386
+ "unichain-sepolia": process.env.UNICHAIN_ETHERSCAN_API_KEY,
379
387
  },
380
388
  customChains: [
381
389
  {
@@ -570,6 +578,14 @@ const config = {
570
578
  browserURL: "https://uniscan.xyz",
571
579
  },
572
580
  },
581
+ {
582
+ network: "unichain-sepolia",
583
+ chainId: constants_1.CHAIN_IDs.UNICHAIN_SEPOLIA,
584
+ urls: {
585
+ apiURL: "https://api-sepolia.uniscan.xyz/api",
586
+ browserURL: "https://sepolia.uniscan.xyz",
587
+ },
588
+ },
573
589
  ],
574
590
  },
575
591
  namedAccounts: { deployer: 0 },
@@ -153,7 +153,7 @@ async function fillV3RelayToRandom() {
153
153
  // Prepare fill instruction as we will need to use Address Lookup Table (ALT).
154
154
  const fillV3RelayValues = [relayHash, relayData, repaymentChain, repaymentAddress];
155
155
  if (bufferParams) {
156
- await (0, web3_v1_1.loadFillV3RelayParams)(program, signer, fillV3RelayValues[1], fillV3RelayValues[2], fillV3RelayValues[3]);
156
+ await (0, web3_v1_1.loadFillRelayParams)(program, signer, fillV3RelayValues[1], fillV3RelayValues[2], fillV3RelayValues[3]);
157
157
  }
158
158
  const fillV3RelayParams = bufferParams ? [fillV3RelayValues[0], null, null, null] : fillV3RelayValues;
159
159
  const [instructionParams] = bufferParams
@@ -177,7 +177,7 @@ async function fillV3RelayToRandom() {
177
177
  ...multicallHandlerCoder.compiledKeyMetas,
178
178
  ];
179
179
  const fillInstruction = await program.methods
180
- .fillV3Relay(...fillV3RelayParams)
180
+ .fillRelay(...fillV3RelayParams)
181
181
  .accounts(fillAccounts)
182
182
  .remainingAccounts(remainingAccounts)
183
183
  .instruction();
@@ -55,7 +55,7 @@ const argvPromise = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv)).o
55
55
  "pausedFills",
56
56
  "setXDomainAdmin",
57
57
  "emergencyDeletedRootBundle",
58
- "requestedV3SlowFill",
58
+ "RequestedSlowFill",
59
59
  "claimedRelayerRefund",
60
60
  "tokensBridged",
61
61
  ],
@@ -49,7 +49,7 @@ const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
49
49
  .option("inputAmount", { type: "number", demandOption: true, describe: "Input amount" })
50
50
  .option("outputAmount", { type: "number", demandOption: true, describe: "Output amount" })
51
51
  .option("destinationChainId", { type: "string", demandOption: true, describe: "Destination chain ID" }).argv;
52
- async function depositV3() {
52
+ async function deposit() {
53
53
  const resolvedArgv = await argv;
54
54
  const seed = new anchor_1.BN(resolvedArgv.seed);
55
55
  const recipient = new web3_js_1.PublicKey(resolvedArgv.recipient);
@@ -98,7 +98,7 @@ async function depositV3() {
98
98
  const tokenDecimals = (await (0, spl_token_1.getMint)(provider.connection, inputToken, undefined, spl_token_1.TOKEN_PROGRAM_ID)).decimals;
99
99
  // Delegate state PDA to pull depositor tokens.
100
100
  const approveIx = await (0, spl_token_1.createApproveCheckedInstruction)(userTokenAccount, inputToken, statePda, signer.publicKey, BigInt(inputAmount.toString()), tokenDecimals, undefined, spl_token_1.TOKEN_PROGRAM_ID);
101
- const depositIx = await program.methods.depositV3(signer.publicKey, recipient, inputToken, outputToken, inputAmount, outputAmount, destinationChainId, exclusiveRelayer, quoteTimestamp, fillDeadline, exclusivityDeadline, message)
101
+ const depositIx = await program.methods.deposit(signer.publicKey, recipient, inputToken, outputToken, inputAmount, outputAmount, destinationChainId, exclusiveRelayer, quoteTimestamp, fillDeadline, exclusivityDeadline, message)
102
102
  .accounts({
103
103
  state: statePda,
104
104
  route: routePda,
@@ -114,4 +114,4 @@ async function depositV3() {
114
114
  console.log("Transaction signature:", tx);
115
115
  }
116
116
  // Run the depositV3 function
117
- depositV3();
117
+ deposit();
@@ -76,7 +76,7 @@ async function testBundleLogic() {
76
76
  // Delegate state PDA to pull depositor tokens.
77
77
  const inputAmount = amounts.reduce((acc, amount) => acc.add(amount), new anchor_1.BN(0));
78
78
  const approveIx = await (0, spl_token_1.createApproveCheckedInstruction)(userTokenAccount, inputToken, statePda, signer.publicKey, BigInt(inputAmount.toString()), tokenDecimals, undefined, spl_token_1.TOKEN_PROGRAM_ID);
79
- const depositIx = await program.methods.depositV3(signer.publicKey, signer.publicKey, // recipient is the signer for this example
79
+ const depositIx = await program.methods.deposit(signer.publicKey, signer.publicKey, // recipient is the signer for this example
80
80
  inputToken, inputToken, // Re-use inputToken as outputToken. does not matter for this deposit.
81
81
  inputAmount, new anchor_1.BN(0), new anchor_1.BN(11155111), // destinationChainId. assumed to be enabled, as with routePDA
82
82
  web3_js_1.PublicKey.default, // exclusiveRelayer
@@ -54,7 +54,7 @@ const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
54
54
  .option("depositId", { type: "string", demandOption: true, describe: "Deposit ID" })
55
55
  .option("fillDeadline", { type: "number", demandOption: false, describe: "Fill deadline" })
56
56
  .option("exclusivityDeadline", { type: "number", demandOption: false, describe: "Exclusivity deadline" }).argv;
57
- async function fillV3Relay() {
57
+ async function fillRelay() {
58
58
  const resolvedArgv = await argv;
59
59
  const depositor = new web3_js_1.PublicKey(resolvedArgv.depositor);
60
60
  const recipient = new web3_js_1.PublicKey(resolvedArgv.recipient);
@@ -114,10 +114,19 @@ async function fillV3Relay() {
114
114
  value: value.toString(),
115
115
  })));
116
116
  const tokenDecimals = (await (0, spl_token_1.getMint)(provider.connection, outputToken, undefined, spl_token_1.TOKEN_PROGRAM_ID)).decimals;
117
+ // Create the ATA using the create_token_accounts method
118
+ const createTokenAccountsIx = await program.methods
119
+ .createTokenAccounts()
120
+ .accounts({ signer: signer.publicKey, mint: outputToken, tokenProgram: spl_token_1.TOKEN_PROGRAM_ID })
121
+ .remainingAccounts([
122
+ { pubkey: recipient, isWritable: false, isSigner: false },
123
+ { pubkey: recipientTokenAccount, isWritable: true, isSigner: false },
124
+ ])
125
+ .instruction();
117
126
  // Delegate state PDA to pull relayer tokens.
118
127
  const approveIx = await (0, spl_token_1.createApproveCheckedInstruction)(relayerTokenAccount, outputToken, statePda, signer.publicKey, BigInt(relayData.outputAmount.toString()), tokenDecimals, undefined, spl_token_1.TOKEN_PROGRAM_ID);
119
- const fillIx = await program.methods.fillV3Relay(Array.from(relayHashUint8Array), relayData, chainId, signer.publicKey)
120
- .accounts({
128
+ const fillDataValues = [Array.from(relayHashUint8Array), relayData, chainId, signer.publicKey];
129
+ const fillAccounts = {
121
130
  state: statePda,
122
131
  signer: signer.publicKey,
123
132
  instructionParams: program.programId,
@@ -129,11 +138,15 @@ async function fillV3Relay() {
129
138
  associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
130
139
  systemProgram: web3_js_1.SystemProgram.programId,
131
140
  programId: programId,
132
- })
141
+ program: program.programId,
142
+ };
143
+ const fillIx = await program.methods
144
+ .fillRelay(...fillDataValues)
145
+ .accounts(fillAccounts)
133
146
  .instruction();
134
- const fillTx = new web3_js_1.Transaction().add(approveIx, fillIx);
147
+ const fillTx = new web3_js_1.Transaction().add(createTokenAccountsIx, approveIx, fillIx);
135
148
  const tx = await (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, fillTx, [signer]);
136
149
  console.log("Transaction signature:", tx);
137
150
  }
138
151
  // Run the fillV3Relay function
139
- fillV3Relay();
152
+ fillRelay();