diff --git a/bindings/generated/ccip/ccip/state_object/state_object.go b/bindings/generated/ccip/ccip/state_object/state_object.go index 32868237..0d546aa1 100644 --- a/bindings/generated/ccip/ccip/state_object/state_object.go +++ b/bindings/generated/ccip/ccip/state_object/state_object.go @@ -19,7 +19,7 @@ var ( _ = big.NewInt ) -const FunctionInfo = `[{"package":"ccip","module":"state_object","name":"accept_ownership","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"add","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"obj","type":"T"}]},{"package":"ccip","module":"state_object","name":"add_package_id","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"package_id","type":"address"}]},{"package":"ccip","module":"state_object","name":"borrow","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"borrow_mut","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"contains","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"execute_ownership_transfer","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"to","type":"address"}]},{"package":"ccip","module":"state_object","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"ccip","module":"state_object","name":"has_pending_transfer","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"owner","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"owner_cap_id","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"pending_transfer_accepted","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"pending_transfer_from","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"pending_transfer_to","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"remove","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"ccip","module":"state_object","name":"remove_package_id","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"package_id","type":"address"}]},{"package":"ccip","module":"state_object","name":"transfer_ownership","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"to","type":"address"}]}]` +const FunctionInfo = `[{"package":"ccip","module":"state_object","name":"accept_ownership","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"add","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"obj","type":"T"}]},{"package":"ccip","module":"state_object","name":"add_package_id","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"package_id","type":"address"}]},{"package":"ccip","module":"state_object","name":"borrow","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"borrow_mut","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"contains","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"destroy_ccip_admin_proof","parameters":[{"name":"proof","type":"CCIPAdminProof"}]},{"package":"ccip","module":"state_object","name":"execute_ownership_transfer","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"to","type":"address"}]},{"package":"ccip","module":"state_object","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"ccip","module":"state_object","name":"get_ccip_admin_proof_data","parameters":[{"name":"proof","type":"CCIPAdminProof"}]},{"package":"ccip","module":"state_object","name":"get_ccip_admin_proof_validated","parameters":[{"name":"proof","type":"CCIPAdminProof"}]},{"package":"ccip","module":"state_object","name":"has_pending_transfer","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"owner","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"owner_cap_id","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"pending_transfer_accepted","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"pending_transfer_from","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"pending_transfer_to","parameters":[{"name":"ref","type":"CCIPObjectRef"}]},{"package":"ccip","module":"state_object","name":"remove","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"ccip","module":"state_object","name":"remove_package_id","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"package_id","type":"address"}]},{"package":"ccip","module":"state_object","name":"set_ccip_admin_proof_validated","parameters":[{"name":"proof","type":"CCIPAdminProof"},{"name":"validated","type":"bool"}]},{"package":"ccip","module":"state_object","name":"transfer_ownership","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"to","type":"address"}]}]` type IStateObject interface { AddPackageId(ctx context.Context, opts *bind.CallOpts, ref bind.Object, ownerCap bind.Object, packageId string) (*models.SuiTransactionBlockResponse, error) @@ -48,6 +48,10 @@ type IStateObject interface { McmsAddAllowedModules(ctx context.Context, opts *bind.CallOpts, registry bind.Object, params bind.Object) (*models.SuiTransactionBlockResponse, error) McmsRemoveAllowedModules(ctx context.Context, opts *bind.CallOpts, registry bind.Object, params bind.Object) (*models.SuiTransactionBlockResponse, error) McmsProofEntrypoint(ctx context.Context, opts *bind.CallOpts, registry bind.Object, params bind.Object) (*models.SuiTransactionBlockResponse, error) + GetCcipAdminProofData(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) (*models.SuiTransactionBlockResponse, error) + GetCcipAdminProofValidated(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) (*models.SuiTransactionBlockResponse, error) + SetCcipAdminProofValidated(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof, validated bool) (*models.SuiTransactionBlockResponse, error) + DestroyCcipAdminProof(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) (*models.SuiTransactionBlockResponse, error) DevInspect() IStateObjectDevInspect Encoder() StateObjectEncoder Bound() bind.IBoundContract @@ -66,6 +70,8 @@ type IStateObjectDevInspect interface { PendingTransferAccepted(ctx context.Context, opts *bind.CallOpts, ref bind.Object) (*bool, error) McmsCallback(ctx context.Context, opts *bind.CallOpts) (McmsCallback, error) McmsProofEntrypoint(ctx context.Context, opts *bind.CallOpts, registry bind.Object, params bind.Object) (CCIPAdminProof, error) + GetCcipAdminProofData(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) ([]byte, error) + GetCcipAdminProofValidated(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) (bool, error) } type StateObjectEncoder interface { @@ -121,6 +127,14 @@ type StateObjectEncoder interface { McmsRemoveAllowedModulesWithArgs(args ...any) (*bind.EncodedCall, error) McmsProofEntrypoint(registry bind.Object, params bind.Object) (*bind.EncodedCall, error) McmsProofEntrypointWithArgs(args ...any) (*bind.EncodedCall, error) + GetCcipAdminProofData(proof CCIPAdminProof) (*bind.EncodedCall, error) + GetCcipAdminProofDataWithArgs(args ...any) (*bind.EncodedCall, error) + GetCcipAdminProofValidated(proof CCIPAdminProof) (*bind.EncodedCall, error) + GetCcipAdminProofValidatedWithArgs(args ...any) (*bind.EncodedCall, error) + SetCcipAdminProofValidated(proof CCIPAdminProof, validated bool) (*bind.EncodedCall, error) + SetCcipAdminProofValidatedWithArgs(args ...any) (*bind.EncodedCall, error) + DestroyCcipAdminProof(proof CCIPAdminProof) (*bind.EncodedCall, error) + DestroyCcipAdminProofWithArgs(args ...any) (*bind.EncodedCall, error) } type StateObjectContract struct { @@ -181,6 +195,8 @@ type STATE_OBJECT struct { } type CCIPAdminProof struct { + Data []byte `move:"vector"` + Validated bool `move:"bool"` } type McmsCallback struct { @@ -613,6 +629,46 @@ func (c *StateObjectContract) McmsProofEntrypoint(ctx context.Context, opts *bin return c.ExecuteTransaction(ctx, opts, encoded) } +// GetCcipAdminProofData executes the get_ccip_admin_proof_data Move function. +func (c *StateObjectContract) GetCcipAdminProofData(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.stateObjectEncoder.GetCcipAdminProofData(proof) + if err != nil { + return nil, fmt.Errorf("failed to encode function call: %w", err) + } + + return c.ExecuteTransaction(ctx, opts, encoded) +} + +// GetCcipAdminProofValidated executes the get_ccip_admin_proof_validated Move function. +func (c *StateObjectContract) GetCcipAdminProofValidated(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.stateObjectEncoder.GetCcipAdminProofValidated(proof) + if err != nil { + return nil, fmt.Errorf("failed to encode function call: %w", err) + } + + return c.ExecuteTransaction(ctx, opts, encoded) +} + +// SetCcipAdminProofValidated executes the set_ccip_admin_proof_validated Move function. +func (c *StateObjectContract) SetCcipAdminProofValidated(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof, validated bool) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.stateObjectEncoder.SetCcipAdminProofValidated(proof, validated) + if err != nil { + return nil, fmt.Errorf("failed to encode function call: %w", err) + } + + return c.ExecuteTransaction(ctx, opts, encoded) +} + +// DestroyCcipAdminProof executes the destroy_ccip_admin_proof Move function. +func (c *StateObjectContract) DestroyCcipAdminProof(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.stateObjectEncoder.DestroyCcipAdminProof(proof) + if err != nil { + return nil, fmt.Errorf("failed to encode function call: %w", err) + } + + return c.ExecuteTransaction(ctx, opts, encoded) +} + // OwnerCapId executes the owner_cap_id Move function using DevInspect to get return values. // // Returns: ID @@ -873,6 +929,50 @@ func (d *StateObjectDevInspect) McmsProofEntrypoint(ctx context.Context, opts *b return result, nil } +// GetCcipAdminProofData executes the get_ccip_admin_proof_data Move function using DevInspect to get return values. +// +// Returns: vector +func (d *StateObjectDevInspect) GetCcipAdminProofData(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) ([]byte, error) { + encoded, err := d.contract.stateObjectEncoder.GetCcipAdminProofData(proof) + if err != nil { + return nil, fmt.Errorf("failed to encode function call: %w", err) + } + results, err := d.contract.Call(ctx, opts, encoded) + if err != nil { + return nil, err + } + if len(results) == 0 { + return nil, fmt.Errorf("no return value") + } + result, ok := results[0].([]byte) + if !ok { + return nil, fmt.Errorf("unexpected return type: expected []byte, got %T", results[0]) + } + return result, nil +} + +// GetCcipAdminProofValidated executes the get_ccip_admin_proof_validated Move function using DevInspect to get return values. +// +// Returns: bool +func (d *StateObjectDevInspect) GetCcipAdminProofValidated(ctx context.Context, opts *bind.CallOpts, proof CCIPAdminProof) (bool, error) { + encoded, err := d.contract.stateObjectEncoder.GetCcipAdminProofValidated(proof) + if err != nil { + return false, fmt.Errorf("failed to encode function call: %w", err) + } + results, err := d.contract.Call(ctx, opts, encoded) + if err != nil { + return false, err + } + if len(results) == 0 { + return false, fmt.Errorf("no return value") + } + result, ok := results[0].(bool) + if !ok { + return false, fmt.Errorf("unexpected return type: expected bool, got %T", results[0]) + } + return result, nil +} + type stateObjectEncoder struct { *bind.BoundContract } @@ -1695,3 +1795,118 @@ func (c stateObjectEncoder) McmsProofEntrypointWithArgs(args ...any) (*bind.Enco "ccip::state_object::CCIPAdminProof", }) } + +// GetCcipAdminProofData encodes a call to the get_ccip_admin_proof_data Move function. +func (c stateObjectEncoder) GetCcipAdminProofData(proof CCIPAdminProof) (*bind.EncodedCall, error) { + typeArgsList := []string{} + typeParamsList := []string{} + return c.EncodeCallArgsWithGenerics("get_ccip_admin_proof_data", typeArgsList, typeParamsList, []string{ + "&CCIPAdminProof", + }, []any{ + proof, + }, []string{ + "vector", + }) +} + +// GetCcipAdminProofDataWithArgs encodes a call to the get_ccip_admin_proof_data Move function using arbitrary arguments. +// This method allows passing both regular values and transaction.Argument values for PTB chaining. +func (c stateObjectEncoder) GetCcipAdminProofDataWithArgs(args ...any) (*bind.EncodedCall, error) { + expectedParams := []string{ + "&CCIPAdminProof", + } + + if len(args) != len(expectedParams) { + return nil, fmt.Errorf("expected %d arguments, got %d", len(expectedParams), len(args)) + } + typeArgsList := []string{} + typeParamsList := []string{} + return c.EncodeCallArgsWithGenerics("get_ccip_admin_proof_data", typeArgsList, typeParamsList, expectedParams, args, []string{ + "vector", + }) +} + +// GetCcipAdminProofValidated encodes a call to the get_ccip_admin_proof_validated Move function. +func (c stateObjectEncoder) GetCcipAdminProofValidated(proof CCIPAdminProof) (*bind.EncodedCall, error) { + typeArgsList := []string{} + typeParamsList := []string{} + return c.EncodeCallArgsWithGenerics("get_ccip_admin_proof_validated", typeArgsList, typeParamsList, []string{ + "&CCIPAdminProof", + }, []any{ + proof, + }, []string{ + "bool", + }) +} + +// GetCcipAdminProofValidatedWithArgs encodes a call to the get_ccip_admin_proof_validated Move function using arbitrary arguments. +// This method allows passing both regular values and transaction.Argument values for PTB chaining. +func (c stateObjectEncoder) GetCcipAdminProofValidatedWithArgs(args ...any) (*bind.EncodedCall, error) { + expectedParams := []string{ + "&CCIPAdminProof", + } + + if len(args) != len(expectedParams) { + return nil, fmt.Errorf("expected %d arguments, got %d", len(expectedParams), len(args)) + } + typeArgsList := []string{} + typeParamsList := []string{} + return c.EncodeCallArgsWithGenerics("get_ccip_admin_proof_validated", typeArgsList, typeParamsList, expectedParams, args, []string{ + "bool", + }) +} + +// SetCcipAdminProofValidated encodes a call to the set_ccip_admin_proof_validated Move function. +func (c stateObjectEncoder) SetCcipAdminProofValidated(proof CCIPAdminProof, validated bool) (*bind.EncodedCall, error) { + typeArgsList := []string{} + typeParamsList := []string{} + return c.EncodeCallArgsWithGenerics("set_ccip_admin_proof_validated", typeArgsList, typeParamsList, []string{ + "&mut CCIPAdminProof", + "bool", + }, []any{ + proof, + validated, + }, nil) +} + +// SetCcipAdminProofValidatedWithArgs encodes a call to the set_ccip_admin_proof_validated Move function using arbitrary arguments. +// This method allows passing both regular values and transaction.Argument values for PTB chaining. +func (c stateObjectEncoder) SetCcipAdminProofValidatedWithArgs(args ...any) (*bind.EncodedCall, error) { + expectedParams := []string{ + "&mut CCIPAdminProof", + "bool", + } + + if len(args) != len(expectedParams) { + return nil, fmt.Errorf("expected %d arguments, got %d", len(expectedParams), len(args)) + } + typeArgsList := []string{} + typeParamsList := []string{} + return c.EncodeCallArgsWithGenerics("set_ccip_admin_proof_validated", typeArgsList, typeParamsList, expectedParams, args, nil) +} + +// DestroyCcipAdminProof encodes a call to the destroy_ccip_admin_proof Move function. +func (c stateObjectEncoder) DestroyCcipAdminProof(proof CCIPAdminProof) (*bind.EncodedCall, error) { + typeArgsList := []string{} + typeParamsList := []string{} + return c.EncodeCallArgsWithGenerics("destroy_ccip_admin_proof", typeArgsList, typeParamsList, []string{ + "ccip::state_object::CCIPAdminProof", + }, []any{ + proof, + }, nil) +} + +// DestroyCcipAdminProofWithArgs encodes a call to the destroy_ccip_admin_proof Move function using arbitrary arguments. +// This method allows passing both regular values and transaction.Argument values for PTB chaining. +func (c stateObjectEncoder) DestroyCcipAdminProofWithArgs(args ...any) (*bind.EncodedCall, error) { + expectedParams := []string{ + "ccip::state_object::CCIPAdminProof", + } + + if len(args) != len(expectedParams) { + return nil, fmt.Errorf("expected %d arguments, got %d", len(expectedParams), len(args)) + } + typeArgsList := []string{} + typeParamsList := []string{} + return c.EncodeCallArgsWithGenerics("destroy_ccip_admin_proof", typeArgsList, typeParamsList, expectedParams, args, nil) +} diff --git a/bindings/generated/ccip/ccip/token_admin_registry/token_admin_registry.go b/bindings/generated/ccip/ccip/token_admin_registry/token_admin_registry.go index d773e7f8..6ba2d881 100644 --- a/bindings/generated/ccip/ccip/token_admin_registry/token_admin_registry.go +++ b/bindings/generated/ccip/ccip/token_admin_registry/token_admin_registry.go @@ -19,7 +19,7 @@ var ( _ = big.NewInt ) -const FunctionInfo = `[{"package":"ccip","module":"token_admin_registry","name":"accept_admin_role","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"get_all_configured_tokens","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"start_key","type":"address"},{"name":"max_count","type":"u64"}]},{"package":"ccip","module":"token_admin_registry","name":"get_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"get_pools","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_addresses","type":"vector
"}]},{"package":"ccip","module":"token_admin_registry","name":"get_token_config","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"get_token_config_data","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"get_token_config_struct","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"initialize","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"ccip","module":"token_admin_registry","name":"is_administrator","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"},{"name":"administrator","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"is_pool_registered","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"register_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"_","type":"TreasuryCap"},{"name":"coin_metadata","type":"CoinMetadata"},{"name":"initial_administrator","type":"address"},{"name":"lock_or_burn_params","type":"vector
"},{"name":"release_or_mint_params","type":"vector
"},{"name":"_proof","type":"TypeProof"}]},{"package":"ccip","module":"token_admin_registry","name":"register_pool_by_admin","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"_","type":"state_object::CCIPAdminProof"},{"name":"coin_metadata_address","type":"address"},{"name":"token_pool_package_id","type":"address"},{"name":"token_pool_module","type":"0x1::string::String"},{"name":"token_type","type":"ascii::String"},{"name":"initial_administrator","type":"address"},{"name":"token_pool_type_proof","type":"ascii::String"},{"name":"lock_or_burn_params","type":"vector
"},{"name":"release_or_mint_params","type":"vector
"}]},{"package":"ccip","module":"token_admin_registry","name":"set_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"},{"name":"lock_or_burn_params","type":"vector
"},{"name":"release_or_mint_params","type":"vector
"},{"name":"_","type":"TypeProof"},{"name":"caller","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"transfer_admin_role","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"},{"name":"new_admin","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"type_and_version","parameters":null},{"package":"ccip","module":"token_admin_registry","name":"unregister_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]}]` +const FunctionInfo = `[{"package":"ccip","module":"token_admin_registry","name":"accept_admin_role","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"get_all_configured_tokens","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"start_key","type":"address"},{"name":"max_count","type":"u64"}]},{"package":"ccip","module":"token_admin_registry","name":"get_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"get_pools","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_addresses","type":"vector
"}]},{"package":"ccip","module":"token_admin_registry","name":"get_token_config","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"get_token_config_data","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"get_token_config_struct","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"initialize","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"ccip","module":"token_admin_registry","name":"is_administrator","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"},{"name":"administrator","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"is_pool_registered","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"register_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"_","type":"TreasuryCap"},{"name":"coin_metadata","type":"CoinMetadata"},{"name":"initial_administrator","type":"address"},{"name":"lock_or_burn_params","type":"vector
"},{"name":"release_or_mint_params","type":"vector
"},{"name":"_proof","type":"TypeProof"}]},{"package":"ccip","module":"token_admin_registry","name":"register_pool_by_admin","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"ccip_admin_proof","type":"state_object::CCIPAdminProof"},{"name":"coin_metadata_address","type":"address"},{"name":"token_pool_package_id","type":"address"},{"name":"token_pool_module","type":"0x1::string::String"},{"name":"token_type","type":"ascii::String"},{"name":"initial_administrator","type":"address"},{"name":"token_pool_type_proof","type":"ascii::String"},{"name":"lock_or_burn_params","type":"vector
"},{"name":"release_or_mint_params","type":"vector
"}]},{"package":"ccip","module":"token_admin_registry","name":"set_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"},{"name":"lock_or_burn_params","type":"vector
"},{"name":"release_or_mint_params","type":"vector
"},{"name":"_","type":"TypeProof"},{"name":"caller","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"transfer_admin_role","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"},{"name":"new_admin","type":"address"}]},{"package":"ccip","module":"token_admin_registry","name":"type_and_version","parameters":null},{"package":"ccip","module":"token_admin_registry","name":"unregister_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_address","type":"address"}]}]` type ITokenAdminRegistry interface { TypeAndVersion(ctx context.Context, opts *bind.CallOpts) (*models.SuiTransactionBlockResponse, error) @@ -31,7 +31,7 @@ type ITokenAdminRegistry interface { GetTokenConfigData(ctx context.Context, opts *bind.CallOpts, ref bind.Object, coinMetadataAddress string) (*models.SuiTransactionBlockResponse, error) GetAllConfiguredTokens(ctx context.Context, opts *bind.CallOpts, ref bind.Object, startKey string, maxCount uint64) (*models.SuiTransactionBlockResponse, error) RegisterPool(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, param bind.Object, coinMetadata bind.Object, initialAdministrator string, lockOrBurnParams []string, releaseOrMintParams []string, proof bind.Object) (*models.SuiTransactionBlockResponse, error) - RegisterPoolByAdmin(ctx context.Context, opts *bind.CallOpts, ref bind.Object, param bind.Object, coinMetadataAddress string, tokenPoolPackageId string, tokenPoolModule string, tokenType string, initialAdministrator string, tokenPoolTypeProof string, lockOrBurnParams []string, releaseOrMintParams []string) (*models.SuiTransactionBlockResponse, error) + RegisterPoolByAdmin(ctx context.Context, opts *bind.CallOpts, ref bind.Object, ccipAdminProof bind.Object, coinMetadataAddress string, tokenPoolPackageId string, tokenPoolModule string, tokenType string, initialAdministrator string, tokenPoolTypeProof string, lockOrBurnParams []string, releaseOrMintParams []string) (*models.SuiTransactionBlockResponse, error) UnregisterPool(ctx context.Context, opts *bind.CallOpts, ref bind.Object, coinMetadataAddress string) (*models.SuiTransactionBlockResponse, error) SetPool(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, coinMetadataAddress string, lockOrBurnParams []string, releaseOrMintParams []string, param bind.Object, caller string) (*models.SuiTransactionBlockResponse, error) TransferAdminRole(ctx context.Context, opts *bind.CallOpts, ref bind.Object, coinMetadataAddress string, newAdmin string) (*models.SuiTransactionBlockResponse, error) @@ -78,7 +78,7 @@ type TokenAdminRegistryEncoder interface { GetAllConfiguredTokensWithArgs(args ...any) (*bind.EncodedCall, error) RegisterPool(typeArgs []string, ref bind.Object, param bind.Object, coinMetadata bind.Object, initialAdministrator string, lockOrBurnParams []string, releaseOrMintParams []string, proof bind.Object) (*bind.EncodedCall, error) RegisterPoolWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) - RegisterPoolByAdmin(ref bind.Object, param bind.Object, coinMetadataAddress string, tokenPoolPackageId string, tokenPoolModule string, tokenType string, initialAdministrator string, tokenPoolTypeProof string, lockOrBurnParams []string, releaseOrMintParams []string) (*bind.EncodedCall, error) + RegisterPoolByAdmin(ref bind.Object, ccipAdminProof bind.Object, coinMetadataAddress string, tokenPoolPackageId string, tokenPoolModule string, tokenType string, initialAdministrator string, tokenPoolTypeProof string, lockOrBurnParams []string, releaseOrMintParams []string) (*bind.EncodedCall, error) RegisterPoolByAdminWithArgs(args ...any) (*bind.EncodedCall, error) UnregisterPool(ref bind.Object, coinMetadataAddress string) (*bind.EncodedCall, error) UnregisterPoolWithArgs(args ...any) (*bind.EncodedCall, error) @@ -615,8 +615,8 @@ func (c *TokenAdminRegistryContract) RegisterPool(ctx context.Context, opts *bin } // RegisterPoolByAdmin executes the register_pool_by_admin Move function. -func (c *TokenAdminRegistryContract) RegisterPoolByAdmin(ctx context.Context, opts *bind.CallOpts, ref bind.Object, param bind.Object, coinMetadataAddress string, tokenPoolPackageId string, tokenPoolModule string, tokenType string, initialAdministrator string, tokenPoolTypeProof string, lockOrBurnParams []string, releaseOrMintParams []string) (*models.SuiTransactionBlockResponse, error) { - encoded, err := c.tokenAdminRegistryEncoder.RegisterPoolByAdmin(ref, param, coinMetadataAddress, tokenPoolPackageId, tokenPoolModule, tokenType, initialAdministrator, tokenPoolTypeProof, lockOrBurnParams, releaseOrMintParams) +func (c *TokenAdminRegistryContract) RegisterPoolByAdmin(ctx context.Context, opts *bind.CallOpts, ref bind.Object, ccipAdminProof bind.Object, coinMetadataAddress string, tokenPoolPackageId string, tokenPoolModule string, tokenType string, initialAdministrator string, tokenPoolTypeProof string, lockOrBurnParams []string, releaseOrMintParams []string) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.tokenAdminRegistryEncoder.RegisterPoolByAdmin(ref, ccipAdminProof, coinMetadataAddress, tokenPoolPackageId, tokenPoolModule, tokenType, initialAdministrator, tokenPoolTypeProof, lockOrBurnParams, releaseOrMintParams) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -1237,7 +1237,7 @@ func (c tokenAdminRegistryEncoder) RegisterPoolWithArgs(typeArgs []string, args } // RegisterPoolByAdmin encodes a call to the register_pool_by_admin Move function. -func (c tokenAdminRegistryEncoder) RegisterPoolByAdmin(ref bind.Object, param bind.Object, coinMetadataAddress string, tokenPoolPackageId string, tokenPoolModule string, tokenType string, initialAdministrator string, tokenPoolTypeProof string, lockOrBurnParams []string, releaseOrMintParams []string) (*bind.EncodedCall, error) { +func (c tokenAdminRegistryEncoder) RegisterPoolByAdmin(ref bind.Object, ccipAdminProof bind.Object, coinMetadataAddress string, tokenPoolPackageId string, tokenPoolModule string, tokenType string, initialAdministrator string, tokenPoolTypeProof string, lockOrBurnParams []string, releaseOrMintParams []string) (*bind.EncodedCall, error) { typeArgsList := []string{} typeParamsList := []string{} return c.EncodeCallArgsWithGenerics("register_pool_by_admin", typeArgsList, typeParamsList, []string{ @@ -1253,7 +1253,7 @@ func (c tokenAdminRegistryEncoder) RegisterPoolByAdmin(ref bind.Object, param bi "vector
", }, []any{ ref, - param, + ccipAdminProof, coinMetadataAddress, tokenPoolPackageId, tokenPoolModule, diff --git a/bindings/generated/ccip/ccip_token_pools/usdc_token_pool/usdc_token_pool.go b/bindings/generated/ccip/ccip_token_pools/usdc_token_pool/usdc_token_pool.go index f06f677a..0c89d59c 100644 --- a/bindings/generated/ccip/ccip_token_pools/usdc_token_pool/usdc_token_pool.go +++ b/bindings/generated/ccip/ccip_token_pools/usdc_token_pool/usdc_token_pool.go @@ -19,11 +19,11 @@ var ( _ = big.NewInt ) -const FunctionInfo = `[{"package":"usdc_token_pool","module":"usdc_token_pool","name":"accept_ownership","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"accept_ownership_from_object","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"from","type":"sui::object::UID"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"add_remote_pool","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"apply_allowlist_updates","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"removes","type":"vector
"},{"name":"adds","type":"vector
"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"apply_chain_updates","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selectors_to_remove","type":"vector"},{"name":"remote_chain_selectors_to_add","type":"vector"},{"name":"remote_pool_addresses_to_add","type":"vector>>"},{"name":"remote_token_addresses_to_add","type":"vector>"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"destroy_token_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"execute_ownership_transfer","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"USDCTokenPoolState"},{"name":"to","type":"address"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"USDCTokenPoolState"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_allowlist","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_allowlist_enabled","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_domain","parameters":[{"name":"pool","type":"USDCTokenPoolState"},{"name":"chain_selector","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_package_auth_caller","parameters":null},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_remote_pools","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_remote_token","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_supported_chains","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_token","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_token_decimals","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"has_pending_transfer","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"initialize","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"ccip_admin_proof","type":"state_object::CCIPAdminProof"},{"name":"coin_metadata","type":"CoinMetadata"},{"name":"local_domain_identifier","type":"u32"},{"name":"token_pool_package_id","type":"address"},{"name":"token_pool_administrator","type":"address"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"is_remote_pool","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"is_supported_chain","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"lock_or_burn","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"token_transfer_params","type":"onramp_sh::TokenTransferParams"},{"name":"c","type":"Coin"},{"name":"remote_chain_selector","type":"u64"},{"name":"clock","type":"Clock"},{"name":"deny_list","type":"DenyList"},{"name":"pool","type":"USDCTokenPoolState"},{"name":"state","type":"MinterState"},{"name":"message_transmitter_state","type":"MessageTransmitterState"},{"name":"treasury","type":"Treasury"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"owner","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"pending_transfer_accepted","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"pending_transfer_from","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"pending_transfer_to","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"release_or_mint","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"receiver_params","type":"offramp_sh::ReceiverParams"},{"name":"clock","type":"Clock"},{"name":"deny_list","type":"DenyList"},{"name":"pool","type":"USDCTokenPoolState"},{"name":"state","type":"MinterState"},{"name":"message_transmitter_state","type":"MessageTransmitterState"},{"name":"treasury","type":"Treasury"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"remove_remote_pool","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_allowlist_enabled","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"enabled","type":"bool"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_chain_rate_limiter_config","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"clock","type":"Clock"},{"name":"remote_chain_selector","type":"u64"},{"name":"outbound_is_enabled","type":"bool"},{"name":"outbound_capacity","type":"u64"},{"name":"outbound_rate","type":"u64"},{"name":"inbound_is_enabled","type":"bool"},{"name":"inbound_capacity","type":"u64"},{"name":"inbound_rate","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_chain_rate_limiter_configs","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"clock","type":"Clock"},{"name":"remote_chain_selectors","type":"vector"},{"name":"outbound_is_enableds","type":"vector"},{"name":"outbound_capacities","type":"vector"},{"name":"outbound_rates","type":"vector"},{"name":"inbound_is_enableds","type":"vector"},{"name":"inbound_capacities","type":"vector"},{"name":"inbound_rates","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_domains","parameters":[{"name":"pool","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selectors","type":"vector"},{"name":"remote_domain_identifiers","type":"vector"},{"name":"allowed_remote_callers","type":"vector>"},{"name":"enableds","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"coin_metadata_address","type":"address"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"transfer_ownership","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"new_owner","type":"address"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"type_and_version","parameters":null}]` +const FunctionInfo = `[{"package":"usdc_token_pool","module":"usdc_token_pool","name":"accept_ownership","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"accept_ownership_from_object","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"from","type":"sui::object::UID"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"add_remote_pool","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"apply_allowlist_updates","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"removes","type":"vector
"},{"name":"adds","type":"vector
"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"apply_chain_updates","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selectors_to_remove","type":"vector"},{"name":"remote_chain_selectors_to_add","type":"vector"},{"name":"remote_pool_addresses_to_add","type":"vector>>"},{"name":"remote_token_addresses_to_add","type":"vector>"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"destroy_token_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"execute_ownership_transfer","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"USDCTokenPoolState"},{"name":"to","type":"address"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"USDCTokenPoolState"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_allowlist","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_allowlist_enabled","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_domain","parameters":[{"name":"pool","type":"USDCTokenPoolState"},{"name":"chain_selector","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_package_auth_caller","parameters":null},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_remote_pools","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_remote_token","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_supported_chains","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_token","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"get_token_decimals","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"has_pending_transfer","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"initialize","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"ccip_admin_proof","type":"state_object::CCIPAdminProof"},{"name":"coin_metadata","type":"CoinMetadata"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"is_remote_pool","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"is_supported_chain","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"lock_or_burn","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"token_transfer_params","type":"onramp_sh::TokenTransferParams"},{"name":"c","type":"Coin"},{"name":"remote_chain_selector","type":"u64"},{"name":"clock","type":"Clock"},{"name":"deny_list","type":"DenyList"},{"name":"pool","type":"USDCTokenPoolState"},{"name":"state","type":"MinterState"},{"name":"message_transmitter_state","type":"MessageTransmitterState"},{"name":"treasury","type":"Treasury"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"owner","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"pending_transfer_accepted","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"pending_transfer_from","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"pending_transfer_to","parameters":[{"name":"state","type":"USDCTokenPoolState"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"release_or_mint","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"receiver_params","type":"offramp_sh::ReceiverParams"},{"name":"clock","type":"Clock"},{"name":"deny_list","type":"DenyList"},{"name":"pool","type":"USDCTokenPoolState"},{"name":"state","type":"MinterState"},{"name":"message_transmitter_state","type":"MessageTransmitterState"},{"name":"treasury","type":"Treasury"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"remove_remote_pool","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_allowlist_enabled","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"enabled","type":"bool"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_chain_rate_limiter_config","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"clock","type":"Clock"},{"name":"remote_chain_selector","type":"u64"},{"name":"outbound_is_enabled","type":"bool"},{"name":"outbound_capacity","type":"u64"},{"name":"outbound_rate","type":"u64"},{"name":"inbound_is_enabled","type":"bool"},{"name":"inbound_capacity","type":"u64"},{"name":"inbound_rate","type":"u64"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_chain_rate_limiter_configs","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"clock","type":"Clock"},{"name":"remote_chain_selectors","type":"vector"},{"name":"outbound_is_enableds","type":"vector"},{"name":"outbound_capacities","type":"vector"},{"name":"outbound_rates","type":"vector"},{"name":"inbound_is_enableds","type":"vector"},{"name":"inbound_capacities","type":"vector"},{"name":"inbound_rates","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_domains","parameters":[{"name":"pool","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selectors","type":"vector"},{"name":"remote_domain_identifiers","type":"vector"},{"name":"allowed_remote_callers","type":"vector>"},{"name":"enableds","type":"vector"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"set_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"coin_metadata_address","type":"address"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"transfer_ownership","parameters":[{"name":"state","type":"USDCTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"new_owner","type":"address"}]},{"package":"usdc_token_pool","module":"usdc_token_pool","name":"type_and_version","parameters":null}]` type IUsdcTokenPool interface { TypeAndVersion(ctx context.Context, opts *bind.CallOpts) (*models.SuiTransactionBlockResponse, error) - Initialize(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, localDomainIdentifier uint32, tokenPoolPackageId string, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) + Initialize(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object) (*models.SuiTransactionBlockResponse, error) SetPool(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, ownerCap bind.Object, coinMetadataAddress string) (*models.SuiTransactionBlockResponse, error) GetToken(ctx context.Context, opts *bind.CallOpts, typeArgs []string, state bind.Object) (*models.SuiTransactionBlockResponse, error) GetTokenDecimals(ctx context.Context, opts *bind.CallOpts, typeArgs []string, state bind.Object) (*models.SuiTransactionBlockResponse, error) @@ -99,7 +99,7 @@ type IUsdcTokenPoolDevInspect interface { type UsdcTokenPoolEncoder interface { TypeAndVersion() (*bind.EncodedCall, error) TypeAndVersionWithArgs(args ...any) (*bind.EncodedCall, error) - Initialize(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, localDomainIdentifier uint32, tokenPoolPackageId string, tokenPoolAdministrator string) (*bind.EncodedCall, error) + Initialize(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object) (*bind.EncodedCall, error) InitializeWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) SetPool(typeArgs []string, ref bind.Object, state bind.Object, ownerCap bind.Object, coinMetadataAddress string) (*bind.EncodedCall, error) SetPoolWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) @@ -362,8 +362,8 @@ func (c *UsdcTokenPoolContract) TypeAndVersion(ctx context.Context, opts *bind.C } // Initialize executes the initialize Move function. -func (c *UsdcTokenPoolContract) Initialize(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, localDomainIdentifier uint32, tokenPoolPackageId string, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) { - encoded, err := c.usdcTokenPoolEncoder.Initialize(typeArgs, ref, ccipAdminProof, coinMetadata, localDomainIdentifier, tokenPoolPackageId, tokenPoolAdministrator) +func (c *UsdcTokenPoolContract) Initialize(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.usdcTokenPoolEncoder.Initialize(typeArgs, ref, ccipAdminProof, coinMetadata) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -1244,7 +1244,7 @@ func (c usdcTokenPoolEncoder) TypeAndVersionWithArgs(args ...any) (*bind.Encoded } // Initialize encodes a call to the initialize Move function. -func (c usdcTokenPoolEncoder) Initialize(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, localDomainIdentifier uint32, tokenPoolPackageId string, tokenPoolAdministrator string) (*bind.EncodedCall, error) { +func (c usdcTokenPoolEncoder) Initialize(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object) (*bind.EncodedCall, error) { typeArgsList := typeArgs typeParamsList := []string{ "T", @@ -1253,16 +1253,10 @@ func (c usdcTokenPoolEncoder) Initialize(typeArgs []string, ref bind.Object, cci "&mut CCIPObjectRef", "state_object::CCIPAdminProof", "&CoinMetadata", - "u32", - "address", - "address", }, []any{ ref, ccipAdminProof, coinMetadata, - localDomainIdentifier, - tokenPoolPackageId, - tokenPoolAdministrator, }, nil) } @@ -1273,9 +1267,6 @@ func (c usdcTokenPoolEncoder) InitializeWithArgs(typeArgs []string, args ...any) "&mut CCIPObjectRef", "state_object::CCIPAdminProof", "&CoinMetadata", - "u32", - "address", - "address", } if len(args) != len(expectedParams) { diff --git a/contracts/ccip/ccip/sources/state_object.move b/contracts/ccip/ccip/sources/state_object.move index 3629b69b..bb8dcb19 100644 --- a/contracts/ccip/ccip/sources/state_object.move +++ b/contracts/ccip/ccip/sources/state_object.move @@ -4,7 +4,7 @@ use ccip::ownable::{Self, OwnerCap, OwnableState}; use mcms::bcs_stream; use mcms::mcms_registry::{Self, Registry, ExecutingCallbackParams}; use std::ascii; -use std::string; +use std::string::{Self, String}; use std::type_name; use sui::address; use sui::derived_object; @@ -15,6 +15,7 @@ const EModuleDoesNotExist: u64 = 2; const EInvalidFunction: u64 = 3; const EInvalidOwnerCap: u64 = 4; const EPackageIdNotFound: u64 = 5; +const ECcipAdminProofNotValidated: u64 = 6; public struct CCIPObject has key { id: UID, @@ -179,8 +180,16 @@ public fun pending_transfer_accepted(ref: &CCIPObjectRef): Option { // | MCMS Entrypoint | // ================================================================ -/// Proof for CCIP admin -public struct CCIPAdminProof has drop {} +/// Proof for CCIP admin, `data` is serialized using BCS +/// `data` should contain: +/// - target package id +/// - target module name +/// - target function name +/// - bcs serialized function arguments +public struct CCIPAdminProof { + data: vector, + validated: bool, +} public struct McmsCallback has drop {} @@ -375,7 +384,7 @@ public fun mcms_proof_entrypoint( params: ExecutingCallbackParams, _ctx: &mut TxContext, ): CCIPAdminProof { - let (_owner_cap, function, _data) = mcms_registry::get_callback_params_with_caps< + let (_owner_cap, function, data) = mcms_registry::get_callback_params_with_caps< McmsCallback, OwnerCap, >( @@ -388,7 +397,24 @@ public fun mcms_proof_entrypoint( // So we can safely provide a proof that CCIP admin is calling assert!(*function.as_bytes() == b"initialize_by_ccip_admin", EInvalidFunction); - CCIPAdminProof {} + CCIPAdminProof { data, validated: false } +} + +public fun get_ccip_admin_proof_data(proof: &CCIPAdminProof): vector { + proof.data +} + +public fun get_ccip_admin_proof_validated(proof: &CCIPAdminProof): bool { + proof.validated +} + +public fun set_ccip_admin_proof_validated(proof: &mut CCIPAdminProof, validated: bool) { + proof.validated = validated +} + +public fun destroy_ccip_admin_proof(proof: CCIPAdminProof) { + assert!(proof.validated, ECcipAdminProofNotValidated); + let CCIPAdminProof { data: _, validated: _ } = proof; } // ================================================================ @@ -410,6 +436,6 @@ public fun pending_transfer(ref: &CCIPObjectRef): (address, address, bool) { } #[test_only] -public fun create_ccip_admin_proof_for_test(): CCIPAdminProof { - CCIPAdminProof {} +public fun create_ccip_admin_proof_for_test(data: vector, validated: bool): CCIPAdminProof { + CCIPAdminProof { data, validated } } diff --git a/contracts/ccip/ccip/sources/token_admin_registry.move b/contracts/ccip/ccip/sources/token_admin_registry.move index c56a181b..311285d4 100644 --- a/contracts/ccip/ccip/sources/token_admin_registry.move +++ b/contracts/ccip/ccip/sources/token_admin_registry.move @@ -345,7 +345,7 @@ public fun register_pool( // the CCIP admin needs to know the token pool's type proof string too. public fun register_pool_by_admin( ref: &mut CCIPObjectRef, - _: state_object::CCIPAdminProof, + ccip_admin_proof: state_object::CCIPAdminProof, coin_metadata_address: address, token_pool_package_id: address, token_pool_module: String, @@ -356,6 +356,9 @@ public fun register_pool_by_admin( release_or_mint_params: vector
, _: &mut TxContext, ) { + // `destroy_ccip_admin_proof` verifies proof has been validated. + state_object::destroy_ccip_admin_proof(ccip_admin_proof); + verify_function_allowed( ref, string::utf8(b"token_admin_registry"), diff --git a/contracts/ccip/ccip/tests/offramp_state_helper_tests.move b/contracts/ccip/ccip/tests/offramp_state_helper_tests.move index 47f8d397..209dfa8a 100644 --- a/contracts/ccip/ccip/tests/offramp_state_helper_tests.move +++ b/contracts/ccip/ccip/tests/offramp_state_helper_tests.move @@ -195,7 +195,7 @@ public fun test_complete_token_transfer() { // Register a token in the token admin registry registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, TOKEN_POOL_ADDRESS_1, string::utf8(b"test_pool"), @@ -383,7 +383,7 @@ public fun test_complete_token_transfer_twice_should_fail() { // Register a token in the token admin registry registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, TOKEN_POOL_ADDRESS_1, string::utf8(b"test_pool"), diff --git a/contracts/ccip/ccip/tests/onramp_state_helper_tests.move b/contracts/ccip/ccip/tests/onramp_state_helper_tests.move index a274bc28..4dda8e8d 100644 --- a/contracts/ccip/ccip/tests/onramp_state_helper_tests.move +++ b/contracts/ccip/ccip/tests/onramp_state_helper_tests.move @@ -71,7 +71,7 @@ public fun test_create_token_transfer_params() { // Register a token in the token admin registry first registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), @@ -128,7 +128,7 @@ public fun test_create_token_transfer_params_basic() { // Register a token with TestTypeProof registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), @@ -167,7 +167,7 @@ public fun test_get_remote_chain_selector() { // Register a token registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), @@ -234,7 +234,7 @@ public fun test_create_and_verify_token_transfer() { // Register a token in the token admin registry first registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), @@ -305,7 +305,7 @@ public fun test_add_multiple_token_transfers_should_fail() { // Register a token registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), @@ -381,7 +381,7 @@ public fun test_get_source_token_transfer_data() { // Register a token registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), @@ -438,7 +438,7 @@ public fun test_edge_case_large_amounts() { // Register a token registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), @@ -485,7 +485,7 @@ public fun test_edge_case_empty_data() { // Register a token registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), @@ -537,7 +537,7 @@ public fun test_zero_amount_transfer() { // Register a token registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), @@ -583,7 +583,7 @@ public fun test_source_transfer_cap_permission() { // Register a token registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), TOKEN_ADDRESS_1, @0x1, string::utf8(b"test_pool"), diff --git a/contracts/ccip/ccip/tests/token_admin_registry_tests.move b/contracts/ccip/ccip/tests/token_admin_registry_tests.move index c21d4314..11870759 100644 --- a/contracts/ccip/ccip/tests/token_admin_registry_tests.move +++ b/contracts/ccip/ccip/tests/token_admin_registry_tests.move @@ -223,7 +223,7 @@ public fun test_register_pool_by_admin() { // Register pool as admin (without treasury cap) registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), @0x123, // coin_metadata_address MOCK_TOKEN_POOL_PACKAGE_ID_1, // token_pool_package_id string::utf8(b"admin_registered_pool"), // token_pool_module @@ -1426,7 +1426,7 @@ public fun test_set_pool_with_different_package_ids() { registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), mock_token_address, original_pool_package_id, string::utf8(b"original_pool_module"), @@ -1640,7 +1640,7 @@ public fun test_set_pool_only_admin_can_call() { registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), mock_token_address, @0xAAAA, string::utf8(b"test_pool"), @@ -1706,7 +1706,7 @@ public fun test_mcms_set_pool_with_package_change() { registry::register_pool_by_admin( &mut ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), mock_token_address, original_pool_package_id, string::utf8(b"original_pool"), diff --git a/contracts/ccip/ccip_token_pools/burn_mint_token_pool/tests/burn_mint_token_pool_tests.move b/contracts/ccip/ccip_token_pools/burn_mint_token_pool/tests/burn_mint_token_pool_tests.move index 8323f09f..53a2eb80 100644 --- a/contracts/ccip/ccip_token_pools/burn_mint_token_pool/tests/burn_mint_token_pool_tests.move +++ b/contracts/ccip/ccip_token_pools/burn_mint_token_pool/tests/burn_mint_token_pool_tests.move @@ -1367,7 +1367,7 @@ public fun test_set_pool() { token_admin_registry::register_pool_by_admin( &mut ccip_ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), coin_metadata_address, different_package_id, string::utf8(b"different_pool"), diff --git a/contracts/ccip/ccip_token_pools/lock_release_token_pool/tests/lock_release_token_pool_tests.move b/contracts/ccip/ccip_token_pools/lock_release_token_pool/tests/lock_release_token_pool_tests.move index 14ab0f9a..d6048909 100644 --- a/contracts/ccip/ccip_token_pools/lock_release_token_pool/tests/lock_release_token_pool_tests.move +++ b/contracts/ccip/ccip_token_pools/lock_release_token_pool/tests/lock_release_token_pool_tests.move @@ -1511,7 +1511,7 @@ public fun test_set_pool() { token_admin_registry::register_pool_by_admin( &mut ccip_ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), coin_metadata_address, different_package_id, string::utf8(b"different_pool"), diff --git a/contracts/ccip/ccip_token_pools/managed_token_pool/tests/managed_token_pool_tests.move b/contracts/ccip/ccip_token_pools/managed_token_pool/tests/managed_token_pool_tests.move index afc0533b..824a3719 100644 --- a/contracts/ccip/ccip_token_pools/managed_token_pool/tests/managed_token_pool_tests.move +++ b/contracts/ccip/ccip_token_pools/managed_token_pool/tests/managed_token_pool_tests.move @@ -1350,7 +1350,7 @@ public fun test_set_pool() { token_admin_registry::register_pool_by_admin( &mut ccip_ref, - state_object::create_ccip_admin_proof_for_test(), + state_object::create_ccip_admin_proof_for_test(vector[], true), coin_metadata_address, different_package_id, string::utf8(b"different_pool"), diff --git a/contracts/ccip/ccip_token_pools/usdc_token_pool/sources/usdc_token_pool.move b/contracts/ccip/ccip_token_pools/usdc_token_pool/sources/usdc_token_pool.move index 2b2cb95f..133cb13b 100644 --- a/contracts/ccip/ccip_token_pools/usdc_token_pool/sources/usdc_token_pool.move +++ b/contracts/ccip/ccip_token_pools/usdc_token_pool/sources/usdc_token_pool.move @@ -75,6 +75,10 @@ const EDomainDisabled: u64 = 11; const ETokenAmountOverflow: u64 = 12; const EInvalidFunction: u64 = 13; const EPoolStillRegistered: u64 = 14; +const EInvalidProof: u64 = 15; +const EInvalidPackageId: u64 = 16; +const EInvalidModuleName: u64 = 17; +const EInvalidFunctionName: u64 = 18; // ================================================================ // | Init | @@ -90,11 +94,30 @@ public fun initialize( ref: &mut CCIPObjectRef, ccip_admin_proof: state_object::CCIPAdminProof, coin_metadata: &CoinMetadata, // this can be provided as an address or in Move.toml - local_domain_identifier: u32, - token_pool_package_id: address, - token_pool_administrator: address, ctx: &mut TxContext, ) { + assert!(!state_object::get_ccip_admin_proof_validated(&ccip_admin_proof), EInvalidProof); + + let data = state_object::get_ccip_admin_proof_data(&ccip_admin_proof); + let mut stream = bcs_stream::new(data); + + let target_package_id = bcs_stream::deserialize_address(&mut stream); + let target_module_name = bcs_stream::deserialize_string(&mut stream); + let target_function_name = bcs_stream::deserialize_string(&mut stream); + let local_domain_identifier = bcs_stream::deserialize_u32(&mut stream); + let token_pool_package_id = bcs_stream::deserialize_address(&mut stream); + let token_pool_administrator = bcs_stream::deserialize_address(&mut stream); + bcs_stream::assert_is_consumed(&stream); + + assert!(target_package_id == @usdc_token_pool, EInvalidPackageId); + assert!(target_module_name == string::utf8(b"usdc_token_pool"), EInvalidModuleName); + assert!( + target_function_name == string::utf8(b"initialize_by_ccip_admin"), + EInvalidFunctionName, + ); + + state_object::set_ccip_admin_proof_validated(&mut ccip_admin_proof, true); + let coin_metadata_address: address = object::id_to_address(&object::id(coin_metadata)); assert!(coin_metadata_address == @usdc_coin_metadata_object_id, EInvalidCoinMetadata); diff --git a/deployment/ops/ccip_usdc_token_pool/op_usdc_token_pool.go b/deployment/ops/ccip_usdc_token_pool/op_usdc_token_pool.go index 39c1d8ef..6b0be916 100644 --- a/deployment/ops/ccip_usdc_token_pool/op_usdc_token_pool.go +++ b/deployment/ops/ccip_usdc_token_pool/op_usdc_token_pool.go @@ -20,6 +20,8 @@ type USDCTokenPoolInitializeObjects struct { type USDCTokenPoolInitializeInput struct { USDCTokenPoolPackageId string + CCIPObjectRefObjectId string + CCIPAdminProofObjectId string CoinObjectTypeArg string StateObjectId string OwnerCapObjectId string @@ -41,12 +43,9 @@ var initUSDCTokenPoolHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, inp b.GetContext(), opts, []string{input.CoinObjectTypeArg}, - bind.Object{Id: input.StateObjectId}, - bind.Object{Id: input.OwnerCapObjectId}, + bind.Object{Id: input.CCIPObjectRefObjectId}, + bind.Object{Id: input.CCIPAdminProofObjectId}, bind.Object{Id: input.CoinMetadataObjectId}, - input.LocalDomainIdentifier, - input.TokenPoolPackageId, - input.TokenPoolAdministrator, ) if err != nil { return sui_ops.OpTxResult[USDCTokenPoolInitializeObjects]{}, fmt.Errorf("failed to execute USDC token pool initialization: %w", err) diff --git a/deployment/ops/ccip_usdc_token_pool/seq_deploy_and_init.go b/deployment/ops/ccip_usdc_token_pool/seq_deploy_and_init.go index 881a625d..58bd4003 100644 --- a/deployment/ops/ccip_usdc_token_pool/seq_deploy_and_init.go +++ b/deployment/ops/ccip_usdc_token_pool/seq_deploy_and_init.go @@ -65,6 +65,8 @@ var DeployAndInitUSDCTokenPoolSequence = cld_ops.NewSequence( deps, USDCTokenPoolInitializeInput{ USDCTokenPoolPackageId: deployReport.Output.PackageId, + CCIPObjectRefObjectId: input.CCIPObjectRefObjectId, + CCIPAdminProofObjectId: input.CCIPAdminProofObjectId, CoinObjectTypeArg: input.CoinObjectTypeArg, StateObjectId: input.CCIPObjectRefObjectId, OwnerCapObjectId: input.CCIPAdminProofObjectId,