@across-protocol/contracts 4.0.11 → 4.0.13
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.
- package/README.md +182 -3
- package/dist/deployments/deployments.json +4 -2
- package/dist/scripts/svm/buildHelpers/generateSvmClients.js +4 -8
- package/dist/scripts/svm/{enableRoute.js → createVault.js} +15 -37
- package/dist/scripts/svm/fakeFillWithRandomDistribution.js +9 -8
- package/dist/scripts/svm/initialize.js +19 -5
- package/dist/scripts/svm/nativeDeposit.js +159 -0
- package/dist/scripts/svm/queryEventsV2.js +3 -3
- package/dist/scripts/svm/{queryRoute.js → queryVault.js} +10 -25
- package/dist/scripts/svm/remoteHubPoolPauseDeposits.js +2 -2
- package/dist/scripts/svm/simpleDeposit.js +30 -18
- package/dist/scripts/svm/simpleFakeRelayerRepayment.js +2 -9
- package/dist/scripts/svm/simpleFill.js +7 -5
- package/dist/scripts/svm/squadsIdlUpgrade.d.ts +1 -0
- package/dist/scripts/svm/squadsIdlUpgrade.js +76 -0
- package/dist/src/svm/assets/idl/svm_spoke.json +68 -409
- package/dist/src/svm/assets/svm_spoke.d.ts +65 -406
- package/dist/src/svm/clients/MessageTransmitter/accounts/index.d.ts +10 -0
- package/dist/src/svm/clients/MessageTransmitter/accounts/index.js +26 -0
- package/dist/src/svm/clients/MessageTransmitter/accounts/messageSent.d.ts +28 -0
- package/dist/src/svm/clients/MessageTransmitter/accounts/messageSent.js +64 -0
- package/dist/src/svm/clients/MessageTransmitter/accounts/messageTransmitter.d.ts +46 -0
- package/dist/src/svm/clients/MessageTransmitter/accounts/messageTransmitter.js +82 -0
- package/dist/src/svm/clients/MessageTransmitter/accounts/usedNonces.d.ts +31 -0
- package/dist/src/svm/clients/MessageTransmitter/accounts/usedNonces.js +70 -0
- package/dist/src/svm/clients/MessageTransmitter/errors/index.d.ts +8 -0
- package/dist/src/svm/clients/MessageTransmitter/errors/index.js +24 -0
- package/dist/src/svm/clients/MessageTransmitter/errors/messageTransmitter.d.ts +83 -0
- package/dist/src/svm/clients/MessageTransmitter/errors/messageTransmitter.js +124 -0
- package/dist/src/svm/clients/MessageTransmitter/index.d.ts +12 -0
- package/dist/src/svm/clients/MessageTransmitter/index.js +28 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/acceptOwnership.d.ts +45 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/acceptOwnership.js +85 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/disableAttester.d.ts +55 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/disableAttester.js +105 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/enableAttester.d.ts +55 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/enableAttester.js +105 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/getNoncePda.d.ts +43 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/getNoncePda.js +82 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/index.d.ts +25 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/index.js +41 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/initialize.d.ts +70 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/initialize.js +123 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/isNonceUsed.d.ts +42 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/isNonceUsed.js +77 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/pause.d.ts +45 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/pause.js +85 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/receiveMessage.d.ts +67 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/receiveMessage.js +113 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/reclaimEventAccount.d.ts +48 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/reclaimEventAccount.js +94 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/replaceMessage.d.ts +64 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/replaceMessage.js +132 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/sendMessage.d.ts +61 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/sendMessage.js +112 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/sendMessageWithCaller.d.ts +64 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/sendMessageWithCaller.js +117 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/setMaxMessageBodySize.d.ts +49 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/setMaxMessageBodySize.js +94 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/setSignatureThreshold.d.ts +49 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/setSignatureThreshold.js +97 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/transferOwnership.d.ts +49 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/transferOwnership.js +91 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/unpause.d.ts +45 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/unpause.js +85 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/updateAttesterManager.d.ts +49 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/updateAttesterManager.js +94 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/updatePauser.d.ts +49 -0
- package/dist/src/svm/clients/MessageTransmitter/instructions/updatePauser.js +91 -0
- package/dist/src/svm/clients/MessageTransmitter/programs/index.d.ts +8 -0
- package/dist/src/svm/clients/MessageTransmitter/programs/index.js +24 -0
- package/dist/src/svm/clients/MessageTransmitter/programs/messageTransmitter.d.ts +78 -0
- package/dist/src/svm/clients/MessageTransmitter/programs/messageTransmitter.js +112 -0
- package/dist/src/svm/clients/MessageTransmitter/shared/index.d.ts +49 -0
- package/dist/src/svm/clients/MessageTransmitter/shared/index.js +94 -0
- package/dist/src/svm/clients/MessageTransmitter/types/attesterDisabled.d.ts +15 -0
- package/dist/src/svm/clients/MessageTransmitter/types/attesterDisabled.js +22 -0
- package/dist/src/svm/clients/MessageTransmitter/types/attesterEnabled.d.ts +15 -0
- package/dist/src/svm/clients/MessageTransmitter/types/attesterEnabled.js +22 -0
- package/dist/src/svm/clients/MessageTransmitter/types/attesterManagerUpdated.d.ts +16 -0
- package/dist/src/svm/clients/MessageTransmitter/types/attesterManagerUpdated.js +28 -0
- package/dist/src/svm/clients/MessageTransmitter/types/handleReceiveMessageParams.d.ts +18 -0
- package/dist/src/svm/clients/MessageTransmitter/types/handleReceiveMessageParams.js +32 -0
- package/dist/src/svm/clients/MessageTransmitter/types/index.d.ts +20 -0
- package/dist/src/svm/clients/MessageTransmitter/types/index.js +36 -0
- package/dist/src/svm/clients/MessageTransmitter/types/mathError.d.ts +17 -0
- package/dist/src/svm/clients/MessageTransmitter/types/mathError.js +29 -0
- package/dist/src/svm/clients/MessageTransmitter/types/maxMessageBodySizeUpdated.d.ts +17 -0
- package/dist/src/svm/clients/MessageTransmitter/types/maxMessageBodySizeUpdated.js +22 -0
- package/dist/src/svm/clients/MessageTransmitter/types/messageReceived.d.ts +25 -0
- package/dist/src/svm/clients/MessageTransmitter/types/messageReceived.js +34 -0
- package/dist/src/svm/clients/MessageTransmitter/types/ownershipTransferStarted.d.ts +16 -0
- package/dist/src/svm/clients/MessageTransmitter/types/ownershipTransferStarted.js +28 -0
- package/dist/src/svm/clients/MessageTransmitter/types/ownershipTransferred.d.ts +16 -0
- package/dist/src/svm/clients/MessageTransmitter/types/ownershipTransferred.js +28 -0
- package/dist/src/svm/clients/MessageTransmitter/types/pause.d.ts +13 -0
- package/dist/src/svm/clients/MessageTransmitter/types/pause.js +22 -0
- package/dist/src/svm/clients/MessageTransmitter/types/pauserChanged.d.ts +15 -0
- package/dist/src/svm/clients/MessageTransmitter/types/pauserChanged.js +22 -0
- package/dist/src/svm/clients/MessageTransmitter/types/signatureThresholdUpdated.d.ts +16 -0
- package/dist/src/svm/clients/MessageTransmitter/types/signatureThresholdUpdated.js +28 -0
- package/dist/src/svm/clients/MessageTransmitter/types/unpause.d.ts +13 -0
- package/dist/src/svm/clients/MessageTransmitter/types/unpause.js +22 -0
- package/dist/src/svm/clients/SvmSpoke/accounts/index.d.ts +0 -1
- package/dist/src/svm/clients/SvmSpoke/accounts/index.js +0 -1
- package/dist/src/svm/clients/SvmSpoke/errors/svmSpoke.d.ts +31 -35
- package/dist/src/svm/clients/SvmSpoke/errors/svmSpoke.js +46 -52
- package/dist/src/svm/clients/SvmSpoke/instructions/bridgeTokensToHubPool.js +1 -1
- package/dist/src/svm/clients/SvmSpoke/instructions/claimRelayerRefund.js +1 -1
- package/dist/src/svm/clients/SvmSpoke/instructions/deposit.d.ts +21 -13
- package/dist/src/svm/clients/SvmSpoke/instructions/deposit.js +40 -8
- package/dist/src/svm/clients/SvmSpoke/instructions/depositNow.d.ts +21 -13
- package/dist/src/svm/clients/SvmSpoke/instructions/depositNow.js +40 -8
- package/dist/src/svm/clients/SvmSpoke/instructions/executeRelayerRefundLeaf.js +1 -1
- package/dist/src/svm/clients/SvmSpoke/instructions/executeRelayerRefundLeafDeferred.js +1 -1
- package/dist/src/svm/clients/SvmSpoke/instructions/executeSlowRelayLeaf.js +2 -2
- package/dist/src/svm/clients/SvmSpoke/instructions/fillRelay.d.ts +20 -16
- package/dist/src/svm/clients/SvmSpoke/instructions/fillRelay.js +7 -2
- package/dist/src/svm/clients/SvmSpoke/instructions/handleReceiveMessage.js +1 -1
- package/dist/src/svm/clients/SvmSpoke/instructions/index.d.ts +0 -1
- package/dist/src/svm/clients/SvmSpoke/instructions/index.js +0 -1
- package/dist/src/svm/clients/SvmSpoke/instructions/unsafeDeposit.d.ts +21 -13
- package/dist/src/svm/clients/SvmSpoke/instructions/unsafeDeposit.js +40 -8
- package/dist/src/svm/clients/SvmSpoke/programs/svmSpoke.d.ts +6 -10
- package/dist/src/svm/clients/SvmSpoke/programs/svmSpoke.js +5 -13
- package/dist/src/svm/clients/SvmSpoke/types/index.d.ts +0 -1
- package/dist/src/svm/clients/SvmSpoke/types/index.js +0 -1
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/index.d.ts +12 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/index.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/localToken.d.ts +43 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/localToken.js +82 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/remoteTokenMessenger.d.ts +29 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/remoteTokenMessenger.js +71 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/tokenMessenger.d.ts +35 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/tokenMessenger.js +74 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/tokenMinter.d.ts +33 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/tokenMinter.js +72 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/tokenPair.d.ts +33 -0
- package/dist/src/svm/clients/TokenMessengerMinter/accounts/tokenPair.js +72 -0
- package/dist/src/svm/clients/TokenMessengerMinter/errors/index.d.ts +8 -0
- package/dist/src/svm/clients/TokenMessengerMinter/errors/index.js +24 -0
- package/dist/src/svm/clients/TokenMessengerMinter/errors/tokenMessengerMinter.d.ts +45 -0
- package/dist/src/svm/clients/TokenMessengerMinter/errors/tokenMessengerMinter.js +67 -0
- package/dist/src/svm/clients/TokenMessengerMinter/index.d.ts +12 -0
- package/dist/src/svm/clients/TokenMessengerMinter/index.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/acceptOwnership.d.ts +45 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/acceptOwnership.js +82 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/addLocalToken.d.ts +63 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/addLocalToken.js +115 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/addRemoteTokenMessenger.d.ts +61 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/addRemoteTokenMessenger.js +110 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/burnTokenCustody.d.ts +64 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/burnTokenCustody.js +117 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/depositForBurn.d.ts +94 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/depositForBurn.js +161 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/depositForBurnWithCaller.d.ts +97 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/depositForBurnWithCaller.js +166 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/handleReceiveMessage.d.ts +79 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/handleReceiveMessage.js +132 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/index.d.ts +26 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/index.js +42 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/initialize.d.ts +73 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/initialize.js +124 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/linkTokenPair.d.ts +64 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/linkTokenPair.js +109 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/pause.d.ts +45 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/pause.js +82 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/removeLocalToken.d.ts +57 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/removeLocalToken.js +105 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/removeRemoteTokenMessenger.d.ts +51 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/removeRemoteTokenMessenger.js +94 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/replaceDepositForBurn.d.ts +79 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/replaceDepositForBurn.js +150 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/setMaxBurnAmountPerMessage.d.ts +52 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/setMaxBurnAmountPerMessage.js +97 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/setTokenController.d.ts +52 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/setTokenController.js +91 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/transferOwnership.d.ts +49 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/transferOwnership.js +88 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/unlinkTokenPair.d.ts +51 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/unlinkTokenPair.js +91 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/unpause.d.ts +45 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/unpause.js +82 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/updatePauser.d.ts +52 -0
- package/dist/src/svm/clients/TokenMessengerMinter/instructions/updatePauser.js +91 -0
- package/dist/src/svm/clients/TokenMessengerMinter/programs/index.d.ts +8 -0
- package/dist/src/svm/clients/TokenMessengerMinter/programs/index.js +24 -0
- package/dist/src/svm/clients/TokenMessengerMinter/programs/tokenMessengerMinter.d.ts +83 -0
- package/dist/src/svm/clients/TokenMessengerMinter/programs/tokenMessengerMinter.js +124 -0
- package/dist/src/svm/clients/TokenMessengerMinter/shared/index.d.ts +49 -0
- package/dist/src/svm/clients/TokenMessengerMinter/shared/index.js +94 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/depositForBurn.d.ts +31 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/depositForBurn.js +40 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/index.d.ts +24 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/index.js +40 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/localTokenAdded.d.ts +16 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/localTokenAdded.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/localTokenRemoved.d.ts +16 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/localTokenRemoved.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/mintAndWithdraw.d.ts +21 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/mintAndWithdraw.js +30 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/ownershipTransferStarted.d.ts +16 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/ownershipTransferStarted.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/ownershipTransferred.d.ts +16 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/ownershipTransferred.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/pause.d.ts +13 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/pause.js +22 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/pauserChanged.d.ts +15 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/pauserChanged.js +22 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/remoteTokenMessengerAdded.d.ts +16 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/remoteTokenMessengerAdded.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/remoteTokenMessengerRemoved.d.ts +16 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/remoteTokenMessengerRemoved.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/setBurnLimitPerMessage.d.ts +19 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/setBurnLimitPerMessage.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/setTokenController.d.ts +15 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/setTokenController.js +22 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/tokenCustodyBurned.d.ts +19 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/tokenCustodyBurned.js +28 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/tokenMinterError.d.ts +23 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/tokenMinterError.js +35 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/tokenPairLinked.d.ts +17 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/tokenPairLinked.js +30 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/tokenPairUnlinked.d.ts +17 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/tokenPairUnlinked.js +30 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/unpause.d.ts +13 -0
- package/dist/src/svm/clients/TokenMessengerMinter/types/unpause.js +22 -0
- package/dist/src/svm/clients/index.d.ts +3 -1
- package/dist/src/svm/clients/index.js +5 -1
- package/dist/src/svm/web3-v1/helpers.d.ts +114 -1
- package/dist/src/svm/web3-v1/helpers.js +179 -1
- package/dist/target/types/svm_spoke.d.ts +65 -406
- package/dist/tasks/enableL1TokenAcrossEcosystem.js +4 -4
- package/dist/test/svm/SvmSpoke.Deposit.js +143 -176
- package/dist/test/svm/SvmSpoke.Fill.AcrossPlus.js +20 -17
- package/dist/test/svm/SvmSpoke.Fill.js +52 -38
- package/dist/test/svm/SvmSpoke.HandleReceiveMessage.js +2 -114
- package/dist/test/svm/SvmSpoke.SlowFill.AcrossPlus.js +2 -2
- package/dist/test/svm/SvmSpoke.SlowFill.js +37 -34
- package/dist/test/svm/SvmSpoke.common.d.ts +2 -3
- package/dist/test/svm/SvmSpoke.common.js +3 -12
- package/package.json +5 -5
- package/dist/scripts/svm/remoteHubPoolSetDepositRoute.d.ts +0 -1
- package/dist/scripts/svm/remoteHubPoolSetDepositRoute.js +0 -252
- package/dist/src/svm/clients/SvmSpoke/accounts/route.d.ts +0 -27
- package/dist/src/svm/clients/SvmSpoke/accounts/route.js +0 -66
- package/dist/src/svm/clients/SvmSpoke/instructions/setEnableRoute.d.ts +0 -95
- package/dist/src/svm/clients/SvmSpoke/instructions/setEnableRoute.js +0 -213
- package/dist/src/svm/clients/SvmSpoke/types/enabledDepositRoute.d.ts +0 -21
- package/dist/src/svm/clients/SvmSpoke/types/enabledDepositRoute.js +0 -30
- package/dist/test/svm/SvmSpoke.Routes.js +0 -167
- /package/dist/scripts/svm/{enableRoute.d.ts → createVault.d.ts} +0 -0
- /package/dist/scripts/svm/{queryRoute.d.ts → nativeDeposit.d.ts} +0 -0
- /package/dist/{test/svm/SvmSpoke.Routes.d.ts → scripts/svm/queryVault.d.ts} +0 -0
|
@@ -36,24 +36,26 @@ const utils_1 = require("./utils");
|
|
|
36
36
|
const { provider, connection, program, owner, chainId, seedBalance, recipient, initializeState, setCurrentTime, assertSE, assert, } = SvmSpoke_common_1.common;
|
|
37
37
|
describe("svm_spoke.fill", () => {
|
|
38
38
|
anchor.setProvider(provider);
|
|
39
|
-
const payer = anchor.AnchorProvider.env().wallet
|
|
39
|
+
const { payer } = anchor.AnchorProvider.env().wallet;
|
|
40
40
|
const relayer = web3_js_1.Keypair.generate();
|
|
41
41
|
const otherRelayer = web3_js_1.Keypair.generate();
|
|
42
42
|
const { encodedMessage, fillRemainingAccounts } = (0, utils_1.testAcrossPlusMessage)();
|
|
43
43
|
const tokenDecimals = 6;
|
|
44
|
-
let state, mint, relayerTA, recipientTA, otherRelayerTA, tokenProgram;
|
|
44
|
+
let state, mint, relayerTA, recipientTA, otherRelayerTA, tokenProgram, seed;
|
|
45
45
|
const relayAmount = 500000;
|
|
46
46
|
let relayData; // reused relay data for all tests.
|
|
47
47
|
let accounts; // Store accounts to simplify contract interactions.
|
|
48
|
-
|
|
48
|
+
const updateRelayData = (newRelayData) => {
|
|
49
49
|
relayData = newRelayData;
|
|
50
50
|
const relayHashUint8Array = (0, web3_v1_1.calculateRelayHashUint8Array)(relayData, chainId);
|
|
51
51
|
const [fillStatusPDA] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("fills"), relayHashUint8Array], program.programId);
|
|
52
|
+
const { pda: delegatePda } = (0, web3_v1_1.getFillRelayDelegatePda)(relayHashUint8Array, new anchor_1.BN(1), relayer.publicKey, program.programId);
|
|
52
53
|
accounts = {
|
|
53
54
|
state,
|
|
55
|
+
delegate: delegatePda,
|
|
54
56
|
signer: relayer.publicKey,
|
|
55
57
|
instructionParams: program.programId,
|
|
56
|
-
mint
|
|
58
|
+
mint,
|
|
57
59
|
relayerTokenAccount: relayerTA,
|
|
58
60
|
recipientTokenAccount: recipientTA,
|
|
59
61
|
fillStatus: fillStatusPDA,
|
|
@@ -62,18 +64,17 @@ describe("svm_spoke.fill", () => {
|
|
|
62
64
|
systemProgram: anchor.web3.SystemProgram.programId,
|
|
63
65
|
program: program.programId,
|
|
64
66
|
};
|
|
65
|
-
}
|
|
67
|
+
};
|
|
66
68
|
const approvedFillRelay = async (fillDataValues, calledFillAccounts = accounts, callingRelayer = relayer) => {
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
+
const relayHash = Uint8Array.from(fillDataValues[0]);
|
|
70
|
+
const { seedHash, pda: delegatePda } = (0, web3_v1_1.getFillRelayDelegatePda)(relayHash, fillDataValues[2], fillDataValues[3], program.programId);
|
|
71
|
+
const approveIx = await (0, spl_token_1.createApproveCheckedInstruction)(calledFillAccounts.relayerTokenAccount, calledFillAccounts.mint, delegatePda, calledFillAccounts.signer, BigInt(fillDataValues[1].outputAmount.toString()), tokenDecimals, undefined, tokenProgram);
|
|
69
72
|
const fillIx = await program.methods
|
|
70
73
|
.fillRelay(...fillDataValues)
|
|
71
|
-
.accounts(calledFillAccounts)
|
|
74
|
+
.accounts({ ...calledFillAccounts, delegate: delegatePda })
|
|
72
75
|
.remainingAccounts(fillRemainingAccounts)
|
|
73
76
|
.instruction();
|
|
74
|
-
|
|
75
|
-
const tx = await (0, web3_js_1.sendAndConfirmTransaction)(connection, fillTx, [payer, callingRelayer]);
|
|
76
|
-
return tx;
|
|
77
|
+
return (0, web3_js_1.sendAndConfirmTransaction)(connection, new web3_js_1.Transaction().add(approveIx, fillIx), [payer, callingRelayer]);
|
|
77
78
|
};
|
|
78
79
|
before("Funds relayer wallets", async () => {
|
|
79
80
|
await connection.requestAirdrop(relayer.publicKey, 10_000_000_000); // 10 SOL
|
|
@@ -90,7 +91,7 @@ describe("svm_spoke.fill", () => {
|
|
|
90
91
|
await connection.requestAirdrop(otherRelayer.publicKey, 10_000_000_000); // 10 SOL
|
|
91
92
|
});
|
|
92
93
|
beforeEach(async () => {
|
|
93
|
-
({ state } = await initializeState());
|
|
94
|
+
({ state, seed } = await initializeState());
|
|
94
95
|
tokenProgram = spl_token_1.TOKEN_PROGRAM_ID; // Some tests might override this.
|
|
95
96
|
const initialRelayData = {
|
|
96
97
|
depositor: recipient,
|
|
@@ -108,7 +109,7 @@ describe("svm_spoke.fill", () => {
|
|
|
108
109
|
};
|
|
109
110
|
updateRelayData(initialRelayData);
|
|
110
111
|
});
|
|
111
|
-
it("Fills a
|
|
112
|
+
it("Fills a relay and verifies balances", async () => {
|
|
112
113
|
// Verify recipient's balance before the fill
|
|
113
114
|
let recipientAccount = await (0, spl_token_1.getAccount)(connection, recipientTA);
|
|
114
115
|
assertSE(recipientAccount.amount, "0", "Recipient's balance should be 0 before the fill");
|
|
@@ -116,7 +117,7 @@ describe("svm_spoke.fill", () => {
|
|
|
116
117
|
let relayerAccount = await (0, spl_token_1.getAccount)(connection, relayerTA);
|
|
117
118
|
assertSE(relayerAccount.amount, seedBalance, "Relayer's balance should be equal to seed balance before the fill");
|
|
118
119
|
const relayHash = Array.from((0, web3_v1_1.calculateRelayHashUint8Array)(relayData, chainId));
|
|
119
|
-
await approvedFillRelay([relayHash, relayData,
|
|
120
|
+
await approvedFillRelay([relayHash, relayData, chainId, relayer.publicKey]);
|
|
120
121
|
// Verify relayer's balance after the fill
|
|
121
122
|
relayerAccount = await (0, spl_token_1.getAccount)(connection, relayerTA);
|
|
122
123
|
assertSE(relayerAccount.amount, seedBalance - relayAmount, "Relayer's balance should be reduced by the relay amount");
|
|
@@ -136,8 +137,9 @@ describe("svm_spoke.fill", () => {
|
|
|
136
137
|
if (key === "message") {
|
|
137
138
|
assertSE(event.messageHash, (0, web3_v1_1.hashNonEmptyMessage)(value), `MessageHash should match`);
|
|
138
139
|
}
|
|
139
|
-
else
|
|
140
|
+
else {
|
|
140
141
|
assertSE(event[key], value, `${key.charAt(0).toUpperCase() + key.slice(1)} should match`);
|
|
142
|
+
}
|
|
141
143
|
});
|
|
142
144
|
// RelayExecutionInfo should match.
|
|
143
145
|
assertSE(event.relayExecutionInfo.updatedRecipient, relayData.recipient, "UpdatedRecipient should match");
|
|
@@ -148,7 +150,7 @@ describe("svm_spoke.fill", () => {
|
|
|
148
150
|
assertSE(event.repaymentChainId, new anchor_1.BN(420), "Repayment chain id should match");
|
|
149
151
|
assertSE(event.relayer, otherRelayer.publicKey, "Repayment address should match");
|
|
150
152
|
});
|
|
151
|
-
it("Fails to fill a
|
|
153
|
+
it("Fails to fill a relay after the fill deadline", async () => {
|
|
152
154
|
updateRelayData({ ...relayData, fillDeadline: Math.floor(Date.now() / 1000) - 69 }); // 69 seconds ago
|
|
153
155
|
const relayHash = Array.from((0, web3_v1_1.calculateRelayHashUint8Array)(relayData, chainId));
|
|
154
156
|
try {
|
|
@@ -159,7 +161,7 @@ describe("svm_spoke.fill", () => {
|
|
|
159
161
|
assert.include(err.toString(), "ExpiredFillDeadline", "Expected ExpiredFillDeadline error");
|
|
160
162
|
}
|
|
161
163
|
});
|
|
162
|
-
it("Fails to fill a
|
|
164
|
+
it("Fails to fill a relay by non-exclusive relayer before exclusivity deadline", async () => {
|
|
163
165
|
accounts.signer = otherRelayer.publicKey;
|
|
164
166
|
accounts.relayerTokenAccount = otherRelayerTA;
|
|
165
167
|
const relayHash = Array.from((0, web3_v1_1.calculateRelayHashUint8Array)(relayData, chainId));
|
|
@@ -186,7 +188,7 @@ describe("svm_spoke.fill", () => {
|
|
|
186
188
|
const recipientAccountAfter = await (0, spl_token_1.getAccount)(connection, recipientTA);
|
|
187
189
|
assertSE(recipientAccountAfter.amount, BigInt(recipientAccountBefore.amount) + BigInt(relayAmount), "Recipient's balance should be increased by the relay amount");
|
|
188
190
|
});
|
|
189
|
-
it("Fails to fill a
|
|
191
|
+
it("Fails to fill a relay with the same deposit data multiple times", async () => {
|
|
190
192
|
const relayHash = Array.from((0, web3_v1_1.calculateRelayHashUint8Array)(relayData, chainId));
|
|
191
193
|
// First fill attempt
|
|
192
194
|
await approvedFillRelay([relayHash, relayData, new anchor_1.BN(1), relayer.publicKey]);
|
|
@@ -207,7 +209,7 @@ describe("svm_spoke.fill", () => {
|
|
|
207
209
|
fillStatus: accounts.fillStatus,
|
|
208
210
|
systemProgram: anchor.web3.SystemProgram.programId,
|
|
209
211
|
};
|
|
210
|
-
// Execute the
|
|
212
|
+
// Execute the fill_relay call
|
|
211
213
|
await approvedFillRelay([relayHash, relayData, new anchor_1.BN(1), relayer.publicKey]);
|
|
212
214
|
// Verify the fill PDA exists before closing
|
|
213
215
|
const fillStatusAccountBefore = await connection.getAccountInfo(accounts.fillStatus);
|
|
@@ -228,17 +230,17 @@ describe("svm_spoke.fill", () => {
|
|
|
228
230
|
const fillStatusAccountAfter = await connection.getAccountInfo(accounts.fillStatus);
|
|
229
231
|
assert.isNull(fillStatusAccountAfter, "Fill PDA should be closed after closing");
|
|
230
232
|
});
|
|
231
|
-
it("Fetches FillStatusAccount before and after
|
|
233
|
+
it("Fetches FillStatusAccount before and after fillRelay", async () => {
|
|
232
234
|
const relayHash = (0, web3_v1_1.calculateRelayHashUint8Array)(relayData, chainId);
|
|
233
235
|
const [fillStatusPDA] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("fills"), relayHash], program.programId);
|
|
234
|
-
// Fetch FillStatusAccount before
|
|
236
|
+
// Fetch FillStatusAccount before fillRelay
|
|
235
237
|
let fillStatusAccount = await program.account.fillStatusAccount.fetchNullable(fillStatusPDA);
|
|
236
|
-
assert.isNull(fillStatusAccount, "FillStatusAccount should be uninitialized before
|
|
238
|
+
assert.isNull(fillStatusAccount, "FillStatusAccount should be uninitialized before fillRelay");
|
|
237
239
|
// Fill the relay
|
|
238
240
|
await approvedFillRelay([Array.from(relayHash), relayData, new anchor_1.BN(1), relayer.publicKey]);
|
|
239
|
-
// Fetch FillStatusAccount after
|
|
241
|
+
// Fetch FillStatusAccount after fillRelay
|
|
240
242
|
fillStatusAccount = await program.account.fillStatusAccount.fetch(fillStatusPDA);
|
|
241
|
-
assert.isNotNull(fillStatusAccount, "FillStatusAccount should be initialized after
|
|
243
|
+
assert.isNotNull(fillStatusAccount, "FillStatusAccount should be initialized after fillRelay");
|
|
242
244
|
assert.equal(JSON.stringify(fillStatusAccount.status), `{\"filled\":{}}`, "FillStatus should be Filled");
|
|
243
245
|
assert.equal(fillStatusAccount.relayer.toString(), relayer.publicKey.toString(), "Caller should be set as relayer");
|
|
244
246
|
});
|
|
@@ -297,7 +299,7 @@ describe("svm_spoke.fill", () => {
|
|
|
297
299
|
assert.include(err.toString(), "InvalidMint", "Expected InvalidMint error");
|
|
298
300
|
}
|
|
299
301
|
});
|
|
300
|
-
it("Fills a
|
|
302
|
+
it("Fills a relay from custom relayer token account", async () => {
|
|
301
303
|
// Create and mint to custom relayer token account
|
|
302
304
|
const customKeypair = web3_js_1.Keypair.generate();
|
|
303
305
|
const customRelayerTA = await (0, spl_token_1.createAccount)(connection, payer, mint, relayer.publicKey, customKeypair);
|
|
@@ -327,7 +329,8 @@ describe("svm_spoke.fill", () => {
|
|
|
327
329
|
};
|
|
328
330
|
updateRelayData(newRelayData);
|
|
329
331
|
accounts.recipientTokenAccount = newRecipientATA;
|
|
330
|
-
const
|
|
332
|
+
const relayHashUint8Array = (0, web3_v1_1.calculateRelayHashUint8Array)(newRelayData, chainId);
|
|
333
|
+
const relayHash = Array.from(relayHashUint8Array);
|
|
331
334
|
try {
|
|
332
335
|
await approvedFillRelay([relayHash, newRelayData, new anchor_1.BN(1), relayer.publicKey]);
|
|
333
336
|
assert.fail("Fill should have failed due to missing ATA");
|
|
@@ -344,11 +347,12 @@ describe("svm_spoke.fill", () => {
|
|
|
344
347
|
{ pubkey: newRecipientATA, isWritable: true, isSigner: false },
|
|
345
348
|
])
|
|
346
349
|
.instruction();
|
|
350
|
+
const { pda: delegatePda } = (0, web3_v1_1.getFillRelayDelegatePda)(relayHashUint8Array, new anchor_1.BN(1), relayer.publicKey, program.programId);
|
|
347
351
|
// Fill the deposit in the same transaction
|
|
348
|
-
const approveInstruction = await (0, spl_token_1.createApproveCheckedInstruction)(accounts.relayerTokenAccount, accounts.mint,
|
|
352
|
+
const approveInstruction = await (0, spl_token_1.createApproveCheckedInstruction)(accounts.relayerTokenAccount, accounts.mint, delegatePda, accounts.signer, BigInt(newRelayData.outputAmount.toString()), tokenDecimals, undefined, tokenProgram);
|
|
349
353
|
const fillInstruction = await program.methods
|
|
350
354
|
.fillRelay(relayHash, newRelayData, new anchor_1.BN(1), relayer.publicKey)
|
|
351
|
-
.accounts(accounts)
|
|
355
|
+
.accounts({ ...accounts, delegate: delegatePda })
|
|
352
356
|
.remainingAccounts(fillRemainingAccounts)
|
|
353
357
|
.instruction();
|
|
354
358
|
// Create and send the transaction
|
|
@@ -377,7 +381,7 @@ describe("svm_spoke.fill", () => {
|
|
|
377
381
|
.instruction();
|
|
378
382
|
// Build instructions for all fills
|
|
379
383
|
let totalFillAmount = new anchor_1.BN(0);
|
|
380
|
-
const
|
|
384
|
+
const approveAndfillInstructions = [];
|
|
381
385
|
for (let i = 0; i < numberOfFills; i++) {
|
|
382
386
|
const newRelayData = {
|
|
383
387
|
...relayData,
|
|
@@ -387,17 +391,20 @@ describe("svm_spoke.fill", () => {
|
|
|
387
391
|
totalFillAmount = totalFillAmount.add(newRelayData.outputAmount);
|
|
388
392
|
updateRelayData(newRelayData);
|
|
389
393
|
accounts.recipientTokenAccount = recipientAssociatedTokens[i];
|
|
390
|
-
const
|
|
394
|
+
const relayHashUint8Array = (0, web3_v1_1.calculateRelayHashUint8Array)(newRelayData, chainId);
|
|
395
|
+
const relayHash = Array.from(relayHashUint8Array);
|
|
396
|
+
const { pda: delegatePda } = (0, web3_v1_1.getFillRelayDelegatePda)(relayHashUint8Array, new anchor_1.BN(1), relayer.publicKey, program.programId);
|
|
397
|
+
const approveInstruction = await (0, spl_token_1.createApproveCheckedInstruction)(accounts.relayerTokenAccount, accounts.mint, delegatePda, accounts.signer, BigInt(totalFillAmount.toString()), tokenDecimals, undefined, tokenProgram);
|
|
398
|
+
approveAndfillInstructions.push(approveInstruction);
|
|
391
399
|
const fillInstruction = await program.methods
|
|
392
400
|
.fillRelay(relayHash, newRelayData, new anchor_1.BN(1), relayer.publicKey)
|
|
393
|
-
.accounts(accounts)
|
|
401
|
+
.accounts({ ...accounts, delegate: delegatePda })
|
|
394
402
|
.remainingAccounts(fillRemainingAccounts)
|
|
395
403
|
.instruction();
|
|
396
|
-
|
|
404
|
+
approveAndfillInstructions.push(fillInstruction);
|
|
397
405
|
}
|
|
398
|
-
const approveInstruction = await (0, spl_token_1.createApproveCheckedInstruction)(accounts.relayerTokenAccount, accounts.mint, accounts.state, accounts.signer, BigInt(totalFillAmount.toString()), tokenDecimals, undefined, tokenProgram);
|
|
399
406
|
// Fill using the ALT.
|
|
400
|
-
await (0, web3_v1_1.sendTransactionWithLookupTable)(connection, [createTokenAccountsInstruction,
|
|
407
|
+
await (0, web3_v1_1.sendTransactionWithLookupTable)(connection, [createTokenAccountsInstruction, ...approveAndfillInstructions], relayer);
|
|
401
408
|
// Verify balances after the fill
|
|
402
409
|
await new Promise((resolve) => setTimeout(resolve, 500)); // Wait for tx processing
|
|
403
410
|
const fRelayerBal = (await (0, spl_token_1.getAccount)(connection, relayerTA)).amount;
|
|
@@ -460,9 +467,12 @@ describe("svm_spoke.fill", () => {
|
|
|
460
467
|
assertSE(recipientAccount.amount, "0", "Recipient's balance should be 0 before the fill");
|
|
461
468
|
let relayerAccount = await (0, spl_token_1.getAccount)(connection, relayerTA);
|
|
462
469
|
assertSE(relayerAccount.amount, seedBalance, "Relayer's balance should be equal to seed balance before the fill");
|
|
463
|
-
const
|
|
470
|
+
const relayHashUint8Array = (0, web3_v1_1.calculateRelayHashUint8Array)(relayData, chainId);
|
|
471
|
+
const relayHash = Array.from(relayHashUint8Array);
|
|
472
|
+
const delegate = (0, kit_1.address)((0, web3_v1_1.getFillRelayDelegatePda)(relayHashUint8Array, new anchor_1.BN(1), relayer.publicKey, program.programId).pda.toString());
|
|
464
473
|
const formattedAccounts = {
|
|
465
474
|
state: (0, kit_1.address)(accounts.state.toString()),
|
|
475
|
+
delegate,
|
|
466
476
|
instructionParams: (0, kit_1.address)(program.programId.toString()),
|
|
467
477
|
mint: (0, kit_1.address)(mint.toString()),
|
|
468
478
|
relayerTokenAccount: (0, kit_1.address)(relayerTA.toString()),
|
|
@@ -497,7 +507,7 @@ describe("svm_spoke.fill", () => {
|
|
|
497
507
|
const approveIx = (0, token_1.getApproveCheckedInstruction)({
|
|
498
508
|
source: (0, kit_1.address)(accounts.relayerTokenAccount.toString()),
|
|
499
509
|
mint: (0, kit_1.address)(accounts.mint.toString()),
|
|
500
|
-
delegate
|
|
510
|
+
delegate,
|
|
501
511
|
owner: (0, kit_1.address)(accounts.signer.toString()),
|
|
502
512
|
amount: BigInt(relayData.outputAmount.toString()),
|
|
503
513
|
decimals: tokenDecimals,
|
|
@@ -536,9 +546,12 @@ describe("svm_spoke.fill", () => {
|
|
|
536
546
|
assertSE(recipientAccount.amount, "0", "Recipient's balance should be 0 before the fill");
|
|
537
547
|
let relayerAccount = await (0, spl_token_1.getAccount)(connection, relayerTA);
|
|
538
548
|
assertSE(relayerAccount.amount, seedBalance, "Relayer's balance should be equal to seed balance before the fill");
|
|
539
|
-
const
|
|
549
|
+
const relayHashUint8Array = (0, web3_v1_1.calculateRelayHashUint8Array)(relayData, chainId);
|
|
550
|
+
const relayHash = Array.from(relayHashUint8Array);
|
|
551
|
+
const delegate = (0, kit_1.address)((0, web3_v1_1.getFillRelayDelegatePda)(relayHashUint8Array, new anchor_1.BN(1), relayer.publicKey, program.programId).pda.toString());
|
|
540
552
|
const formattedAccounts = {
|
|
541
553
|
state: (0, kit_1.address)(accounts.state.toString()),
|
|
554
|
+
delegate,
|
|
542
555
|
instructionParams: (0, kit_1.address)(program.programId.toString()),
|
|
543
556
|
mint: (0, kit_1.address)(mint.toString()),
|
|
544
557
|
relayerTokenAccount: (0, kit_1.address)(relayerTA.toString()),
|
|
@@ -573,7 +586,7 @@ describe("svm_spoke.fill", () => {
|
|
|
573
586
|
const approveIx = (0, token_1.getApproveCheckedInstruction)({
|
|
574
587
|
source: (0, kit_1.address)(accounts.relayerTokenAccount.toString()),
|
|
575
588
|
mint: (0, kit_1.address)(accounts.mint.toString()),
|
|
576
|
-
delegate
|
|
589
|
+
delegate,
|
|
577
590
|
owner: (0, kit_1.address)(accounts.signer.toString()),
|
|
578
591
|
amount: BigInt(relayData.outputAmount.toString()),
|
|
579
592
|
decimals: tokenDecimals,
|
|
@@ -595,6 +608,7 @@ describe("svm_spoke.fill", () => {
|
|
|
595
608
|
const alt = await (0, svm_1.createLookupTable)(rpcClient, signer);
|
|
596
609
|
const ac = [
|
|
597
610
|
formattedAccounts.state,
|
|
611
|
+
formattedAccounts.delegate,
|
|
598
612
|
formattedAccounts.instructionParams,
|
|
599
613
|
formattedAccounts.mint,
|
|
600
614
|
formattedAccounts.relayerTokenAccount,
|
|
@@ -25,14 +25,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
const anchor = __importStar(require("@coral-xyz/anchor"));
|
|
27
27
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
28
|
-
const spl_token_1 = require("@solana/spl-token");
|
|
29
28
|
const web3_js_1 = require("@solana/web3.js");
|
|
30
29
|
const chai_1 = require("chai");
|
|
31
30
|
const crypto = __importStar(require("crypto"));
|
|
32
31
|
const ethers_1 = require("ethers");
|
|
33
32
|
const web3_v1_1 = require("../../src/svm/web3-v1");
|
|
34
33
|
const SvmSpoke_common_1 = require("./SvmSpoke.common");
|
|
35
|
-
const {
|
|
34
|
+
const { initializeState, crossDomainAdmin, remoteDomain, localDomain } = SvmSpoke_common_1.common;
|
|
36
35
|
describe("svm_spoke.handle_receive_message", () => {
|
|
37
36
|
anchor.setProvider(anchor_1.AnchorProvider.env());
|
|
38
37
|
const program = anchor_1.workspace.SvmSpoke;
|
|
@@ -56,7 +55,6 @@ describe("svm_spoke.handle_receive_message", () => {
|
|
|
56
55
|
"function pauseDeposits(bool pause)",
|
|
57
56
|
"function pauseFills(bool pause)",
|
|
58
57
|
"function setCrossDomainAdmin(address newCrossDomainAdmin)",
|
|
59
|
-
"function setEnableRoute(bytes32 originToken, uint64 destinationChainId, bool enabled)",
|
|
60
58
|
"function relayRootBundle(bytes32 relayerRefundRoot, bytes32 slowRelayRoot)",
|
|
61
59
|
"function emergencyDeleteRootBundle(uint256 rootBundleId)",
|
|
62
60
|
]);
|
|
@@ -297,116 +295,6 @@ describe("svm_spoke.handle_receive_message", () => {
|
|
|
297
295
|
let stateData = await program.account.state.fetch(state);
|
|
298
296
|
chai_1.assert.strictEqual(stateData.crossDomainAdmin.toString(), newCrossDomainAdminPubkey.toString(), "Cross-domain admin should be set");
|
|
299
297
|
});
|
|
300
|
-
it("Enables and disables route remotely", async () => {
|
|
301
|
-
// Enable the route.
|
|
302
|
-
const originToken = await (0, spl_token_1.createMint)(provider.connection, provider.wallet.payer, owner, owner, 6);
|
|
303
|
-
const routeChainId = 1;
|
|
304
|
-
let calldata = ethereumIface.encodeFunctionData("setEnableRoute", [originToken.toBuffer(), routeChainId, true]);
|
|
305
|
-
let messageBody = Buffer.from(calldata.slice(2), "hex");
|
|
306
|
-
let message = (0, web3_v1_1.encodeMessageHeader)({
|
|
307
|
-
version: cctpMessageversion,
|
|
308
|
-
sourceDomain: remoteDomain.toNumber(),
|
|
309
|
-
destinationDomain: localDomain,
|
|
310
|
-
nonce: BigInt(nonce),
|
|
311
|
-
sender: crossDomainAdmin,
|
|
312
|
-
recipient: program.programId,
|
|
313
|
-
destinationCaller,
|
|
314
|
-
messageBody,
|
|
315
|
-
});
|
|
316
|
-
// Remaining accounts specific to SetEnableRoute.
|
|
317
|
-
const routePda = createRoutePda(originToken, seed, new anchor_1.BN(routeChainId));
|
|
318
|
-
const vault = await getVaultAta(originToken, state);
|
|
319
|
-
// Same 3 remaining accounts passed for HandleReceiveMessage context.
|
|
320
|
-
const enableRouteRemainingAccounts = remainingAccounts.slice(0, 3);
|
|
321
|
-
// payer in self-invoked SetEnableRoute.
|
|
322
|
-
enableRouteRemainingAccounts.push({
|
|
323
|
-
isSigner: true,
|
|
324
|
-
isWritable: true,
|
|
325
|
-
pubkey: provider.wallet.publicKey,
|
|
326
|
-
});
|
|
327
|
-
// state in self-invoked SetEnableRoute.
|
|
328
|
-
enableRouteRemainingAccounts.push({
|
|
329
|
-
isSigner: false,
|
|
330
|
-
isWritable: false,
|
|
331
|
-
pubkey: state,
|
|
332
|
-
});
|
|
333
|
-
// route in self-invoked SetEnableRoute.
|
|
334
|
-
enableRouteRemainingAccounts.push({
|
|
335
|
-
isSigner: false,
|
|
336
|
-
isWritable: true,
|
|
337
|
-
pubkey: routePda,
|
|
338
|
-
});
|
|
339
|
-
// vault in self-invoked SetEnableRoute.
|
|
340
|
-
enableRouteRemainingAccounts.push({
|
|
341
|
-
isSigner: false,
|
|
342
|
-
isWritable: true,
|
|
343
|
-
pubkey: vault,
|
|
344
|
-
});
|
|
345
|
-
// origin_token_mint in self-invoked SetEnableRoute.
|
|
346
|
-
enableRouteRemainingAccounts.push({
|
|
347
|
-
isSigner: false,
|
|
348
|
-
isWritable: false,
|
|
349
|
-
pubkey: originToken,
|
|
350
|
-
});
|
|
351
|
-
// token_program in self-invoked SetEnableRoute.
|
|
352
|
-
enableRouteRemainingAccounts.push({
|
|
353
|
-
isSigner: false,
|
|
354
|
-
isWritable: false,
|
|
355
|
-
pubkey: spl_token_1.TOKEN_PROGRAM_ID,
|
|
356
|
-
});
|
|
357
|
-
// associated_token_program in self-invoked SetEnableRoute.
|
|
358
|
-
enableRouteRemainingAccounts.push({
|
|
359
|
-
isSigner: false,
|
|
360
|
-
isWritable: false,
|
|
361
|
-
pubkey: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
362
|
-
});
|
|
363
|
-
// system_program in self-invoked SetEnableRoute.
|
|
364
|
-
enableRouteRemainingAccounts.push({
|
|
365
|
-
isSigner: false,
|
|
366
|
-
isWritable: false,
|
|
367
|
-
pubkey: anchor_1.web3.SystemProgram.programId,
|
|
368
|
-
});
|
|
369
|
-
// event_authority in self-invoked SetEnableRoute (appended by Anchor with event_cpi macro).
|
|
370
|
-
enableRouteRemainingAccounts.push({
|
|
371
|
-
isSigner: false,
|
|
372
|
-
isWritable: false,
|
|
373
|
-
pubkey: eventAuthority,
|
|
374
|
-
});
|
|
375
|
-
// program in self-invoked SetEnableRoute (appended by Anchor with event_cpi macro).
|
|
376
|
-
enableRouteRemainingAccounts.push({
|
|
377
|
-
isSigner: false,
|
|
378
|
-
isWritable: false,
|
|
379
|
-
pubkey: program.programId,
|
|
380
|
-
});
|
|
381
|
-
await messageTransmitterProgram.methods
|
|
382
|
-
.receiveMessage({ message, attestation })
|
|
383
|
-
.accounts(receiveMessageAccounts)
|
|
384
|
-
.remainingAccounts(enableRouteRemainingAccounts)
|
|
385
|
-
.rpc();
|
|
386
|
-
let routeAccount = await program.account.route.fetch(routePda);
|
|
387
|
-
chai_1.assert.isTrue(routeAccount.enabled, "Route should be enabled");
|
|
388
|
-
// Disable the route.
|
|
389
|
-
nonce += 1;
|
|
390
|
-
calldata = ethereumIface.encodeFunctionData("setEnableRoute", [originToken.toBuffer(), routeChainId, false]);
|
|
391
|
-
messageBody = Buffer.from(calldata.slice(2), "hex");
|
|
392
|
-
message = (0, web3_v1_1.encodeMessageHeader)({
|
|
393
|
-
version: cctpMessageversion,
|
|
394
|
-
sourceDomain: remoteDomain.toNumber(),
|
|
395
|
-
destinationDomain: localDomain,
|
|
396
|
-
nonce: BigInt(nonce),
|
|
397
|
-
sender: crossDomainAdmin,
|
|
398
|
-
recipient: program.programId,
|
|
399
|
-
destinationCaller,
|
|
400
|
-
messageBody,
|
|
401
|
-
});
|
|
402
|
-
await messageTransmitterProgram.methods
|
|
403
|
-
.receiveMessage({ message, attestation })
|
|
404
|
-
.accounts(receiveMessageAccounts)
|
|
405
|
-
.remainingAccounts(enableRouteRemainingAccounts)
|
|
406
|
-
.rpc();
|
|
407
|
-
routeAccount = await program.account.route.fetch(routePda);
|
|
408
|
-
chai_1.assert.isFalse(routeAccount.enabled, "Route should be disabled");
|
|
409
|
-
});
|
|
410
298
|
it("Relays root bundle remotely", async () => {
|
|
411
299
|
// Encode relayRootBundle message.
|
|
412
300
|
const relayerRefundRoot = crypto.randomBytes(32);
|
|
@@ -431,7 +319,7 @@ describe("svm_spoke.handle_receive_message", () => {
|
|
|
431
319
|
const [rootBundle] = anchor_1.web3.PublicKey.findProgramAddressSync(seeds, program.programId);
|
|
432
320
|
// Same 3 remaining accounts passed for HandleReceiveMessage context.
|
|
433
321
|
const relayRootBundleRemainingAccounts = remainingAccounts.slice(0, 3);
|
|
434
|
-
// payer in self-invoked
|
|
322
|
+
// payer in self-invoked RelayRootBundle.
|
|
435
323
|
relayRootBundleRemainingAccounts.push({
|
|
436
324
|
isSigner: true,
|
|
437
325
|
isWritable: true,
|
|
@@ -104,11 +104,11 @@ describe("svm_spoke.slow_fill.across_plus", () => {
|
|
|
104
104
|
loadRequestParamsInstructions = await (0, web3_v1_1.loadRequestSlowFillParams)(program, relayer, requestSlowFillValues[1]);
|
|
105
105
|
[requestAccounts.instructionParams] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("instruction_params"), relayer.publicKey.toBuffer()], program.programId);
|
|
106
106
|
}
|
|
107
|
-
const
|
|
107
|
+
const requestSlowFillParams = bufferParams
|
|
108
108
|
? [requestSlowFillValues[0], null]
|
|
109
109
|
: requestSlowFillValues;
|
|
110
110
|
const requestIx = await program.methods
|
|
111
|
-
.requestSlowFill(...
|
|
111
|
+
.requestSlowFill(...requestSlowFillParams)
|
|
112
112
|
.accounts(requestAccounts)
|
|
113
113
|
.instruction();
|
|
114
114
|
const executeAccounts = {
|