@@ -14,6 +14,7 @@ import (
1414
1515 chain_selectors "github.com/smartcontractkit/chain-selectors"
1616 cldf_evm "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm"
17+ "github.com/smartcontractkit/chainlink-deployments-framework/datastore"
1718 cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment"
1819 mcmscontracts "github.com/smartcontractkit/chainlink-deployments-framework/engine/cld/contracts/mcms"
1920 cldfproposalutils "github.com/smartcontractkit/chainlink-deployments-framework/engine/cld/mcms/proposalutils"
@@ -25,15 +26,14 @@ import (
2526
2627 "github.com/smartcontractkit/cld-changesets/datastore/refkey"
2728 "github.com/smartcontractkit/cld-changesets/internal/semvers"
28-
29- // TODO: remove legacymcms import once remaining MCMS changesets are migrated out of legacy/mcms/changesets.
30- legacymcms "github.com/smartcontractkit/cld-changesets/legacy/mcms/changesets"
31- evmstate "github.com/smartcontractkit/cld-changesets/legacy/pkg/family/evm"
3229 solstate "github.com/smartcontractkit/cld-changesets/legacy/pkg/family/solana"
3330 solchangesets "github.com/smartcontractkit/cld-changesets/legacy/pkg/family/solana/changesets"
3431 soltestutils "github.com/smartcontractkit/cld-changesets/legacy/pkg/family/solana/testutils"
32+ "github.com/smartcontractkit/cld-changesets/mcms/changesets/deploy"
3533 setconfig "github.com/smartcontractkit/cld-changesets/mcms/changesets/set-config"
3634 _ "github.com/smartcontractkit/cld-changesets/mcms/changesets/set-config/all"
35+ _ "github.com/smartcontractkit/cld-changesets/mcms/evm/deploy"
36+ evmreaders "github.com/smartcontractkit/cld-changesets/mcms/evm/readers"
3737)
3838
3939//nolint:paralleltest // global mcm.SetProgramID state and shared Solana CTF container setup
@@ -241,14 +241,14 @@ func TestChangeset_EVM(t *testing.T) {
241241 },
242242 } {
243243 t .Run (tt .name , func (t * testing.T ) {
244- mcmsState , _ := evmMCMSChainState (t , rt , tt .selector )
244+ mcmsRefs , _ := loadEVMMCMSRefs (t , rt , tt .selector )
245245 originalCfg := cldftesthelpers .SingleGroupMCMS (t )
246246
247247 var targets []setconfig.ContractSetConfig
248248 var mcmsInput * cldf.MCMSTimelockProposalInput
249249 if tt .useMCMS {
250250 cfgCanceller := cldftesthelpers .SingleGroupMCMS (t )
251- cfgCanceller .Signers = append (cfgCanceller .Signers , mcmsState . BypasserMcm . Address () )
251+ cfgCanceller .Signers = append (cfgCanceller .Signers , mcmsRefs . Bypasser )
252252 cfgCanceller .Quorum = 2
253253 targets = []setconfig.ContractSetConfig {
254254 {
@@ -258,15 +258,15 @@ func TestChangeset_EVM(t *testing.T) {
258258 }
259259 mcmsInput = newMCMSInput (mcmstypes .TimelockActionBypass , "Set config proposal" , "" )
260260 } else {
261- timelockAddress := mcmsState .Timelock . Address ()
261+ timelockAddress := mcmsRefs .Timelock
262262
263263 cfgProposer := cldftesthelpers .SingleGroupMCMS (t )
264264 cfgProposer .Signers = append (cfgProposer .Signers , timelockAddress )
265265 cfgProposer .Quorum = 2
266266 cfgCanceller := cldftesthelpers .SingleGroupMCMS (t )
267267 cfgBypasser := cldftesthelpers .SingleGroupMCMS (t )
268268 cfgBypasser .Signers = append (cfgBypasser .Signers , timelockAddress )
269- cfgBypasser .Signers = append (cfgBypasser .Signers , mcmsState . ProposerMcm . Address () )
269+ cfgBypasser .Signers = append (cfgBypasser .Signers , mcmsRefs . Proposer )
270270 cfgBypasser .Quorum = 3
271271
272272 targets = mcmsTargets (tt .selector , cfgProposer , cfgCanceller , cfgBypasser )
@@ -286,17 +286,17 @@ func TestChangeset_EVM(t *testing.T) {
286286
287287 if tt .useMCMS {
288288 cfgCanceller := targets [0 ].Config
289- newConf , err := inspector .GetConfig (t .Context (), mcmsState . CancellerMcm . Address () .Hex ())
289+ newConf , err := inspector .GetConfig (t .Context (), mcmsRefs . Canceller .Hex ())
290290 require .NoError (t , err )
291291 require .ElementsMatch (t , cfgCanceller .Signers , newConf .Signers )
292292 require .Equal (t , cfgCanceller .Quorum , newConf .Quorum )
293293
294- proposerConf , err := inspector .GetConfig (t .Context (), mcmsState . ProposerMcm . Address () .Hex ())
294+ proposerConf , err := inspector .GetConfig (t .Context (), mcmsRefs . Proposer .Hex ())
295295 require .NoError (t , err )
296296 require .ElementsMatch (t , originalCfg .Signers , proposerConf .Signers )
297297 require .Equal (t , originalCfg .Quorum , proposerConf .Quorum )
298298
299- bypasserConf , err := inspector .GetConfig (t .Context (), mcmsState . BypasserMcm . Address () .Hex ())
299+ bypasserConf , err := inspector .GetConfig (t .Context (), mcmsRefs . Bypasser .Hex ())
300300 require .NoError (t , err )
301301 require .ElementsMatch (t , originalCfg .Signers , bypasserConf .Signers )
302302 require .Equal (t , originalCfg .Quorum , bypasserConf .Quorum )
@@ -308,17 +308,17 @@ func TestChangeset_EVM(t *testing.T) {
308308 cfgCanceller := targets [1 ].Config
309309 cfgBypasser := targets [2 ].Config
310310
311- newConf , err := inspector .GetConfig (t .Context (), mcmsState . ProposerMcm . Address () .Hex ())
311+ newConf , err := inspector .GetConfig (t .Context (), mcmsRefs . Proposer .Hex ())
312312 require .NoError (t , err )
313313 require .ElementsMatch (t , cfgProposer .Signers , newConf .Signers )
314314 require .Equal (t , cfgProposer .Quorum , newConf .Quorum )
315315
316- newConf , err = inspector .GetConfig (t .Context (), mcmsState . BypasserMcm . Address () .Hex ())
316+ newConf , err = inspector .GetConfig (t .Context (), mcmsRefs . Bypasser .Hex ())
317317 require .NoError (t , err )
318318 require .ElementsMatch (t , cfgBypasser .Signers , newConf .Signers )
319319 require .Equal (t , cfgBypasser .Quorum , newConf .Quorum )
320320
321- newConf , err = inspector .GetConfig (t .Context (), mcmsState . CancellerMcm . Address () .Hex ())
321+ newConf , err = inspector .GetConfig (t .Context (), mcmsRefs . Canceller .Hex ())
322322 require .NoError (t , err )
323323 require .ElementsMatch (t , cfgCanceller .Signers , newConf .Signers )
324324 require .Equal (t , cfgCanceller .Quorum , newConf .Quorum )
@@ -332,10 +332,10 @@ func TestChangeset_EVM_PartialTargets(t *testing.T) {
332332 selector := chain_selectors .TEST_90000001 .Selector
333333
334334 rt := newEVMRuntimeWithDeploy (t , selector )
335- mcmsState , chain := evmMCMSChainState (t , rt , selector )
335+ mcmsRefs , chain := loadEVMMCMSRefs (t , rt , selector )
336336
337337 cfgProposer := cldftesthelpers .SingleGroupMCMS (t )
338- cfgProposer .Signers = append (cfgProposer .Signers , mcmsState .Timelock . Address () )
338+ cfgProposer .Signers = append (cfgProposer .Signers , mcmsRefs .Timelock )
339339 cfgProposer .Quorum = 2
340340
341341 err := rt .Exec (
@@ -354,17 +354,17 @@ func TestChangeset_EVM_PartialTargets(t *testing.T) {
354354 inspector := evm .NewInspector (chain .Client )
355355 originalCfg := cldftesthelpers .SingleGroupMCMS (t )
356356
357- proposerConf , err := inspector .GetConfig (t .Context (), mcmsState . ProposerMcm . Address () .Hex ())
357+ proposerConf , err := inspector .GetConfig (t .Context (), mcmsRefs . Proposer .Hex ())
358358 require .NoError (t , err )
359359 require .ElementsMatch (t , cfgProposer .Signers , proposerConf .Signers )
360360 require .Equal (t , cfgProposer .Quorum , proposerConf .Quorum )
361361
362- cancellerConf , err := inspector .GetConfig (t .Context (), mcmsState . CancellerMcm . Address () .Hex ())
362+ cancellerConf , err := inspector .GetConfig (t .Context (), mcmsRefs . Canceller .Hex ())
363363 require .NoError (t , err )
364364 require .ElementsMatch (t , originalCfg .Signers , cancellerConf .Signers )
365365 require .Equal (t , originalCfg .Quorum , cancellerConf .Quorum )
366366
367- bypasserConf , err := inspector .GetConfig (t .Context (), mcmsState . BypasserMcm . Address () .Hex ())
367+ bypasserConf , err := inspector .GetConfig (t .Context (), mcmsRefs . Bypasser .Hex ())
368368 require .NoError (t , err )
369369 require .ElementsMatch (t , originalCfg .Signers , bypasserConf .Signers )
370370 require .Equal (t , originalCfg .Quorum , bypasserConf .Quorum )
@@ -386,21 +386,26 @@ func TestChangeset_EVM_Qualifier(t *testing.T) {
386386 rmnmcmsConfig .Qualifier = & rmnmcmsQualifier
387387
388388 err := rt .Exec (
389- runtime .ChangesetTask (cldf .CreateLegacyChangeSet (legacymcms .DeployMCMSWithTimelockV2 ), map [uint64 ]cldfproposalutils.MCMSWithTimelockConfig {
390- selector : cllccipConfig ,
389+ runtime .ChangesetTask (deploy.Changeset {}, deploy.Input {
390+ ConfigByChain : map [uint64 ]cldfproposalutils.MCMSWithTimelockConfig {
391+ selector : cllccipConfig ,
392+ },
391393 }),
392- runtime .ChangesetTask (cldf .CreateLegacyChangeSet (legacymcms .DeployMCMSWithTimelockV2 ), map [uint64 ]cldfproposalutils.MCMSWithTimelockConfig {
393- selector : rmnmcmsConfig ,
394+ runtime .ChangesetTask (deploy.Changeset {}, deploy.Input {
395+ ConfigByChain : map [uint64 ]cldfproposalutils.MCMSWithTimelockConfig {
396+ selector : rmnmcmsConfig ,
397+ },
394398 }),
395399 )
396400 require .NoError (t , err )
397401
398- cllccipState , err := evmstate .MaybeLoadMCMSWithTimelockStateWithQualifier (rt .Environment (), []uint64 {selector }, cllccipQualifier )
402+ cllccipTimelock , err := evmreaders.Reader {}.GetTimelockRef (rt .Environment (), selector , cldf.MCMSTimelockProposalInput {
403+ Qualifier : cllccipQualifier ,
404+ })
399405 require .NoError (t , err )
400- require .NotNil (t , cllccipState [selector ])
401406
402407 cfgProposer := cldftesthelpers .SingleGroupMCMS (t )
403- cfgProposer .Signers = append (cfgProposer .Signers , cllccipState [ selector ]. Timelock .Address ( ))
408+ cfgProposer .Signers = append (cfgProposer .Signers , common . HexToAddress ( cllccipTimelock .Address ))
404409 cfgProposer .Quorum = 2
405410
406411 for _ , tt := range []struct {
@@ -479,9 +484,8 @@ func TestChangeset_Solana(t *testing.T) {
479484 rt := newSolanaRuntimeWithDeploy (t , selector )
480485 chain := rt .Environment ().BlockChains .SolanaChains ()[selector ]
481486
482- addrs , err := rt .State ().AddressBook .AddressesForChain (selector )
483- require .NoError (t , err )
484- mcmsState , err := solstate .MaybeLoadMCMSWithTimelockChainState (chain , addrs )
487+ refs := rt .State ().DataStore .Addresses ().Filter (datastore .AddressRefByChainSelector (selector ))
488+ mcmsState , err := solstate .MaybeLoadMCMSWithTimelockChainStateV2 (refs )
485489 require .NoError (t , err )
486490 soltestutils .FundSignerPDAs (t , chain , mcmsState )
487491
0 commit comments