@@ -9,14 +9,25 @@ import (
99 "github.com/smartcontractkit/chainlink-sui/bindings/bind"
1010 sui_ops "github.com/smartcontractkit/chainlink-sui/deployment/ops"
1111 ccipops "github.com/smartcontractkit/chainlink-sui/deployment/ops/ccip"
12+ offrampops "github.com/smartcontractkit/chainlink-sui/deployment/ops/ccip_offramp"
13+ onrampops "github.com/smartcontractkit/chainlink-sui/deployment/ops/ccip_onramp"
14+ )
15+
16+ type AddPackageIdTarget string
17+
18+ const (
19+ AddPackageIdTargetCCIP AddPackageIdTarget = "ccip"
20+ AddPackageIdTargetOnRamp AddPackageIdTarget = "onramp"
21+ AddPackageIdTargetOffRamp AddPackageIdTarget = "offramp"
1222)
1323
1424type AddCCIPPackageIdConfig struct {
15- SuiChainSelector uint64 `yaml:"suiChainSelector"`
16- CCIPPackageId string `yaml:"ccipPackageId"`
17- CCIPObjectRefObjectId string `yaml:"ccipObjectRefObjectId"`
18- OwnerCapObjectId string `yaml:"ownerCapObjectId"`
19- PackageId string `yaml:"packageId"`
25+ SuiChainSelector uint64 `yaml:"suiChainSelector"`
26+ Target AddPackageIdTarget `yaml:"target"`
27+ ModulePackageId string `yaml:"modulePackageId"`
28+ StateObjectId string `yaml:"stateObjectId"`
29+ OwnerCapObjectId string `yaml:"ownerCapObjectId"`
30+ PackageId string `yaml:"packageId"`
2031}
2132
2233var _ cldf.ChangeSetV2 [AddCCIPPackageIdConfig ] = AddCCIPPackageId {}
@@ -25,7 +36,6 @@ type AddCCIPPackageId struct{}
2536
2637func (d AddCCIPPackageId ) Apply (e cldf.Environment , config AddCCIPPackageIdConfig ) (cldf.ChangesetOutput , error ) {
2738 ab := cldf .NewMemoryAddressBook ()
28- seqReports := make ([]operations.Report [any , any ], 0 )
2939
3040 suiChain := e .BlockChains .SuiChains ()[config .SuiChainSelector ]
3141
@@ -42,24 +52,71 @@ func (d AddCCIPPackageId) Apply(e cldf.Environment, config AddCCIPPackageIdConfi
4252 SuiRPC : suiChain .URL ,
4353 }
4454
45- addPackageIdReport , err := operations .ExecuteOperation (e .OperationsBundle , ccipops .AddPackageIdStateObjectOp , deps , ccipops.AddPackageIdStateObjectInput {
46- CCIPPackageId : config .CCIPPackageId ,
47- CCIPObjectRefObjectId : config .CCIPObjectRefObjectId ,
48- OwnerCapObjectId : config .OwnerCapObjectId ,
49- PackageId : config .PackageId ,
50- })
55+ report , err := executeAddPackageId (e , config , deps )
5156 if err != nil {
52- return cldf.ChangesetOutput {}, fmt . Errorf ( "failed to add CCIP package ID for Sui chain %d: %w" , config . SuiChainSelector , err )
57+ return cldf.ChangesetOutput {}, err
5358 }
5459
55- seqReports = append (seqReports , addPackageIdReport .ToGenericReport ())
56-
5760 return cldf.ChangesetOutput {
5861 AddressBook : ab ,
59- Reports : seqReports ,
62+ Reports : []operations. Report [ any , any ]{ report } ,
6063 }, nil
6164}
6265
66+ func executeAddPackageId (e cldf.Environment , config AddCCIPPackageIdConfig , deps sui_ops.OpTxDeps ) (operations.Report [any , any ], error ) {
67+ target := config .Target
68+ if target == "" {
69+ target = AddPackageIdTargetCCIP
70+ }
71+
72+ switch target {
73+ case AddPackageIdTargetCCIP :
74+ r , err := operations .ExecuteOperation (e .OperationsBundle , ccipops .AddPackageIdStateObjectOp , deps , ccipops.AddPackageIdStateObjectInput {
75+ CCIPPackageId : config .ModulePackageId ,
76+ CCIPObjectRefObjectId : config .StateObjectId ,
77+ OwnerCapObjectId : config .OwnerCapObjectId ,
78+ PackageId : config .PackageId ,
79+ })
80+ if err != nil {
81+ return operations.Report [any , any ]{}, fmt .Errorf ("failed to add package ID to CCIP state object for Sui chain %d: %w" , config .SuiChainSelector , err )
82+ }
83+ return r .ToGenericReport (), nil
84+
85+ case AddPackageIdTargetOnRamp :
86+ r , err := operations .ExecuteOperation (e .OperationsBundle , onrampops .AddPackageIdOp , deps , onrampops.AddPackageIdInput {
87+ OnRampPackageId : config .ModulePackageId ,
88+ StateObjectId : config .StateObjectId ,
89+ OwnerCapObjectId : config .OwnerCapObjectId ,
90+ PackageId : config .PackageId ,
91+ })
92+ if err != nil {
93+ return operations.Report [any , any ]{}, fmt .Errorf ("failed to add package ID to OnRamp for Sui chain %d: %w" , config .SuiChainSelector , err )
94+ }
95+ return r .ToGenericReport (), nil
96+
97+ case AddPackageIdTargetOffRamp :
98+ r , err := operations .ExecuteOperation (e .OperationsBundle , offrampops .AddPackageIdOffRampOp , deps , offrampops.AddPackageIdOffRampInput {
99+ OffRampPackageId : config .ModulePackageId ,
100+ StateObjectId : config .StateObjectId ,
101+ OwnerCapObjectId : config .OwnerCapObjectId ,
102+ PackageId : config .PackageId ,
103+ })
104+ if err != nil {
105+ return operations.Report [any , any ]{}, fmt .Errorf ("failed to add package ID to OffRamp for Sui chain %d: %w" , config .SuiChainSelector , err )
106+ }
107+ return r .ToGenericReport (), nil
108+
109+ default :
110+ return operations.Report [any , any ]{}, fmt .Errorf ("unknown target %q: must be one of %q, %q, %q" ,
111+ config .Target , AddPackageIdTargetCCIP , AddPackageIdTargetOnRamp , AddPackageIdTargetOffRamp )
112+ }
113+ }
114+
63115func (d AddCCIPPackageId ) VerifyPreconditions (e cldf.Environment , config AddCCIPPackageIdConfig ) error {
116+ if config .Target != "" && config .Target != AddPackageIdTargetCCIP &&
117+ config .Target != AddPackageIdTargetOnRamp && config .Target != AddPackageIdTargetOffRamp {
118+ return fmt .Errorf ("invalid target %q: must be one of %q, %q, %q" ,
119+ config .Target , AddPackageIdTargetCCIP , AddPackageIdTargetOnRamp , AddPackageIdTargetOffRamp )
120+ }
64121 return nil
65122}
0 commit comments