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 1a2e3858..49dad369 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":"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"}]},{"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":"register_pool","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"_","type":"TreasuryCap"},{"name":"coin_metadata_object_id","type":"address"},{"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_object_id","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"}]},{"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_object_id","type":"address"}]}]` type ITokenAdminRegistry interface { TypeAndVersion(ctx context.Context, opts *bind.CallOpts) (*models.SuiTransactionBlockResponse, error) @@ -30,9 +30,9 @@ type ITokenAdminRegistry interface { GetTokenConfig(ctx context.Context, opts *bind.CallOpts, ref bind.Object, coinMetadataAddress string) (*models.SuiTransactionBlockResponse, error) 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) - UnregisterPool(ctx context.Context, opts *bind.CallOpts, ref bind.Object, coinMetadataAddress string) (*models.SuiTransactionBlockResponse, error) + RegisterPool(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, param bind.Object, coinMetadataObjectId string, 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, coinMetadataObjectId 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, coinMetadataObjectId 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) (*models.SuiTransactionBlockResponse, error) TransferAdminRole(ctx context.Context, opts *bind.CallOpts, ref bind.Object, coinMetadataAddress string, newAdmin string) (*models.SuiTransactionBlockResponse, error) AcceptAdminRole(ctx context.Context, opts *bind.CallOpts, ref bind.Object, coinMetadataAddress string) (*models.SuiTransactionBlockResponse, error) @@ -74,11 +74,11 @@ type TokenAdminRegistryEncoder interface { GetTokenConfigDataWithArgs(args ...any) (*bind.EncodedCall, error) GetAllConfiguredTokens(ref bind.Object, startKey string, maxCount uint64) (*bind.EncodedCall, error) 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) + RegisterPool(typeArgs []string, ref bind.Object, param bind.Object, coinMetadataObjectId string, 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, param bind.Object, coinMetadataObjectId 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) + UnregisterPool(ref bind.Object, coinMetadataObjectId string) (*bind.EncodedCall, error) UnregisterPoolWithArgs(args ...any) (*bind.EncodedCall, error) SetPool(typeArgs []string, ref bind.Object, coinMetadataAddress string, lockOrBurnParams []string, releaseOrMintParams []string, param bind.Object) (*bind.EncodedCall, error) SetPoolWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) @@ -620,8 +620,8 @@ func (c *TokenAdminRegistryContract) GetAllConfiguredTokens(ctx context.Context, } // RegisterPool executes the register_pool Move function. -func (c *TokenAdminRegistryContract) 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) { - encoded, err := c.tokenAdminRegistryEncoder.RegisterPool(typeArgs, ref, param, coinMetadata, initialAdministrator, lockOrBurnParams, releaseOrMintParams, proof) +func (c *TokenAdminRegistryContract) RegisterPool(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, param bind.Object, coinMetadataObjectId string, initialAdministrator string, lockOrBurnParams []string, releaseOrMintParams []string, proof bind.Object) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.tokenAdminRegistryEncoder.RegisterPool(typeArgs, ref, param, coinMetadataObjectId, initialAdministrator, lockOrBurnParams, releaseOrMintParams, proof) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -630,8 +630,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, param bind.Object, coinMetadataObjectId 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, coinMetadataObjectId, tokenPoolPackageId, tokenPoolModule, tokenType, initialAdministrator, tokenPoolTypeProof, lockOrBurnParams, releaseOrMintParams) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -640,8 +640,8 @@ func (c *TokenAdminRegistryContract) RegisterPoolByAdmin(ctx context.Context, op } // UnregisterPool executes the unregister_pool Move function. -func (c *TokenAdminRegistryContract) UnregisterPool(ctx context.Context, opts *bind.CallOpts, ref bind.Object, coinMetadataAddress string) (*models.SuiTransactionBlockResponse, error) { - encoded, err := c.tokenAdminRegistryEncoder.UnregisterPool(ref, coinMetadataAddress) +func (c *TokenAdminRegistryContract) UnregisterPool(ctx context.Context, opts *bind.CallOpts, ref bind.Object, coinMetadataObjectId string) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.tokenAdminRegistryEncoder.UnregisterPool(ref, coinMetadataObjectId) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -1170,7 +1170,7 @@ func (c tokenAdminRegistryEncoder) GetAllConfiguredTokensWithArgs(args ...any) ( } // RegisterPool encodes a call to the register_pool Move function. -func (c tokenAdminRegistryEncoder) RegisterPool(typeArgs []string, ref bind.Object, param bind.Object, coinMetadata bind.Object, initialAdministrator string, lockOrBurnParams []string, releaseOrMintParams []string, proof bind.Object) (*bind.EncodedCall, error) { +func (c tokenAdminRegistryEncoder) RegisterPool(typeArgs []string, ref bind.Object, param bind.Object, coinMetadataObjectId string, initialAdministrator string, lockOrBurnParams []string, releaseOrMintParams []string, proof bind.Object) (*bind.EncodedCall, error) { typeArgsList := typeArgs typeParamsList := []string{ "T", @@ -1179,7 +1179,7 @@ func (c tokenAdminRegistryEncoder) RegisterPool(typeArgs []string, ref bind.Obje return c.EncodeCallArgsWithGenerics("register_pool", typeArgsList, typeParamsList, []string{ "&mut CCIPObjectRef", "&TreasuryCap", - "&CoinMetadata", + "address", "address", "vector
", "vector
", @@ -1187,7 +1187,7 @@ func (c tokenAdminRegistryEncoder) RegisterPool(typeArgs []string, ref bind.Obje }, []any{ ref, param, - coinMetadata, + coinMetadataObjectId, initialAdministrator, lockOrBurnParams, releaseOrMintParams, @@ -1201,7 +1201,7 @@ func (c tokenAdminRegistryEncoder) RegisterPoolWithArgs(typeArgs []string, args expectedParams := []string{ "&mut CCIPObjectRef", "&TreasuryCap", - "&CoinMetadata", + "address", "address", "vector
", "vector
", @@ -1220,7 +1220,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, param bind.Object, coinMetadataObjectId 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{ @@ -1237,7 +1237,7 @@ func (c tokenAdminRegistryEncoder) RegisterPoolByAdmin(ref bind.Object, param bi }, []any{ ref, param, - coinMetadataAddress, + coinMetadataObjectId, tokenPoolPackageId, tokenPoolModule, tokenType, @@ -1273,7 +1273,7 @@ func (c tokenAdminRegistryEncoder) RegisterPoolByAdminWithArgs(args ...any) (*bi } // UnregisterPool encodes a call to the unregister_pool Move function. -func (c tokenAdminRegistryEncoder) UnregisterPool(ref bind.Object, coinMetadataAddress string) (*bind.EncodedCall, error) { +func (c tokenAdminRegistryEncoder) UnregisterPool(ref bind.Object, coinMetadataObjectId string) (*bind.EncodedCall, error) { typeArgsList := []string{} typeParamsList := []string{} return c.EncodeCallArgsWithGenerics("unregister_pool", typeArgsList, typeParamsList, []string{ @@ -1281,7 +1281,7 @@ func (c tokenAdminRegistryEncoder) UnregisterPool(ref bind.Object, coinMetadataA "address", }, []any{ ref, - coinMetadataAddress, + coinMetadataObjectId, }, nil) } diff --git a/bindings/generated/ccip/ccip_onramp/onramp/onramp.go b/bindings/generated/ccip/ccip_onramp/onramp/onramp.go index 1ec0b5dd..79606648 100644 --- a/bindings/generated/ccip/ccip_onramp/onramp/onramp.go +++ b/bindings/generated/ccip/ccip_onramp/onramp/onramp.go @@ -19,7 +19,7 @@ var ( _ = big.NewInt ) -const FunctionInfo = `[{"package":"ccip_onramp","module":"onramp","name":"accept_ownership","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"accept_ownership_from_object","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"from","type":"sui::object::UID"}]},{"package":"ccip_onramp","module":"onramp","name":"add_package_id","parameters":[{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"package_id","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"apply_allowlist_updates","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"dest_chain_selectors","type":"vector"},{"name":"dest_chain_allowlist_enabled","type":"vector"},{"name":"dest_chain_add_allowed_senders","type":"vector>"},{"name":"dest_chain_remove_allowed_senders","type":"vector>"}]},{"package":"ccip_onramp","module":"onramp","name":"apply_allowlist_updates_by_admin","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"dest_chain_selectors","type":"vector"},{"name":"dest_chain_allowlist_enabled","type":"vector"},{"name":"dest_chain_add_allowed_senders","type":"vector>"},{"name":"dest_chain_remove_allowed_senders","type":"vector>"}]},{"package":"ccip_onramp","module":"onramp","name":"apply_dest_chain_config_updates","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"dest_chain_selectors","type":"vector"},{"name":"dest_chain_allowlist_enabled","type":"vector"},{"name":"dest_chain_routers","type":"vector
"}]},{"package":"ccip_onramp","module":"onramp","name":"calculate_message_hash","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"on_ramp_address","type":"address"},{"name":"message_id","type":"vector"},{"name":"source_chain_selector","type":"u64"},{"name":"dest_chain_selector","type":"u64"},{"name":"sequence_number","type":"u64"},{"name":"nonce","type":"u64"},{"name":"sender","type":"address"},{"name":"receiver","type":"vector"},{"name":"data","type":"vector"},{"name":"fee_token","type":"address"},{"name":"fee_token_amount","type":"u64"},{"name":"source_pool_addresses","type":"vector
"},{"name":"dest_token_addresses","type":"vector>"},{"name":"extra_datas","type":"vector>"},{"name":"amounts","type":"vector"},{"name":"dest_exec_datas","type":"vector>"},{"name":"extra_args","type":"vector"}]},{"package":"ccip_onramp","module":"onramp","name":"calculate_metadata_hash","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"source_chain_selector","type":"u64"},{"name":"dest_chain_selector","type":"u64"},{"name":"on_ramp_address","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"ccip_send","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"clock","type":"Clock"},{"name":"dest_chain_selector","type":"u64"},{"name":"receiver","type":"vector"},{"name":"data","type":"vector"},{"name":"token_params","type":"TokenTransferParams"},{"name":"fee_token_metadata","type":"CoinMetadata"},{"name":"fee_token","type":"Coin"},{"name":"extra_args","type":"vector"}]},{"package":"ccip_onramp","module":"onramp","name":"execute_ownership_transfer","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"OnRampState"},{"name":"to","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"OnRampState"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"get_allowed_senders_list","parameters":[{"name":"state","type":"OnRampState"},{"name":"dest_chain_selector","type":"u64"}]},{"package":"ccip_onramp","module":"onramp","name":"get_ccip_package_id","parameters":null},{"package":"ccip_onramp","module":"onramp","name":"get_dest_chain_config","parameters":[{"name":"state","type":"OnRampState"},{"name":"dest_chain_selector","type":"u64"}]},{"package":"ccip_onramp","module":"onramp","name":"get_dynamic_config","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"get_dynamic_config_fields","parameters":[{"name":"cfg","type":"DynamicConfig"}]},{"package":"ccip_onramp","module":"onramp","name":"get_expected_next_sequence_number","parameters":[{"name":"state","type":"OnRampState"},{"name":"dest_chain_selector","type":"u64"}]},{"package":"ccip_onramp","module":"onramp","name":"get_fee","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"clock","type":"Clock"},{"name":"dest_chain_selector","type":"u64"},{"name":"receiver","type":"vector"},{"name":"data","type":"vector"},{"name":"token_addresses","type":"vector
"},{"name":"token_amounts","type":"vector"},{"name":"fee_token","type":"CoinMetadata"},{"name":"extra_args","type":"vector"}]},{"package":"ccip_onramp","module":"onramp","name":"get_outbound_nonce","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"dest_chain_selector","type":"u64"},{"name":"sender","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"get_static_config","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"get_static_config_fields","parameters":[{"name":"cfg","type":"StaticConfig"}]},{"package":"ccip_onramp","module":"onramp","name":"has_pending_transfer","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"initialize","parameters":[{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"nonce_manager_cap","type":"NonceManagerCap"},{"name":"source_transfer_cap","type":"osh::SourceTransferCap"},{"name":"chain_selector","type":"u64"},{"name":"fee_aggregator","type":"address"},{"name":"allowlist_admin","type":"address"},{"name":"dest_chain_selectors","type":"vector"},{"name":"dest_chain_allowlist_enabled","type":"vector"},{"name":"dest_chain_routers","type":"vector
"}]},{"package":"ccip_onramp","module":"onramp","name":"is_chain_supported","parameters":[{"name":"state","type":"OnRampState"},{"name":"dest_chain_selector","type":"u64"}]},{"package":"ccip_onramp","module":"onramp","name":"owner","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"pending_transfer_accepted","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"pending_transfer_from","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"pending_transfer_to","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"remove_package_id","parameters":[{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"package_id","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"set_dynamic_config","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"fee_aggregator","type":"address"},{"name":"allowlist_admin","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"transfer_ownership","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"new_owner","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"type_and_version","parameters":null},{"package":"ccip_onramp","module":"onramp","name":"withdraw_fee_tokens","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"fee_token_metadata","type":"CoinMetadata"}]}]` +const FunctionInfo = `[{"package":"ccip_onramp","module":"onramp","name":"accept_ownership","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"accept_ownership_from_object","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"from","type":"sui::object::UID"}]},{"package":"ccip_onramp","module":"onramp","name":"add_package_id","parameters":[{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"package_id","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"apply_allowlist_updates","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"dest_chain_selectors","type":"vector"},{"name":"dest_chain_allowlist_enabled","type":"vector"},{"name":"dest_chain_add_allowed_senders","type":"vector>"},{"name":"dest_chain_remove_allowed_senders","type":"vector>"}]},{"package":"ccip_onramp","module":"onramp","name":"apply_allowlist_updates_by_admin","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"dest_chain_selectors","type":"vector"},{"name":"dest_chain_allowlist_enabled","type":"vector"},{"name":"dest_chain_add_allowed_senders","type":"vector>"},{"name":"dest_chain_remove_allowed_senders","type":"vector>"}]},{"package":"ccip_onramp","module":"onramp","name":"apply_dest_chain_config_updates","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"dest_chain_selectors","type":"vector"},{"name":"dest_chain_allowlist_enabled","type":"vector"},{"name":"dest_chain_routers","type":"vector
"}]},{"package":"ccip_onramp","module":"onramp","name":"calculate_message_hash","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"on_ramp_address","type":"address"},{"name":"message_id","type":"vector"},{"name":"source_chain_selector","type":"u64"},{"name":"dest_chain_selector","type":"u64"},{"name":"sequence_number","type":"u64"},{"name":"nonce","type":"u64"},{"name":"sender","type":"address"},{"name":"receiver","type":"vector"},{"name":"data","type":"vector"},{"name":"fee_token","type":"address"},{"name":"fee_token_amount","type":"u64"},{"name":"source_pool_addresses","type":"vector
"},{"name":"dest_token_addresses","type":"vector>"},{"name":"extra_datas","type":"vector>"},{"name":"amounts","type":"vector"},{"name":"dest_exec_datas","type":"vector>"},{"name":"extra_args","type":"vector"}]},{"package":"ccip_onramp","module":"onramp","name":"calculate_metadata_hash","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"source_chain_selector","type":"u64"},{"name":"dest_chain_selector","type":"u64"},{"name":"on_ramp_address","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"ccip_send","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"clock","type":"Clock"},{"name":"dest_chain_selector","type":"u64"},{"name":"receiver","type":"vector"},{"name":"data","type":"vector"},{"name":"token_params","type":"TokenTransferParams"},{"name":"fee_token_coin_metadata_object_id","type":"address"},{"name":"fee_token","type":"Coin"},{"name":"extra_args","type":"vector"}]},{"package":"ccip_onramp","module":"onramp","name":"execute_ownership_transfer","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"OnRampState"},{"name":"to","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"OnRampState"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"get_allowed_senders_list","parameters":[{"name":"state","type":"OnRampState"},{"name":"dest_chain_selector","type":"u64"}]},{"package":"ccip_onramp","module":"onramp","name":"get_ccip_package_id","parameters":null},{"package":"ccip_onramp","module":"onramp","name":"get_dest_chain_config","parameters":[{"name":"state","type":"OnRampState"},{"name":"dest_chain_selector","type":"u64"}]},{"package":"ccip_onramp","module":"onramp","name":"get_dynamic_config","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"get_dynamic_config_fields","parameters":[{"name":"cfg","type":"DynamicConfig"}]},{"package":"ccip_onramp","module":"onramp","name":"get_expected_next_sequence_number","parameters":[{"name":"state","type":"OnRampState"},{"name":"dest_chain_selector","type":"u64"}]},{"package":"ccip_onramp","module":"onramp","name":"get_fee","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"clock","type":"Clock"},{"name":"dest_chain_selector","type":"u64"},{"name":"receiver","type":"vector"},{"name":"data","type":"vector"},{"name":"token_addresses","type":"vector
"},{"name":"token_amounts","type":"vector"},{"name":"fee_token_coin_metadata_object_id","type":"address"},{"name":"extra_args","type":"vector"}]},{"package":"ccip_onramp","module":"onramp","name":"get_outbound_nonce","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"dest_chain_selector","type":"u64"},{"name":"sender","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"get_static_config","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"get_static_config_fields","parameters":[{"name":"cfg","type":"StaticConfig"}]},{"package":"ccip_onramp","module":"onramp","name":"has_pending_transfer","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"initialize","parameters":[{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"nonce_manager_cap","type":"NonceManagerCap"},{"name":"source_transfer_cap","type":"osh::SourceTransferCap"},{"name":"chain_selector","type":"u64"},{"name":"fee_aggregator","type":"address"},{"name":"allowlist_admin","type":"address"},{"name":"dest_chain_selectors","type":"vector"},{"name":"dest_chain_allowlist_enabled","type":"vector"},{"name":"dest_chain_routers","type":"vector
"}]},{"package":"ccip_onramp","module":"onramp","name":"is_chain_supported","parameters":[{"name":"state","type":"OnRampState"},{"name":"dest_chain_selector","type":"u64"}]},{"package":"ccip_onramp","module":"onramp","name":"owner","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"pending_transfer_accepted","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"pending_transfer_from","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"pending_transfer_to","parameters":[{"name":"state","type":"OnRampState"}]},{"package":"ccip_onramp","module":"onramp","name":"remove_package_id","parameters":[{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"package_id","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"set_dynamic_config","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"fee_aggregator","type":"address"},{"name":"allowlist_admin","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"transfer_ownership","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"new_owner","type":"address"}]},{"package":"ccip_onramp","module":"onramp","name":"type_and_version","parameters":null},{"package":"ccip_onramp","module":"onramp","name":"withdraw_fee_tokens","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"state","type":"OnRampState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"fee_token_metadata","type":"CoinMetadata"}]}]` type IOnramp interface { TypeAndVersion(ctx context.Context, opts *bind.CallOpts) (*models.SuiTransactionBlockResponse, error) @@ -29,7 +29,7 @@ type IOnramp interface { IsChainSupported(ctx context.Context, opts *bind.CallOpts, state bind.Object, destChainSelector uint64) (*models.SuiTransactionBlockResponse, error) GetExpectedNextSequenceNumber(ctx context.Context, opts *bind.CallOpts, state bind.Object, destChainSelector uint64) (*models.SuiTransactionBlockResponse, error) WithdrawFeeTokens(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, ownerCap bind.Object, feeTokenMetadata bind.Object) (*models.SuiTransactionBlockResponse, error) - GetFee(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeToken bind.Object, extraArgs []byte) (*models.SuiTransactionBlockResponse, error) + GetFee(ctx context.Context, opts *bind.CallOpts, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeTokenCoinMetadataObjectId string, extraArgs []byte) (*models.SuiTransactionBlockResponse, error) SetDynamicConfig(ctx context.Context, opts *bind.CallOpts, ref bind.Object, state bind.Object, ownerCap bind.Object, feeAggregator string, allowlistAdmin string) (*models.SuiTransactionBlockResponse, error) ApplyDestChainConfigUpdates(ctx context.Context, opts *bind.CallOpts, ref bind.Object, state bind.Object, ownerCap bind.Object, destChainSelectors []uint64, destChainAllowlistEnabled []bool, destChainRouters []string) (*models.SuiTransactionBlockResponse, error) GetDestChainConfig(ctx context.Context, opts *bind.CallOpts, state bind.Object, destChainSelector uint64) (*models.SuiTransactionBlockResponse, error) @@ -43,7 +43,7 @@ type IOnramp interface { GetDynamicConfigFields(ctx context.Context, opts *bind.CallOpts, cfg DynamicConfig) (*models.SuiTransactionBlockResponse, error) CalculateMessageHash(ctx context.Context, opts *bind.CallOpts, ref bind.Object, onRampAddress string, messageId []byte, sourceChainSelector uint64, destChainSelector uint64, sequenceNumber uint64, nonce uint64, sender string, receiver []byte, data []byte, feeToken string, feeTokenAmount uint64, sourcePoolAddresses []string, destTokenAddresses [][]byte, extraDatas [][]byte, amounts []uint64, destExecDatas [][]byte, extraArgs []byte) (*models.SuiTransactionBlockResponse, error) CalculateMetadataHash(ctx context.Context, opts *bind.CallOpts, ref bind.Object, sourceChainSelector uint64, destChainSelector uint64, onRampAddress string) (*models.SuiTransactionBlockResponse, error) - CcipSend(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenMetadata bind.Object, feeToken bind.Object, extraArgs []byte) (*models.SuiTransactionBlockResponse, error) + CcipSend(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenCoinMetadataObjectId string, feeToken bind.Object, extraArgs []byte) (*models.SuiTransactionBlockResponse, error) GetCcipPackageId(ctx context.Context, opts *bind.CallOpts) (*models.SuiTransactionBlockResponse, error) Owner(ctx context.Context, opts *bind.CallOpts, state bind.Object) (*models.SuiTransactionBlockResponse, error) HasPendingTransfer(ctx context.Context, opts *bind.CallOpts, state bind.Object) (*models.SuiTransactionBlockResponse, error) @@ -75,7 +75,7 @@ type IOnrampDevInspect interface { TypeAndVersion(ctx context.Context, opts *bind.CallOpts) (string, error) IsChainSupported(ctx context.Context, opts *bind.CallOpts, state bind.Object, destChainSelector uint64) (bool, error) GetExpectedNextSequenceNumber(ctx context.Context, opts *bind.CallOpts, state bind.Object, destChainSelector uint64) (uint64, error) - GetFee(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeToken bind.Object, extraArgs []byte) (uint64, error) + GetFee(ctx context.Context, opts *bind.CallOpts, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeTokenCoinMetadataObjectId string, extraArgs []byte) (uint64, error) GetDestChainConfig(ctx context.Context, opts *bind.CallOpts, state bind.Object, destChainSelector uint64) ([]any, error) GetAllowedSendersList(ctx context.Context, opts *bind.CallOpts, state bind.Object, destChainSelector uint64) ([]any, error) GetOutboundNonce(ctx context.Context, opts *bind.CallOpts, ref bind.Object, destChainSelector uint64, sender string) (uint64, error) @@ -85,7 +85,7 @@ type IOnrampDevInspect interface { GetDynamicConfigFields(ctx context.Context, opts *bind.CallOpts, cfg DynamicConfig) ([]any, error) CalculateMessageHash(ctx context.Context, opts *bind.CallOpts, ref bind.Object, onRampAddress string, messageId []byte, sourceChainSelector uint64, destChainSelector uint64, sequenceNumber uint64, nonce uint64, sender string, receiver []byte, data []byte, feeToken string, feeTokenAmount uint64, sourcePoolAddresses []string, destTokenAddresses [][]byte, extraDatas [][]byte, amounts []uint64, destExecDatas [][]byte, extraArgs []byte) ([]byte, error) CalculateMetadataHash(ctx context.Context, opts *bind.CallOpts, ref bind.Object, sourceChainSelector uint64, destChainSelector uint64, onRampAddress string) ([]byte, error) - CcipSend(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenMetadata bind.Object, feeToken bind.Object, extraArgs []byte) ([]byte, error) + CcipSend(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenCoinMetadataObjectId string, feeToken bind.Object, extraArgs []byte) ([]byte, error) GetCcipPackageId(ctx context.Context, opts *bind.CallOpts) (string, error) Owner(ctx context.Context, opts *bind.CallOpts, state bind.Object) (string, error) HasPendingTransfer(ctx context.Context, opts *bind.CallOpts, state bind.Object) (bool, error) @@ -109,8 +109,8 @@ type OnrampEncoder interface { GetExpectedNextSequenceNumberWithArgs(args ...any) (*bind.EncodedCall, error) WithdrawFeeTokens(typeArgs []string, ref bind.Object, state bind.Object, ownerCap bind.Object, feeTokenMetadata bind.Object) (*bind.EncodedCall, error) WithdrawFeeTokensWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) - GetFee(typeArgs []string, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeToken bind.Object, extraArgs []byte) (*bind.EncodedCall, error) - GetFeeWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) + GetFee(ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeTokenCoinMetadataObjectId string, extraArgs []byte) (*bind.EncodedCall, error) + GetFeeWithArgs(args ...any) (*bind.EncodedCall, error) SetDynamicConfig(ref bind.Object, state bind.Object, ownerCap bind.Object, feeAggregator string, allowlistAdmin string) (*bind.EncodedCall, error) SetDynamicConfigWithArgs(args ...any) (*bind.EncodedCall, error) ApplyDestChainConfigUpdates(ref bind.Object, state bind.Object, ownerCap bind.Object, destChainSelectors []uint64, destChainAllowlistEnabled []bool, destChainRouters []string) (*bind.EncodedCall, error) @@ -137,7 +137,7 @@ type OnrampEncoder interface { CalculateMessageHashWithArgs(args ...any) (*bind.EncodedCall, error) CalculateMetadataHash(ref bind.Object, sourceChainSelector uint64, destChainSelector uint64, onRampAddress string) (*bind.EncodedCall, error) CalculateMetadataHashWithArgs(args ...any) (*bind.EncodedCall, error) - CcipSend(typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenMetadata bind.Object, feeToken bind.Object, extraArgs []byte) (*bind.EncodedCall, error) + CcipSend(typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenCoinMetadataObjectId string, feeToken bind.Object, extraArgs []byte) (*bind.EncodedCall, error) CcipSendWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) GetCcipPackageId() (*bind.EncodedCall, error) GetCcipPackageIdWithArgs(args ...any) (*bind.EncodedCall, error) @@ -1101,8 +1101,8 @@ func (c *OnrampContract) WithdrawFeeTokens(ctx context.Context, opts *bind.CallO } // GetFee executes the get_fee Move function. -func (c *OnrampContract) GetFee(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeToken bind.Object, extraArgs []byte) (*models.SuiTransactionBlockResponse, error) { - encoded, err := c.onrampEncoder.GetFee(typeArgs, ref, clock, destChainSelector, receiver, data, tokenAddresses, tokenAmounts, feeToken, extraArgs) +func (c *OnrampContract) GetFee(ctx context.Context, opts *bind.CallOpts, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeTokenCoinMetadataObjectId string, extraArgs []byte) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.onrampEncoder.GetFee(ref, clock, destChainSelector, receiver, data, tokenAddresses, tokenAmounts, feeTokenCoinMetadataObjectId, extraArgs) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -1241,8 +1241,8 @@ func (c *OnrampContract) CalculateMetadataHash(ctx context.Context, opts *bind.C } // CcipSend executes the ccip_send Move function. -func (c *OnrampContract) CcipSend(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenMetadata bind.Object, feeToken bind.Object, extraArgs []byte) (*models.SuiTransactionBlockResponse, error) { - encoded, err := c.onrampEncoder.CcipSend(typeArgs, ref, state, clock, destChainSelector, receiver, data, tokenParams, feeTokenMetadata, feeToken, extraArgs) +func (c *OnrampContract) CcipSend(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenCoinMetadataObjectId string, feeToken bind.Object, extraArgs []byte) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.onrampEncoder.CcipSend(typeArgs, ref, state, clock, destChainSelector, receiver, data, tokenParams, feeTokenCoinMetadataObjectId, feeToken, extraArgs) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -1539,8 +1539,8 @@ func (d *OnrampDevInspect) GetExpectedNextSequenceNumber(ctx context.Context, op // GetFee executes the get_fee Move function using DevInspect to get return values. // // Returns: u64 -func (d *OnrampDevInspect) GetFee(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeToken bind.Object, extraArgs []byte) (uint64, error) { - encoded, err := d.contract.onrampEncoder.GetFee(typeArgs, ref, clock, destChainSelector, receiver, data, tokenAddresses, tokenAmounts, feeToken, extraArgs) +func (d *OnrampDevInspect) GetFee(ctx context.Context, opts *bind.CallOpts, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeTokenCoinMetadataObjectId string, extraArgs []byte) (uint64, error) { + encoded, err := d.contract.onrampEncoder.GetFee(ref, clock, destChainSelector, receiver, data, tokenAddresses, tokenAmounts, feeTokenCoinMetadataObjectId, extraArgs) if err != nil { return 0, fmt.Errorf("failed to encode function call: %w", err) } @@ -1736,8 +1736,8 @@ func (d *OnrampDevInspect) CalculateMetadataHash(ctx context.Context, opts *bind // CcipSend executes the ccip_send Move function using DevInspect to get return values. // // Returns: vector -func (d *OnrampDevInspect) CcipSend(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenMetadata bind.Object, feeToken bind.Object, extraArgs []byte) ([]byte, error) { - encoded, err := d.contract.onrampEncoder.CcipSend(typeArgs, ref, state, clock, destChainSelector, receiver, data, tokenParams, feeTokenMetadata, feeToken, extraArgs) +func (d *OnrampDevInspect) CcipSend(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenCoinMetadataObjectId string, feeToken bind.Object, extraArgs []byte) ([]byte, error) { + encoded, err := d.contract.onrampEncoder.CcipSend(typeArgs, ref, state, clock, destChainSelector, receiver, data, tokenParams, feeTokenCoinMetadataObjectId, feeToken, extraArgs) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -2138,11 +2138,9 @@ func (c onrampEncoder) WithdrawFeeTokensWithArgs(typeArgs []string, args ...any) } // GetFee encodes a call to the get_fee Move function. -func (c onrampEncoder) GetFee(typeArgs []string, ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeToken bind.Object, extraArgs []byte) (*bind.EncodedCall, error) { - typeArgsList := typeArgs - typeParamsList := []string{ - "T", - } +func (c onrampEncoder) GetFee(ref bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenAddresses []string, tokenAmounts []uint64, feeTokenCoinMetadataObjectId string, extraArgs []byte) (*bind.EncodedCall, error) { + typeArgsList := []string{} + typeParamsList := []string{} return c.EncodeCallArgsWithGenerics("get_fee", typeArgsList, typeParamsList, []string{ "&CCIPObjectRef", "&Clock", @@ -2151,7 +2149,7 @@ func (c onrampEncoder) GetFee(typeArgs []string, ref bind.Object, clock bind.Obj "vector", "vector
", "vector", - "&CoinMetadata", + "address", "vector", }, []any{ ref, @@ -2161,7 +2159,7 @@ func (c onrampEncoder) GetFee(typeArgs []string, ref bind.Object, clock bind.Obj data, tokenAddresses, tokenAmounts, - feeToken, + feeTokenCoinMetadataObjectId, extraArgs, }, []string{ "u64", @@ -2170,7 +2168,7 @@ func (c onrampEncoder) GetFee(typeArgs []string, ref bind.Object, clock bind.Obj // GetFeeWithArgs encodes a call to the get_fee Move function using arbitrary arguments. // This method allows passing both regular values and transaction.Argument values for PTB chaining. -func (c onrampEncoder) GetFeeWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) { +func (c onrampEncoder) GetFeeWithArgs(args ...any) (*bind.EncodedCall, error) { expectedParams := []string{ "&CCIPObjectRef", "&Clock", @@ -2179,17 +2177,15 @@ func (c onrampEncoder) GetFeeWithArgs(typeArgs []string, args ...any) (*bind.Enc "vector", "vector
", "vector", - "&CoinMetadata", + "address", "vector", } if len(args) != len(expectedParams) { return nil, fmt.Errorf("expected %d arguments, got %d", len(expectedParams), len(args)) } - typeArgsList := typeArgs - typeParamsList := []string{ - "T", - } + typeArgsList := []string{} + typeParamsList := []string{} return c.EncodeCallArgsWithGenerics("get_fee", typeArgsList, typeParamsList, expectedParams, args, []string{ "u64", }) @@ -2710,7 +2706,7 @@ func (c onrampEncoder) CalculateMetadataHashWithArgs(args ...any) (*bind.Encoded } // CcipSend encodes a call to the ccip_send Move function. -func (c onrampEncoder) CcipSend(typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenMetadata bind.Object, feeToken bind.Object, extraArgs []byte) (*bind.EncodedCall, error) { +func (c onrampEncoder) CcipSend(typeArgs []string, ref bind.Object, state bind.Object, clock bind.Object, destChainSelector uint64, receiver []byte, data []byte, tokenParams bind.Object, feeTokenCoinMetadataObjectId string, feeToken bind.Object, extraArgs []byte) (*bind.EncodedCall, error) { typeArgsList := typeArgs typeParamsList := []string{ "T", @@ -2723,7 +2719,7 @@ func (c onrampEncoder) CcipSend(typeArgs []string, ref bind.Object, state bind.O "vector", "vector", "TokenTransferParams", - "&CoinMetadata", + "address", "&mut Coin", "vector", }, []any{ @@ -2734,7 +2730,7 @@ func (c onrampEncoder) CcipSend(typeArgs []string, ref bind.Object, state bind.O receiver, data, tokenParams, - feeTokenMetadata, + feeTokenCoinMetadataObjectId, feeToken, extraArgs, }, []string{ @@ -2753,7 +2749,7 @@ func (c onrampEncoder) CcipSendWithArgs(typeArgs []string, args ...any) (*bind.E "vector", "vector", "TokenTransferParams", - "&CoinMetadata", + "address", "&mut Coin", "vector", } diff --git a/bindings/generated/ccip/ccip_token_pools/burn_mint_token_pool/burn_mint_token_pool.go b/bindings/generated/ccip/ccip_token_pools/burn_mint_token_pool/burn_mint_token_pool.go index b3e8822b..1e4605ad 100644 --- a/bindings/generated/ccip/ccip_token_pools/burn_mint_token_pool/burn_mint_token_pool.go +++ b/bindings/generated/ccip/ccip_token_pools/burn_mint_token_pool/burn_mint_token_pool.go @@ -19,12 +19,12 @@ var ( _ = big.NewInt ) -const FunctionInfo = `[{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"accept_ownership","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"accept_ownership_from_object","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"from","type":"sui::object::UID"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"add_remote_pool","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"apply_allowlist_updates","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"removes","type":"vector
"},{"name":"adds","type":"vector
"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"apply_chain_updates","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"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":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"destroy_token_pool","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"execute_ownership_transfer","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"BurnMintTokenPoolState"},{"name":"to","type":"address"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"BurnMintTokenPoolState"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_allowlist","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_allowlist_enabled","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_remote_pools","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_remote_token","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_supported_chains","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_token","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_token_decimals","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"has_pending_transfer","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"initialize","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata","type":"CoinMetadata"},{"name":"treasury_cap","type":"TreasuryCap"},{"name":"token_pool_administrator","type":"address"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"initialize_by_ccip_admin","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"ccip_admin_proof","type":"state_object::CCIPAdminProof"},{"name":"coin_metadata","type":"CoinMetadata"},{"name":"treasury_cap","type":"TreasuryCap"},{"name":"token_pool_administrator","type":"address"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"is_remote_pool","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"is_supported_chain","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"burn_mint_token_pool","module":"burn_mint_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":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"owner","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"pending_transfer_accepted","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"pending_transfer_from","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"pending_transfer_to","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"release_or_mint","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"receiver_params","type":"offramp_sh::ReceiverParams"},{"name":"clock","type":"Clock"},{"name":"pool","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"remove_remote_pool","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"set_allowlist_enabled","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"enabled","type":"bool"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"set_chain_rate_limiter_config","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"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":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"set_chain_rate_limiter_configs","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"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":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"transfer_ownership","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"new_owner","type":"address"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"type_and_version","parameters":null}]` +const FunctionInfo = `[{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"accept_ownership","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"accept_ownership_from_object","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"from","type":"sui::object::UID"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"add_remote_pool","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"apply_allowlist_updates","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"removes","type":"vector
"},{"name":"adds","type":"vector
"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"apply_chain_updates","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"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":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"destroy_token_pool","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"execute_ownership_transfer","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"BurnMintTokenPoolState"},{"name":"to","type":"address"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"BurnMintTokenPoolState"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_allowlist","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_allowlist_enabled","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_remote_pools","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_remote_token","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_supported_chains","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_token","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"get_token_decimals","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"has_pending_transfer","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"initialize","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"coin_metadata_object_id","type":"address"},{"name":"treasury_cap","type":"TreasuryCap"},{"name":"token_pool_administrator","type":"address"},{"name":"decimals","type":"u8"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"initialize_by_ccip_admin","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"ccip_admin_proof","type":"state_object::CCIPAdminProof"},{"name":"coin_metadata_object_id","type":"address"},{"name":"treasury_cap","type":"TreasuryCap"},{"name":"token_pool_administrator","type":"address"},{"name":"decimals","type":"u8"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"is_remote_pool","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"is_supported_chain","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"burn_mint_token_pool","module":"burn_mint_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":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"owner","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"pending_transfer_accepted","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"pending_transfer_from","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"pending_transfer_to","parameters":[{"name":"state","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"release_or_mint","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"receiver_params","type":"offramp_sh::ReceiverParams"},{"name":"clock","type":"Clock"},{"name":"pool","type":"BurnMintTokenPoolState"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"remove_remote_pool","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"set_allowlist_enabled","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"enabled","type":"bool"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"set_chain_rate_limiter_config","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"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":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"set_chain_rate_limiter_configs","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"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":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"transfer_ownership","parameters":[{"name":"state","type":"BurnMintTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"new_owner","type":"address"}]},{"package":"burn_mint_token_pool","module":"burn_mint_token_pool","name":"type_and_version","parameters":null}]` type IBurnMintTokenPool interface { TypeAndVersion(ctx context.Context, opts *bind.CallOpts) (*models.SuiTransactionBlockResponse, error) - Initialize(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, coinMetadata bind.Object, treasuryCap bind.Object, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) - InitializeByCcipAdmin(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, treasuryCap bind.Object, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) + Initialize(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, coinMetadataObjectId string, treasuryCap bind.Object, tokenPoolAdministrator string, decimals byte) (*models.SuiTransactionBlockResponse, error) + InitializeByCcipAdmin(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadataObjectId string, treasuryCap bind.Object, tokenPoolAdministrator string, decimals byte) (*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) GetRemotePools(ctx context.Context, opts *bind.CallOpts, typeArgs []string, state bind.Object, remoteChainSelector uint64) (*models.SuiTransactionBlockResponse, error) @@ -92,9 +92,9 @@ type IBurnMintTokenPoolDevInspect interface { type BurnMintTokenPoolEncoder interface { TypeAndVersion() (*bind.EncodedCall, error) TypeAndVersionWithArgs(args ...any) (*bind.EncodedCall, error) - Initialize(typeArgs []string, ref bind.Object, coinMetadata bind.Object, treasuryCap bind.Object, tokenPoolAdministrator string) (*bind.EncodedCall, error) + Initialize(typeArgs []string, ref bind.Object, coinMetadataObjectId string, treasuryCap bind.Object, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) InitializeWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) - InitializeByCcipAdmin(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, treasuryCap bind.Object, tokenPoolAdministrator string) (*bind.EncodedCall, error) + InitializeByCcipAdmin(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadataObjectId string, treasuryCap bind.Object, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) InitializeByCcipAdminWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) GetToken(typeArgs []string, state bind.Object) (*bind.EncodedCall, error) GetTokenWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) @@ -295,8 +295,8 @@ func (c *BurnMintTokenPoolContract) TypeAndVersion(ctx context.Context, opts *bi } // Initialize executes the initialize Move function. -func (c *BurnMintTokenPoolContract) Initialize(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, coinMetadata bind.Object, treasuryCap bind.Object, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) { - encoded, err := c.burnMintTokenPoolEncoder.Initialize(typeArgs, ref, coinMetadata, treasuryCap, tokenPoolAdministrator) +func (c *BurnMintTokenPoolContract) Initialize(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, coinMetadataObjectId string, treasuryCap bind.Object, tokenPoolAdministrator string, decimals byte) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.burnMintTokenPoolEncoder.Initialize(typeArgs, ref, coinMetadataObjectId, treasuryCap, tokenPoolAdministrator, decimals) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -305,8 +305,8 @@ func (c *BurnMintTokenPoolContract) Initialize(ctx context.Context, opts *bind.C } // InitializeByCcipAdmin executes the initialize_by_ccip_admin Move function. -func (c *BurnMintTokenPoolContract) InitializeByCcipAdmin(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, treasuryCap bind.Object, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) { - encoded, err := c.burnMintTokenPoolEncoder.InitializeByCcipAdmin(typeArgs, ref, ccipAdminProof, coinMetadata, treasuryCap, tokenPoolAdministrator) +func (c *BurnMintTokenPoolContract) InitializeByCcipAdmin(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadataObjectId string, treasuryCap bind.Object, tokenPoolAdministrator string, decimals byte) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.burnMintTokenPoolEncoder.InitializeByCcipAdmin(typeArgs, ref, ccipAdminProof, coinMetadataObjectId, treasuryCap, tokenPoolAdministrator, decimals) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -1091,21 +1091,23 @@ func (c burnMintTokenPoolEncoder) TypeAndVersionWithArgs(args ...any) (*bind.Enc } // Initialize encodes a call to the initialize Move function. -func (c burnMintTokenPoolEncoder) Initialize(typeArgs []string, ref bind.Object, coinMetadata bind.Object, treasuryCap bind.Object, tokenPoolAdministrator string) (*bind.EncodedCall, error) { +func (c burnMintTokenPoolEncoder) Initialize(typeArgs []string, ref bind.Object, coinMetadataObjectId string, treasuryCap bind.Object, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) { typeArgsList := typeArgs typeParamsList := []string{ "T", } return c.EncodeCallArgsWithGenerics("initialize", typeArgsList, typeParamsList, []string{ "&mut CCIPObjectRef", - "&CoinMetadata", + "address", "TreasuryCap", "address", + "u8", }, []any{ ref, - coinMetadata, + coinMetadataObjectId, treasuryCap, tokenPoolAdministrator, + decimals, }, nil) } @@ -1114,9 +1116,10 @@ func (c burnMintTokenPoolEncoder) Initialize(typeArgs []string, ref bind.Object, func (c burnMintTokenPoolEncoder) InitializeWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) { expectedParams := []string{ "&mut CCIPObjectRef", - "&CoinMetadata", + "address", "TreasuryCap", "address", + "u8", } if len(args) != len(expectedParams) { @@ -1130,7 +1133,7 @@ func (c burnMintTokenPoolEncoder) InitializeWithArgs(typeArgs []string, args ... } // InitializeByCcipAdmin encodes a call to the initialize_by_ccip_admin Move function. -func (c burnMintTokenPoolEncoder) InitializeByCcipAdmin(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, treasuryCap bind.Object, tokenPoolAdministrator string) (*bind.EncodedCall, error) { +func (c burnMintTokenPoolEncoder) InitializeByCcipAdmin(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadataObjectId string, treasuryCap bind.Object, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) { typeArgsList := typeArgs typeParamsList := []string{ "T", @@ -1138,15 +1141,17 @@ func (c burnMintTokenPoolEncoder) InitializeByCcipAdmin(typeArgs []string, ref b return c.EncodeCallArgsWithGenerics("initialize_by_ccip_admin", typeArgsList, typeParamsList, []string{ "&mut CCIPObjectRef", "state_object::CCIPAdminProof", - "&CoinMetadata", + "address", "TreasuryCap", "address", + "u8", }, []any{ ref, ccipAdminProof, - coinMetadata, + coinMetadataObjectId, treasuryCap, tokenPoolAdministrator, + decimals, }, nil) } @@ -1156,9 +1161,10 @@ func (c burnMintTokenPoolEncoder) InitializeByCcipAdminWithArgs(typeArgs []strin expectedParams := []string{ "&mut CCIPObjectRef", "state_object::CCIPAdminProof", - "&CoinMetadata", + "address", "TreasuryCap", "address", + "u8", } if len(args) != len(expectedParams) { diff --git a/bindings/generated/ccip/ccip_token_pools/managed_token_pool/managed_token_pool.go b/bindings/generated/ccip/ccip_token_pools/managed_token_pool/managed_token_pool.go index 94dfcec2..275fcf11 100644 --- a/bindings/generated/ccip/ccip_token_pools/managed_token_pool/managed_token_pool.go +++ b/bindings/generated/ccip/ccip_token_pools/managed_token_pool/managed_token_pool.go @@ -19,12 +19,12 @@ var ( _ = big.NewInt ) -const FunctionInfo = `[{"package":"managed_token_pool","module":"managed_token_pool","name":"accept_ownership","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"accept_ownership_from_object","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"from","type":"sui::object::UID"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"add_remote_pool","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"apply_allowlist_updates","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"removes","type":"vector
"},{"name":"adds","type":"vector
"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"apply_chain_updates","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"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":"managed_token_pool","module":"managed_token_pool","name":"destroy_token_pool","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"execute_ownership_transfer","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"ManagedTokenPoolState"},{"name":"to","type":"address"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"ManagedTokenPoolState"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_allowlist","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_allowlist_enabled","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_remote_pools","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_remote_token","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_supported_chains","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_token","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_token_decimals","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"has_pending_transfer","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"initialize_by_ccip_admin","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"ccip_admin_proof","type":"state_object::CCIPAdminProof"},{"name":"coin_metadata","type":"CoinMetadata"},{"name":"mint_cap","type":"MintCap"},{"name":"managed_token_state","type":"address"},{"name":"token_pool_administrator","type":"address"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"initialize_with_managed_token","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"managed_token_state","type":"TokenState"},{"name":"owner_cap","type":"ManagedTokenOwnerCap"},{"name":"coin_metadata","type":"CoinMetadata"},{"name":"mint_cap","type":"MintCap"},{"name":"token_pool_administrator","type":"address"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"is_remote_pool","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"is_supported_chain","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"managed_token_pool","module":"managed_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":"token_state","type":"TokenState"},{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"owner","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"pending_transfer_accepted","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"pending_transfer_from","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"pending_transfer_to","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_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":"token_state","type":"TokenState"},{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"remove_remote_pool","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"set_allowlist_enabled","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"enabled","type":"bool"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"set_chain_rate_limiter_config","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"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":"managed_token_pool","module":"managed_token_pool","name":"set_chain_rate_limiter_configs","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"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":"managed_token_pool","module":"managed_token_pool","name":"transfer_ownership","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"new_owner","type":"address"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"type_and_version","parameters":null}]` +const FunctionInfo = `[{"package":"managed_token_pool","module":"managed_token_pool","name":"accept_ownership","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"accept_ownership_from_object","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"from","type":"sui::object::UID"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"add_remote_pool","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"apply_allowlist_updates","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"removes","type":"vector
"},{"name":"adds","type":"vector
"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"apply_chain_updates","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"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":"managed_token_pool","module":"managed_token_pool","name":"destroy_token_pool","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"execute_ownership_transfer","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"ManagedTokenPoolState"},{"name":"to","type":"address"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"execute_ownership_transfer_to_mcms","parameters":[{"name":"owner_cap","type":"OwnerCap"},{"name":"state","type":"ManagedTokenPoolState"},{"name":"registry","type":"Registry"},{"name":"to","type":"address"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_allowlist","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_allowlist_enabled","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_remote_pools","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_remote_token","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_supported_chains","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_token","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"get_token_decimals","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"has_pending_transfer","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"initialize_by_ccip_admin","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"ccip_admin_proof","type":"state_object::CCIPAdminProof"},{"name":"coin_metadata_object_id","type":"address"},{"name":"mint_cap","type":"MintCap"},{"name":"managed_token_state","type":"address"},{"name":"token_pool_administrator","type":"address"},{"name":"decimals","type":"u8"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"initialize_with_managed_token","parameters":[{"name":"ref","type":"CCIPObjectRef"},{"name":"managed_token_state","type":"TokenState"},{"name":"owner_cap","type":"ManagedTokenOwnerCap"},{"name":"coin_metadata_object_id","type":"address"},{"name":"mint_cap","type":"MintCap"},{"name":"token_pool_administrator","type":"address"},{"name":"decimals","type":"u8"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"is_remote_pool","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"is_supported_chain","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"remote_chain_selector","type":"u64"}]},{"package":"managed_token_pool","module":"managed_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":"token_state","type":"TokenState"},{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"owner","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"pending_transfer_accepted","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"pending_transfer_from","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"pending_transfer_to","parameters":[{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_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":"token_state","type":"TokenState"},{"name":"state","type":"ManagedTokenPoolState"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"remove_remote_pool","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"remote_chain_selector","type":"u64"},{"name":"remote_pool_address","type":"vector"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"set_allowlist_enabled","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"enabled","type":"bool"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"set_chain_rate_limiter_config","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"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":"managed_token_pool","module":"managed_token_pool","name":"set_chain_rate_limiter_configs","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"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":"managed_token_pool","module":"managed_token_pool","name":"transfer_ownership","parameters":[{"name":"state","type":"ManagedTokenPoolState"},{"name":"owner_cap","type":"OwnerCap"},{"name":"new_owner","type":"address"}]},{"package":"managed_token_pool","module":"managed_token_pool","name":"type_and_version","parameters":null}]` type IManagedTokenPool interface { TypeAndVersion(ctx context.Context, opts *bind.CallOpts) (*models.SuiTransactionBlockResponse, error) - InitializeWithManagedToken(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, managedTokenState bind.Object, ownerCap bind.Object, coinMetadata bind.Object, mintCap bind.Object, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) - InitializeByCcipAdmin(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, mintCap bind.Object, managedTokenState string, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) + InitializeWithManagedToken(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, managedTokenState bind.Object, ownerCap bind.Object, coinMetadataObjectId string, mintCap bind.Object, tokenPoolAdministrator string, decimals byte) (*models.SuiTransactionBlockResponse, error) + InitializeByCcipAdmin(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadataObjectId string, mintCap bind.Object, managedTokenState string, tokenPoolAdministrator string, decimals byte) (*models.SuiTransactionBlockResponse, error) AddRemotePool(ctx context.Context, opts *bind.CallOpts, typeArgs []string, state bind.Object, ownerCap bind.Object, remoteChainSelector uint64, remotePoolAddress []byte) (*models.SuiTransactionBlockResponse, error) RemoveRemotePool(ctx context.Context, opts *bind.CallOpts, typeArgs []string, state bind.Object, ownerCap bind.Object, remoteChainSelector uint64, remotePoolAddress []byte) (*models.SuiTransactionBlockResponse, error) IsSupportedChain(ctx context.Context, opts *bind.CallOpts, typeArgs []string, state bind.Object, remoteChainSelector uint64) (*models.SuiTransactionBlockResponse, error) @@ -92,9 +92,9 @@ type IManagedTokenPoolDevInspect interface { type ManagedTokenPoolEncoder interface { TypeAndVersion() (*bind.EncodedCall, error) TypeAndVersionWithArgs(args ...any) (*bind.EncodedCall, error) - InitializeWithManagedToken(typeArgs []string, ref bind.Object, managedTokenState bind.Object, ownerCap bind.Object, coinMetadata bind.Object, mintCap bind.Object, tokenPoolAdministrator string) (*bind.EncodedCall, error) + InitializeWithManagedToken(typeArgs []string, ref bind.Object, managedTokenState bind.Object, ownerCap bind.Object, coinMetadataObjectId string, mintCap bind.Object, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) InitializeWithManagedTokenWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) - InitializeByCcipAdmin(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, mintCap bind.Object, managedTokenState string, tokenPoolAdministrator string) (*bind.EncodedCall, error) + InitializeByCcipAdmin(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadataObjectId string, mintCap bind.Object, managedTokenState string, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) InitializeByCcipAdminWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) AddRemotePool(typeArgs []string, state bind.Object, ownerCap bind.Object, remoteChainSelector uint64, remotePoolAddress []byte) (*bind.EncodedCall, error) AddRemotePoolWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) @@ -295,8 +295,8 @@ func (c *ManagedTokenPoolContract) TypeAndVersion(ctx context.Context, opts *bin } // InitializeWithManagedToken executes the initialize_with_managed_token Move function. -func (c *ManagedTokenPoolContract) InitializeWithManagedToken(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, managedTokenState bind.Object, ownerCap bind.Object, coinMetadata bind.Object, mintCap bind.Object, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) { - encoded, err := c.managedTokenPoolEncoder.InitializeWithManagedToken(typeArgs, ref, managedTokenState, ownerCap, coinMetadata, mintCap, tokenPoolAdministrator) +func (c *ManagedTokenPoolContract) InitializeWithManagedToken(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, managedTokenState bind.Object, ownerCap bind.Object, coinMetadataObjectId string, mintCap bind.Object, tokenPoolAdministrator string, decimals byte) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.managedTokenPoolEncoder.InitializeWithManagedToken(typeArgs, ref, managedTokenState, ownerCap, coinMetadataObjectId, mintCap, tokenPoolAdministrator, decimals) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -305,8 +305,8 @@ func (c *ManagedTokenPoolContract) InitializeWithManagedToken(ctx context.Contex } // InitializeByCcipAdmin executes the initialize_by_ccip_admin Move function. -func (c *ManagedTokenPoolContract) InitializeByCcipAdmin(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, mintCap bind.Object, managedTokenState string, tokenPoolAdministrator string) (*models.SuiTransactionBlockResponse, error) { - encoded, err := c.managedTokenPoolEncoder.InitializeByCcipAdmin(typeArgs, ref, ccipAdminProof, coinMetadata, mintCap, managedTokenState, tokenPoolAdministrator) +func (c *ManagedTokenPoolContract) InitializeByCcipAdmin(ctx context.Context, opts *bind.CallOpts, typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadataObjectId string, mintCap bind.Object, managedTokenState string, tokenPoolAdministrator string, decimals byte) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.managedTokenPoolEncoder.InitializeByCcipAdmin(typeArgs, ref, ccipAdminProof, coinMetadataObjectId, mintCap, managedTokenState, tokenPoolAdministrator, decimals) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -1091,7 +1091,7 @@ func (c managedTokenPoolEncoder) TypeAndVersionWithArgs(args ...any) (*bind.Enco } // InitializeWithManagedToken encodes a call to the initialize_with_managed_token Move function. -func (c managedTokenPoolEncoder) InitializeWithManagedToken(typeArgs []string, ref bind.Object, managedTokenState bind.Object, ownerCap bind.Object, coinMetadata bind.Object, mintCap bind.Object, tokenPoolAdministrator string) (*bind.EncodedCall, error) { +func (c managedTokenPoolEncoder) InitializeWithManagedToken(typeArgs []string, ref bind.Object, managedTokenState bind.Object, ownerCap bind.Object, coinMetadataObjectId string, mintCap bind.Object, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) { typeArgsList := typeArgs typeParamsList := []string{ "T", @@ -1100,16 +1100,18 @@ func (c managedTokenPoolEncoder) InitializeWithManagedToken(typeArgs []string, r "&mut CCIPObjectRef", "&TokenState", "&ManagedTokenOwnerCap", - "&CoinMetadata", + "address", "MintCap", "address", + "u8", }, []any{ ref, managedTokenState, ownerCap, - coinMetadata, + coinMetadataObjectId, mintCap, tokenPoolAdministrator, + decimals, }, nil) } @@ -1120,9 +1122,10 @@ func (c managedTokenPoolEncoder) InitializeWithManagedTokenWithArgs(typeArgs []s "&mut CCIPObjectRef", "&TokenState", "&ManagedTokenOwnerCap", - "&CoinMetadata", + "address", "MintCap", "address", + "u8", } if len(args) != len(expectedParams) { @@ -1136,7 +1139,7 @@ func (c managedTokenPoolEncoder) InitializeWithManagedTokenWithArgs(typeArgs []s } // InitializeByCcipAdmin encodes a call to the initialize_by_ccip_admin Move function. -func (c managedTokenPoolEncoder) InitializeByCcipAdmin(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadata bind.Object, mintCap bind.Object, managedTokenState string, tokenPoolAdministrator string) (*bind.EncodedCall, error) { +func (c managedTokenPoolEncoder) InitializeByCcipAdmin(typeArgs []string, ref bind.Object, ccipAdminProof bind.Object, coinMetadataObjectId string, mintCap bind.Object, managedTokenState string, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) { typeArgsList := typeArgs typeParamsList := []string{ "T", @@ -1144,17 +1147,19 @@ func (c managedTokenPoolEncoder) InitializeByCcipAdmin(typeArgs []string, ref bi return c.EncodeCallArgsWithGenerics("initialize_by_ccip_admin", typeArgsList, typeParamsList, []string{ "&mut CCIPObjectRef", "state_object::CCIPAdminProof", - "&CoinMetadata", + "address", "MintCap", "address", "address", + "u8", }, []any{ ref, ccipAdminProof, - coinMetadata, + coinMetadataObjectId, mintCap, managedTokenState, tokenPoolAdministrator, + decimals, }, nil) } @@ -1164,10 +1169,11 @@ func (c managedTokenPoolEncoder) InitializeByCcipAdminWithArgs(typeArgs []string expectedParams := []string{ "&mut CCIPObjectRef", "state_object::CCIPAdminProof", - "&CoinMetadata", + "address", "MintCap", "address", "address", + "u8", } if len(args) != len(expectedParams) { 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 402a867f..890e3f66 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":"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":"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":"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":"local_domain_identifier","type":"u32"},{"name":"token_pool_package_id","type":"address"},{"name":"token_pool_administrator","type":"address"},{"name":"decimals","type":"u8"}]},{"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":"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, localDomainIdentifier uint32, tokenPoolPackageId string, tokenPoolAdministrator string, decimals byte) (*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) GetRemotePools(ctx context.Context, opts *bind.CallOpts, typeArgs []string, state bind.Object, remoteChainSelector uint64) (*models.SuiTransactionBlockResponse, error) @@ -95,7 +95,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, localDomainIdentifier uint32, tokenPoolPackageId string, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) InitializeWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) GetToken(typeArgs []string, state bind.Object) (*bind.EncodedCall, error) GetTokenWithArgs(typeArgs []string, args ...any) (*bind.EncodedCall, error) @@ -350,8 +350,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, localDomainIdentifier uint32, tokenPoolPackageId string, tokenPoolAdministrator string, decimals byte) (*models.SuiTransactionBlockResponse, error) { + encoded, err := c.usdcTokenPoolEncoder.Initialize(typeArgs, ref, ccipAdminProof, localDomainIdentifier, tokenPoolPackageId, tokenPoolAdministrator, decimals) if err != nil { return nil, fmt.Errorf("failed to encode function call: %w", err) } @@ -1192,7 +1192,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, localDomainIdentifier uint32, tokenPoolPackageId string, tokenPoolAdministrator string, decimals byte) (*bind.EncodedCall, error) { typeArgsList := typeArgs typeParamsList := []string{ "T", @@ -1200,17 +1200,17 @@ func (c usdcTokenPoolEncoder) Initialize(typeArgs []string, ref bind.Object, cci return c.EncodeCallArgsWithGenerics("initialize", typeArgsList, typeParamsList, []string{ "&mut CCIPObjectRef", "state_object::CCIPAdminProof", - "&CoinMetadata", "u32", "address", "address", + "u8", }, []any{ ref, ccipAdminProof, - coinMetadata, localDomainIdentifier, tokenPoolPackageId, tokenPoolAdministrator, + decimals, }, nil) } @@ -1220,10 +1220,10 @@ func (c usdcTokenPoolEncoder) InitializeWithArgs(typeArgs []string, args ...any) expectedParams := []string{ "&mut CCIPObjectRef", "state_object::CCIPAdminProof", - "&CoinMetadata", "u32", "address", "address", + "u8", } if len(args) != len(expectedParams) { diff --git a/contracts/ccip/ccip/sources/token_admin_registry.move b/contracts/ccip/ccip/sources/token_admin_registry.move index 1c3ecabb..ebe2ad44 100644 --- a/contracts/ccip/ccip/sources/token_admin_registry.move +++ b/contracts/ccip/ccip/sources/token_admin_registry.move @@ -9,7 +9,7 @@ use std::ascii; use std::string::{Self, String}; use std::type_name; use sui::address; -use sui::coin::{CoinMetadata, TreasuryCap}; +use sui::coin::TreasuryCap; use sui::event; use sui::linked_table::{Self, LinkedTable}; @@ -308,7 +308,7 @@ public fun get_all_configured_tokens( public fun register_pool( ref: &mut CCIPObjectRef, _: &TreasuryCap, // passing in the treasury cap to demonstrate ownership over the token - coin_metadata: &CoinMetadata, + coin_metadata_object_id: address, initial_administrator: address, lock_or_burn_params: vector
, release_or_mint_params: vector
, @@ -320,14 +320,13 @@ public fun register_pool( string::utf8(b"register_pool"), VERSION, ); - let coin_metadata_address: address = object::id_to_address(&object::id(coin_metadata)); let token_type = type_name::with_defining_ids().into_string(); let proof_tn = type_name::with_defining_ids(); let proof_package_id = address::from_ascii_bytes(&proof_tn.address_string().into_bytes()); let token_pool_module = proof_tn.module_string().into_bytes().to_string(); register_pool_internal( ref, - coin_metadata_address, + coin_metadata_object_id, proof_package_id, token_pool_module, token_type, @@ -343,7 +342,7 @@ public fun register_pool( public fun register_pool_by_admin( ref: &mut CCIPObjectRef, _: state_object::CCIPAdminProof, - coin_metadata_address: address, + coin_metadata_object_id: address, token_pool_package_id: address, token_pool_module: String, token_type: ascii::String, @@ -361,7 +360,7 @@ public fun register_pool_by_admin( ); register_pool_internal( ref, - coin_metadata_address, + coin_metadata_object_id, token_pool_package_id, token_pool_module, token_type, @@ -374,7 +373,7 @@ public fun register_pool_by_admin( fun register_pool_internal( ref: &mut CCIPObjectRef, - coin_metadata_address: address, + coin_metadata_object_id: address, token_pool_package_id: address, token_pool_module: String, token_type: ascii::String, @@ -384,7 +383,7 @@ fun register_pool_internal( release_or_mint_params: vector
, ) { let state = state_object::borrow_mut(ref); - assert!(!state.token_configs.contains(coin_metadata_address), ETokenAlreadyRegistered); + assert!(!state.token_configs.contains(coin_metadata_object_id), ETokenAlreadyRegistered); let token_config = TokenConfig { token_pool_package_id, @@ -397,10 +396,10 @@ fun register_pool_internal( release_or_mint_params, }; - state.token_configs.push_back(coin_metadata_address, token_config); + state.token_configs.push_back(coin_metadata_object_id, token_config); event::emit(PoolRegistered { - coin_metadata_address, + coin_metadata_address: coin_metadata_object_id, token_pool_package_id, administrator: initial_administrator, token_pool_type_proof, @@ -409,15 +408,15 @@ fun register_pool_internal( public fun unregister_pool( ref: &mut CCIPObjectRef, - coin_metadata_address: address, + coin_metadata_object_id: address, ctx: &mut TxContext, ) { - unregister_pool_internal(ref, coin_metadata_address, ctx.sender()); + unregister_pool_internal(ref, coin_metadata_object_id, ctx.sender()); } fun unregister_pool_internal( ref: &mut CCIPObjectRef, - coin_metadata_address: address, + coin_metadata_object_id: address, caller: address, ) { verify_function_allowed( @@ -428,16 +427,16 @@ fun unregister_pool_internal( ); let state = state_object::borrow_mut(ref); - assert!(state.token_configs.contains(coin_metadata_address), ETokenNotRegistered); + assert!(state.token_configs.contains(coin_metadata_object_id), ETokenNotRegistered); - let token_config = state.token_configs.remove(coin_metadata_address); + let token_config = state.token_configs.remove(coin_metadata_object_id); assert!(token_config.administrator == caller, ENotAllowed); let previous_pool_address = token_config.token_pool_package_id; event::emit(PoolUnregistered { - coin_metadata_address, + coin_metadata_address: coin_metadata_object_id, previous_pool_address, }); } diff --git a/contracts/ccip/ccip/tests/token_admin_registry_tests.move b/contracts/ccip/ccip/tests/token_admin_registry_tests.move index 223625f4..6dc53b20 100644 --- a/contracts/ccip/ccip/tests/token_admin_registry_tests.move +++ b/contracts/ccip/ccip/tests/token_admin_registry_tests.move @@ -69,8 +69,8 @@ fun initialize_state_and_registry(scenario: &mut Scenario, admin: address) { fun create_test_token( scenario: &mut Scenario, -): (coin::TreasuryCap, coin::CoinMetadata) { - coin::create_currency( +): (coin::TreasuryCap, address) { + let (treasury_cap, coin_metadata) = coin::create_currency( TOKEN_ADMIN_REGISTRY_TESTS {}, DECIMALS, b"TEST", @@ -78,19 +78,23 @@ fun create_test_token( b"test_token", option::none(), scenario.ctx(), - ) + ); + + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); + transfer::public_freeze_object(coin_metadata); + (treasury_cap, coin_metadata_address) } fun register_test_pool( ref: &mut CCIPObjectRef, treasury_cap: &coin::TreasuryCap, - coin_metadata: &coin::CoinMetadata, + coin_metadata_object_id: address, admin: address, ) { registry::register_pool( ref, treasury_cap, - coin_metadata, + coin_metadata_object_id, admin, vector
[], // lock_or_burn_params vector
[], // release_or_mint_params @@ -174,8 +178,7 @@ public fun test_type_and_version() { #[test] public fun test_get_pool() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -184,19 +187,19 @@ public fun test_get_pool() { let mut ref = scenario.take_shared(); // Test with unregistered token - let pool_address = registry::get_pool(&ref, local_token); + let pool_address = registry::get_pool(&ref, coin_metadata_object_id); assert!(pool_address == @0x0); // Register token register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); // Test with registered token - let pool_address = registry::get_pool(&ref, local_token); + let pool_address = registry::get_pool(&ref, coin_metadata_object_id); let tn = type_name::with_defining_ids(); let expected_package_id = address::from_ascii_bytes(&tn.address_string().into_bytes()); assert!(pool_address == expected_package_id); @@ -206,7 +209,7 @@ public fun test_get_pool() { ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); + // transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -251,8 +254,7 @@ public fun test_register_pool_by_admin() { #[test] public fun test_register_and_unregister() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -263,17 +265,17 @@ public fun test_register_and_unregister() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS_2, ); // Verify registration - let pool_addresses = registry::get_pools(&ref, vector[local_token]); + let pool_addresses = registry::get_pools(&ref, vector[coin_metadata_object_id]); assert!(pool_addresses.length() == 1); let tn = type_name::with_defining_ids(); let expected_package_id = address::from_ascii_bytes(&tn.address_string().into_bytes()); assert!(pool_addresses[0] == expected_package_id); - assert!(registry::is_administrator(&ref, local_token, TOKEN_ADMIN_ADDRESS_2)); + assert!(registry::is_administrator(&ref, coin_metadata_object_id, TOKEN_ADMIN_ADDRESS_2)); let ctx = scenario.ctx(); transfer::public_transfer(treasury_cap, ctx.sender()); @@ -285,21 +287,19 @@ public fun test_register_and_unregister() { { let mut ref = scenario.take_shared(); - registry::unregister_pool(&mut ref, local_token, scenario.ctx()); - assert_empty_token_config(&ref, local_token); + registry::unregister_pool(&mut ref, coin_metadata_object_id, scenario.ctx()); + assert_empty_token_config(&ref, coin_metadata_object_id); ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } #[test] public fun test_register_and_set_pool() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -310,23 +310,23 @@ public fun test_register_and_set_pool() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); // Verify initial registration - let pool_addresses = registry::get_pools(&ref, vector[local_token]); + let pool_addresses = registry::get_pools(&ref, vector[coin_metadata_object_id]); assert!(pool_addresses.length() == 1); let tn = type_name::with_defining_ids(); let expected_package_id = address::from_ascii_bytes(&tn.address_string().into_bytes()); let expected_module = tn.module_string().into_bytes().to_string(); assert!(pool_addresses[0] == expected_package_id); - assert!(registry::is_administrator(&ref, local_token, TOKEN_ADMIN_ADDRESS)); + assert!(registry::is_administrator(&ref, coin_metadata_object_id, TOKEN_ADMIN_ADDRESS)); // Verify detailed configuration assert_token_config( &ref, - local_token, + coin_metadata_object_id, expected_package_id, expected_module.into_bytes(), type_name::with_defining_ids().into_string(), @@ -336,7 +336,7 @@ public fun test_register_and_set_pool() { let (_, _, token_type, _, _, type_proof, _, _) = registry::get_token_config_data( &ref, - local_token, + coin_metadata_object_id, ); assert!( token_type == ascii::string(b"0000000000000000000000000000000000000000000000000000000000001000::token_admin_registry_tests::TOKEN_ADMIN_REGISTRY_TESTS"), @@ -348,7 +348,7 @@ public fun test_register_and_set_pool() { // Update pool configuration registry::set_pool( &mut ref, - local_token, + coin_metadata_object_id, vector
[], // lock_or_burn_params vector
[], // release_or_mint_params TypeProof2 {}, @@ -356,7 +356,12 @@ public fun test_register_and_set_pool() { ); // Request admin transfer - registry::transfer_admin_role(&mut ref, local_token, TOKEN_ADMIN_ADDRESS_2, ctx); + registry::transfer_admin_role( + &mut ref, + coin_metadata_object_id, + TOKEN_ADMIN_ADDRESS_2, + ctx, + ); transfer::public_transfer(treasury_cap, ctx.sender()); ts::return_shared(ref); @@ -374,7 +379,7 @@ public fun test_register_and_set_pool() { // Verify configuration remains unchanged (same package ID means no update) assert_token_config( &ref, - local_token, + coin_metadata_object_id, expected_package_id, expected_module.into_bytes(), type_name::with_defining_ids().into_string(), @@ -384,7 +389,7 @@ public fun test_register_and_set_pool() { let (_, _, token_type, _, _, type_proof, _, _) = registry::get_token_config_data( &ref, - local_token, + coin_metadata_object_id, ); assert!( token_type == ascii::string(b"0000000000000000000000000000000000000000000000000000000000001000::token_admin_registry_tests::TOKEN_ADMIN_REGISTRY_TESTS"), @@ -393,13 +398,12 @@ public fun test_register_and_set_pool() { assert!(type_proof == type_name::into_string(type_name::with_defining_ids())); // Accept admin role - registry::accept_admin_role(&mut ref, local_token, scenario.ctx()); - assert!(registry::is_administrator(&ref, local_token, TOKEN_ADMIN_ADDRESS_2)); + registry::accept_admin_role(&mut ref, coin_metadata_object_id, scenario.ctx()); + assert!(registry::is_administrator(&ref, coin_metadata_object_id, TOKEN_ADMIN_ADDRESS_2)); ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -542,8 +546,7 @@ public fun test_get_all_configured_tokens_pagination() { #[test] public fun test_set_pool_comprehensive() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -555,7 +558,7 @@ public fun test_set_pool_comprehensive() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -566,7 +569,7 @@ public fun test_set_pool_comprehensive() { // Verify initial configuration assert_token_config( &ref, - local_token, + coin_metadata_object_id, expected_package_id, expected_module.into_bytes(), type_name::with_defining_ids().into_string(), @@ -576,7 +579,7 @@ public fun test_set_pool_comprehensive() { let (_, _, _, _, _, type_proof, _, _) = registry::get_token_config_data( &ref, - local_token, + coin_metadata_object_id, ); assert!(type_proof == type_name::into_string(type_name::with_defining_ids())); @@ -585,7 +588,7 @@ public fun test_set_pool_comprehensive() { // Test set_pool with different package ID (should update) registry::set_pool( &mut ref, - local_token, + coin_metadata_object_id, vector
[], // lock_or_burn_params vector
[], // release_or_mint_params TypeProof2 {}, @@ -600,7 +603,7 @@ public fun test_set_pool_comprehensive() { // Verify pool was NOT updated (same package ID means no change) assert_token_config( &ref, - local_token, + coin_metadata_object_id, expected_package_id, expected_module.into_bytes(), type_name::with_defining_ids().into_string(), @@ -610,7 +613,7 @@ public fun test_set_pool_comprehensive() { let (_, _, _, _, _, updated_type_proof, _, _) = registry::get_token_config_data( &ref, - local_token, + coin_metadata_object_id, ); // Since TypeProof and TypeProof2 have the same package ID, the type proof should remain as TypeProof assert!( @@ -620,7 +623,7 @@ public fun test_set_pool_comprehensive() { // Test set_pool with same package ID (should not trigger update) registry::set_pool( &mut ref, - local_token, + coin_metadata_object_id, vector
[], // lock_or_burn_params vector
[], // release_or_mint_params TypeProof {}, @@ -630,7 +633,7 @@ public fun test_set_pool_comprehensive() { // Verify pool was NOT updated (same package ID means no change) assert_token_config( &ref, - local_token, + coin_metadata_object_id, expected_package_id, // unchanged from TypeProof expected_module.into_bytes(), // unchanged from TypeProof type_name::with_defining_ids().into_string(), @@ -640,7 +643,7 @@ public fun test_set_pool_comprehensive() { let (_, _, _, _, _, final_type_proof, _, _) = registry::get_token_config_data( &ref, - local_token, + coin_metadata_object_id, ); assert!( final_type_proof == type_name::into_string(type_name::with_defining_ids()), @@ -650,7 +653,6 @@ public fun test_set_pool_comprehensive() { ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -678,8 +680,7 @@ public fun test_transfer_admin_role_not_registered() { #[expected_failure(abort_code = registry::ENotAllowed)] public fun test_register_and_unregister_as_non_admin() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -690,7 +691,7 @@ public fun test_register_and_unregister_as_non_admin() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS_2, ); @@ -703,12 +704,11 @@ public fun test_register_and_unregister_as_non_admin() { { let mut ref = scenario.take_shared(); - registry::unregister_pool(&mut ref, local_token, scenario.ctx()); + registry::unregister_pool(&mut ref, coin_metadata_object_id, scenario.ctx()); ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -770,8 +770,7 @@ public fun test_set_pool_unregistered_token() { #[expected_failure(abort_code = registry::ENotAllowed)] public fun test_set_pool_unauthorized() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -783,7 +782,7 @@ public fun test_set_pool_unauthorized() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS_2, ); @@ -801,7 +800,7 @@ public fun test_set_pool_unauthorized() { // Should fail - RANDOM_USER is not the administrator or owner registry::set_pool( &mut ref, - local_token, + coin_metadata_object_id, vector
[], // lock_or_burn_params vector
[], // release_or_mint_params TypeProof2 {}, @@ -811,7 +810,6 @@ public fun test_set_pool_unauthorized() { ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -842,7 +840,7 @@ public fun test_initialize_already_initialized() { #[expected_failure(abort_code = registry::ETokenAlreadyRegistered)] public fun test_register_pool_already_registered() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -854,7 +852,7 @@ public fun test_register_pool_already_registered() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -862,7 +860,7 @@ public fun test_register_pool_already_registered() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -871,7 +869,6 @@ public fun test_register_pool_already_registered() { ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -879,8 +876,7 @@ public fun test_register_pool_already_registered() { #[expected_failure(abort_code = registry::ENotAdministrator)] public fun test_transfer_admin_role_not_administrator() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -892,7 +888,7 @@ public fun test_transfer_admin_role_not_administrator() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -907,12 +903,16 @@ public fun test_transfer_admin_role_not_administrator() { let mut ref = scenario.take_shared(); // This should fail because RANDOM_USER is not the administrator - registry::transfer_admin_role(&mut ref, local_token, TOKEN_ADMIN_ADDRESS_2, scenario.ctx()); + registry::transfer_admin_role( + &mut ref, + coin_metadata_object_id, + TOKEN_ADMIN_ADDRESS_2, + scenario.ctx(), + ); ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -920,8 +920,7 @@ public fun test_transfer_admin_role_not_administrator() { #[expected_failure(abort_code = registry::ENotPendingAdministrator)] public fun test_accept_admin_role_not_pending() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -933,12 +932,17 @@ public fun test_accept_admin_role_not_pending() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); // Request admin transfer to TOKEN_ADMIN_ADDRESS_2 - registry::transfer_admin_role(&mut ref, local_token, TOKEN_ADMIN_ADDRESS_2, scenario.ctx()); + registry::transfer_admin_role( + &mut ref, + coin_metadata_object_id, + TOKEN_ADMIN_ADDRESS_2, + scenario.ctx(), + ); let ctx = scenario.ctx(); transfer::public_transfer(treasury_cap, ctx.sender()); @@ -952,12 +956,11 @@ public fun test_accept_admin_role_not_pending() { // This should fail because RANDOM_USER is not the pending administrator // (TOKEN_ADMIN_ADDRESS_2 is the pending admin, not RANDOM_USER) - registry::accept_admin_role(&mut ref, local_token, scenario.ctx()); + registry::accept_admin_role(&mut ref, coin_metadata_object_id, scenario.ctx()); ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -965,8 +968,7 @@ public fun test_accept_admin_role_not_pending() { #[expected_failure(abort_code = registry::ENotPendingAdministrator)] public fun test_accept_admin_role_no_pending_transfer() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -978,7 +980,7 @@ public fun test_accept_admin_role_no_pending_transfer() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -996,12 +998,11 @@ public fun test_accept_admin_role_no_pending_transfer() { // This should fail because no admin transfer was requested // (pending_administrator is @0x0) - registry::accept_admin_role(&mut ref, local_token, scenario.ctx()); + registry::accept_admin_role(&mut ref, coin_metadata_object_id, scenario.ctx()); ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -1010,8 +1011,7 @@ public fun test_accept_admin_role_no_pending_transfer() { #[test] public fun test_mcms_transfer_admin_role() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_address(&coin_metadata); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); let mcms = mcms_registry::get_multisig_address(); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -1034,7 +1034,7 @@ public fun test_mcms_transfer_admin_role() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -1049,25 +1049,23 @@ public fun test_mcms_transfer_admin_role() { let mut ref = scenario.take_shared(); let registry = scenario.take_shared(); - registry::transfer_admin_role(&mut ref, local_token, mcms, scenario.ctx()); + registry::transfer_admin_role(&mut ref, coin_metadata_object_id, mcms, scenario.ctx()); // Verify pending transfer is set but admin hasn't changed yet (still TOKEN_ADMIN_ADDRESS) - assert!(registry::is_administrator(&ref, local_token, TOKEN_ADMIN_ADDRESS)); - assert!(!registry::is_administrator(&ref, local_token, mcms)); + assert!(registry::is_administrator(&ref, coin_metadata_object_id, TOKEN_ADMIN_ADDRESS)); + assert!(!registry::is_administrator(&ref, coin_metadata_object_id, mcms)); ts::return_shared(ref); ts::return_shared(registry); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } #[test] public fun test_mcms_accept_admin_role() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_address(&coin_metadata); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); let mcms = mcms_registry::get_multisig_address(); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -1090,12 +1088,12 @@ public fun test_mcms_accept_admin_role() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); // set pending transfer to MCMS - registry::transfer_admin_role(&mut ref, local_token, mcms, scenario.ctx()); + registry::transfer_admin_role(&mut ref, coin_metadata_object_id, mcms, scenario.ctx()); let ctx = scenario.ctx(); transfer::public_transfer(treasury_cap, ctx.sender()); @@ -1111,7 +1109,7 @@ public fun test_mcms_accept_admin_role() { // Create MCMS callback params for accept (need to include object addresses first) let mut data = vector::empty(); data.append(bcs::to_bytes(&object::id_address(&ref))); - data.append(bcs::to_bytes(&local_token)); + data.append(bcs::to_bytes(&coin_metadata_object_id)); let params = mcms_registry::test_create_executing_callback_params( @ccip, @@ -1127,22 +1125,20 @@ public fun test_mcms_accept_admin_role() { registry::mcms_accept_admin_role(&mut ref, &mut registry, params, scenario.ctx()); // Verify admin has changed and no pending transfer (TOKEN_ADMIN_ADDRESS_2 is now the admin) - assert!(!registry::is_administrator(&ref, local_token, TOKEN_ADMIN_ADDRESS)); - assert!(registry::is_administrator(&ref, local_token, mcms)); + assert!(!registry::is_administrator(&ref, coin_metadata_object_id, TOKEN_ADMIN_ADDRESS)); + assert!(registry::is_administrator(&ref, coin_metadata_object_id, mcms)); ts::return_shared(ref); ts::return_shared(registry); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } #[test] public fun test_mcms_full_admin_transfer_flow() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_address(&coin_metadata); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); let mcms = mcms_registry::get_multisig_address(); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -1165,7 +1161,7 @@ public fun test_mcms_full_admin_transfer_flow() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -1179,11 +1175,11 @@ public fun test_mcms_full_admin_transfer_flow() { { let mut ref = scenario.take_shared(); let registry = scenario.take_shared(); - registry::transfer_admin_role(&mut ref, local_token, mcms, scenario.ctx()); + registry::transfer_admin_role(&mut ref, coin_metadata_object_id, mcms, scenario.ctx()); // Verify pending state (TOKEN_ADMIN_ADDRESS is still the admin) - assert!(registry::is_administrator(&ref, local_token, TOKEN_ADMIN_ADDRESS)); - assert!(!registry::is_administrator(&ref, local_token, mcms)); + assert!(registry::is_administrator(&ref, coin_metadata_object_id, TOKEN_ADMIN_ADDRESS)); + assert!(!registry::is_administrator(&ref, coin_metadata_object_id, mcms)); ts::return_shared(ref); ts::return_shared(registry); @@ -1197,7 +1193,7 @@ public fun test_mcms_full_admin_transfer_flow() { let mut data = vector::empty(); data.append(bcs::to_bytes(&object::id_address(&ref))); - data.append(bcs::to_bytes(&local_token)); + data.append(bcs::to_bytes(&coin_metadata_object_id)); let params = mcms_registry::test_create_executing_callback_params( @ccip, @@ -1212,14 +1208,13 @@ public fun test_mcms_full_admin_transfer_flow() { registry::mcms_accept_admin_role(&mut ref, &mut registry, params, scenario.ctx()); // Verify final state - assert!(!registry::is_administrator(&ref, local_token, TOKEN_ADMIN_ADDRESS)); - assert!(registry::is_administrator(&ref, local_token, mcms)); + assert!(!registry::is_administrator(&ref, coin_metadata_object_id, TOKEN_ADMIN_ADDRESS)); + assert!(registry::is_administrator(&ref, coin_metadata_object_id, mcms)); ts::return_shared(ref); ts::return_shared(registry); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -1227,8 +1222,7 @@ public fun test_mcms_full_admin_transfer_flow() { #[expected_failure(abort_code = registry::ENotPendingAdministrator)] public fun test_mcms_accept_admin_role_no_pending_transfer_fails() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_address(&coin_metadata); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); scenario.next_tx(CCIP_ADMIN); @@ -1248,7 +1242,7 @@ public fun test_mcms_accept_admin_role_no_pending_transfer_fails() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -1265,7 +1259,7 @@ public fun test_mcms_accept_admin_role_no_pending_transfer_fails() { let mut data = vector::empty(); data.append(bcs::to_bytes(&object::id_address(&ref))); - data.append(bcs::to_bytes(&local_token)); + data.append(bcs::to_bytes(&coin_metadata_object_id)); let params = mcms_registry::test_create_executing_callback_params( @ccip, @@ -1283,7 +1277,6 @@ public fun test_mcms_accept_admin_role_no_pending_transfer_fails() { ts::return_shared(registry); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -1342,7 +1335,7 @@ public fun test_mcms_transfer_admin_role_token_not_registered_fails() { #[expected_failure(abort_code = upgrade_registry::EFunctionNotAllowed)] public fun test_register_pool_function_not_allowed() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -1374,7 +1367,7 @@ public fun test_register_pool_function_not_allowed() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -1383,7 +1376,6 @@ public fun test_register_pool_function_not_allowed() { ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } @@ -1391,8 +1383,7 @@ public fun test_register_pool_function_not_allowed() { #[expected_failure(abort_code = upgrade_registry::EFunctionNotAllowed)] public fun test_set_pool_function_not_allowed() { let mut scenario = create_test_scenario(TOKEN_ADMIN_ADDRESS); - let (treasury_cap, coin_metadata) = create_test_token(&mut scenario); - let local_token = object::id_to_address(&object::id(&coin_metadata)); + let (treasury_cap, coin_metadata_object_id) = create_test_token(&mut scenario); initialize_state_and_registry(&mut scenario, CCIP_ADMIN); @@ -1404,7 +1395,7 @@ public fun test_set_pool_function_not_allowed() { register_test_pool( &mut ref, &treasury_cap, - &coin_metadata, + coin_metadata_object_id, TOKEN_ADMIN_ADDRESS, ); @@ -1441,7 +1432,7 @@ public fun test_set_pool_function_not_allowed() { // This should fail because the function is blocked by upgrade registry registry::set_pool( &mut ref, - local_token, + coin_metadata_object_id, vector
[], // lock_or_burn_params vector
[], // release_or_mint_params TypeProof2 {}, @@ -1451,6 +1442,5 @@ public fun test_set_pool_function_not_allowed() { ts::return_shared(ref); }; - transfer::public_freeze_object(coin_metadata); ts::end(scenario); } diff --git a/contracts/ccip/ccip_onramp/sources/onramp.move b/contracts/ccip/ccip_onramp/sources/onramp.move index a53eb29e..332226c2 100644 --- a/contracts/ccip/ccip_onramp/sources/onramp.move +++ b/contracts/ccip/ccip_onramp/sources/onramp.move @@ -346,7 +346,7 @@ fun apply_dest_chain_config_updates_internal( }; } -public fun get_fee( +public fun get_fee( ref: &CCIPObjectRef, clock: &Clock, dest_chain_selector: u64, @@ -354,7 +354,7 @@ public fun get_fee( data: vector, token_addresses: vector
, // the token's coin metadata object ids token_amounts: vector, - fee_token: &CoinMetadata, + fee_token_coin_metadata_object_id: address, extra_args: vector, ): u64 { verify_function_allowed( @@ -371,7 +371,7 @@ public fun get_fee( data, token_addresses, token_amounts, - object::id_to_address(object::borrow_id(fee_token)), + fee_token_coin_metadata_object_id, extra_args, ) } @@ -384,7 +384,7 @@ fun get_fee_internal( data: vector, token_addresses: vector
, // the token's coin metadata object ids token_amounts: vector, - fee_token: address, + fee_token_coin_metadata_object_id: address, extra_args: vector, ): u64 { assert!(!rmn_remote::is_cursed_u128(ref, dest_chain_selector as u128), ECursedByRmn); @@ -396,7 +396,7 @@ fun get_fee_internal( data, token_addresses, token_amounts, - fee_token, + fee_token_coin_metadata_object_id, extra_args, ) } @@ -772,7 +772,7 @@ public fun ccip_send( receiver: vector, data: vector, token_params: TokenTransferParams, - fee_token_metadata: &CoinMetadata, + fee_token_coin_metadata_object_id: address, fee_token: &mut Coin, extra_args: vector, ctx: &mut TxContext, @@ -783,8 +783,6 @@ public fun ccip_send( string::utf8(b"ccip_send"), VERSION, ); - // get_fee_internal will check curse status - let fee_token_metadata_addr = object::id_to_address(object::borrow_id(fee_token_metadata)); let mut token_amounts = vector[]; let mut source_tokens = vector[]; @@ -828,7 +826,7 @@ public fun ccip_send( data, source_tokens, token_amounts, - fee_token_metadata_addr, + fee_token_coin_metadata_object_id, extra_args, ); @@ -837,14 +835,14 @@ public fun ccip_send( assert!(fee_token_amount <= fee_token_balance, EUnexpectedWithdrawAmount); let paid = coin::split(fee_token, fee_token_amount, ctx); - if (state.fee_tokens.contains(fee_token_metadata_addr)) { + if (state.fee_tokens.contains(fee_token_coin_metadata_object_id)) { let coins: &mut Coin = bag::borrow_mut( &mut state.fee_tokens, - fee_token_metadata_addr, + fee_token_coin_metadata_object_id, ); coins.join(paid); } else { - state.fee_tokens.add(fee_token_metadata_addr, paid); + state.fee_tokens.add(fee_token_coin_metadata_object_id, paid); }; // if overpaying, onramp will only take out the amount it needs, leaving the fee token object with the remaining balance }; @@ -863,7 +861,7 @@ public fun ccip_send( ) = fee_quoter::process_message_args( ref, dest_chain_selector, - fee_token_metadata_addr, + fee_token_coin_metadata_object_id, fee_token_amount, extra_args, source_tokens, @@ -886,7 +884,7 @@ public fun ccip_send( data, receiver, converted_extra_args, - fee_token_metadata_addr, + fee_token_coin_metadata_object_id, fee_token_amount, fee_value_juels, token_transfers, @@ -926,7 +924,7 @@ fun construct_message( data: vector, receiver: vector, converted_extra_args: vector, - fee_token_metadata: address, + fee_token_coin_metadata_object_id: address, fee_token_amount: u64, fee_value_juels: u256, token_transfers: vector, @@ -959,7 +957,7 @@ fun construct_message( data, receiver, extra_args: converted_extra_args, - fee_token: fee_token_metadata, + fee_token: fee_token_coin_metadata_object_id, fee_token_amount, fee_value_juels, token_amounts: token_transfers, diff --git a/contracts/ccip/ccip_onramp/tests/onramp_test.move b/contracts/ccip/ccip_onramp/tests/onramp_test.move index fafb915a..56d8fad2 100644 --- a/contracts/ccip/ccip_onramp/tests/onramp_test.move +++ b/contracts/ccip/ccip_onramp/tests/onramp_test.move @@ -693,6 +693,9 @@ public fun test_get_fee_unconfigured_destination() { let ctx = env.scenario.ctx(); let (treasury_cap, coin_metadata) = create_test_token(ctx); + // Get coin metadata address + let coin_metadata_addr = object::id_to_address(object::borrow_id(&coin_metadata)); + // Test get_fee function with basic parameters // This should fail because destination chain is not configured in fee quoter let _fee = onramp::get_fee( @@ -703,7 +706,7 @@ public fun test_get_fee_unconfigured_destination() { b"test_data", // data vector[], // token_addresses (empty for no tokens) vector[], // token_amounts (empty for no tokens) - &coin_metadata, + coin_metadata_addr, b"extra_args", ); @@ -757,7 +760,7 @@ public fun test_get_fee_success() { b"test_data", vector[], // token_addresses (empty for no tokens) vector[], // token_amounts (empty for no tokens) - &coin_metadata, + coin_metadata_addr, b"", // empty extra_args will use defaults ); @@ -833,7 +836,7 @@ public fun test_get_fee_success_svm() { b"test_data", vector[], // token_addresses (empty for no tokens) vector[], // token_amounts (empty for no tokens) - &coin_metadata, + coin_metadata_addr, svm_extra_args, ); @@ -932,6 +935,7 @@ public fun test_error_sender_not_allowed() { env.scenario.next_tx(OWNER); let ctx = env.scenario.ctx(); let (mut treasury_cap, coin_metadata) = create_test_token(ctx); + let coin_metadata_addr = object::id_to_address(object::borrow_id(&coin_metadata)); let mut test_coin = coin::mint(&mut treasury_cap, 1000, ctx); // Switch to unauthorized sender @@ -953,7 +957,7 @@ public fun test_error_sender_not_allowed() { EVM_RECEIVER_ADDRESS, b"data", token_params, - &coin_metadata, + coin_metadata_addr, &mut test_coin, b"extra_args", env.scenario.ctx(), diff --git a/contracts/ccip/ccip_token_pools/burn_mint_token_pool/sources/burn_mint_token_pool.move b/contracts/ccip/ccip_token_pools/burn_mint_token_pool/sources/burn_mint_token_pool.move index 737c398d..0d213d85 100644 --- a/contracts/ccip/ccip_token_pools/burn_mint_token_pool/sources/burn_mint_token_pool.move +++ b/contracts/ccip/ccip_token_pools/burn_mint_token_pool/sources/burn_mint_token_pool.move @@ -18,7 +18,7 @@ use std::string::{Self, String}; use std::type_name::{Self, TypeName}; use sui::address; use sui::clock::Clock; -use sui::coin::{Self, Coin, CoinMetadata, TreasuryCap}; +use sui::coin::{Self, Coin, TreasuryCap}; use sui::package::UpgradeCap; public struct BurnMintTokenPoolState has key { @@ -45,21 +45,23 @@ public fun type_and_version(): String { // coin metadata and decimals can be provided in Move.toml public fun initialize( ref: &mut CCIPObjectRef, - coin_metadata: &CoinMetadata, + coin_metadata_object_id: address, treasury_cap: TreasuryCap, token_pool_administrator: address, + decimals: u8, ctx: &mut TxContext, ) { - let (_, _, _, burn_mint_token_pool) = initialize_internal( - coin_metadata, + let (_, _, burn_mint_token_pool) = initialize_internal( + coin_metadata_object_id, treasury_cap, + decimals, ctx, ); token_admin_registry::register_pool( ref, &burn_mint_token_pool.treasury_cap, - coin_metadata, + coin_metadata_object_id, token_pool_administrator, vector[CLOCK_ADDRESS, object::uid_to_address(&burn_mint_token_pool.id)], vector[CLOCK_ADDRESS, object::uid_to_address(&burn_mint_token_pool.id)], @@ -72,17 +74,18 @@ public fun initialize( public fun initialize_by_ccip_admin( ref: &mut CCIPObjectRef, ccip_admin_proof: state_object::CCIPAdminProof, - coin_metadata: &CoinMetadata, + coin_metadata_object_id: address, treasury_cap: TreasuryCap, token_pool_administrator: address, + decimals: u8, ctx: &mut TxContext, ) { - let ( - coin_metadata_address, - type_proof_type_name, - token_type, - burn_mint_token_pool, - ) = initialize_internal(coin_metadata, treasury_cap, ctx); + let (type_proof_type_name, token_type, burn_mint_token_pool) = initialize_internal( + coin_metadata_object_id, + treasury_cap, + decimals, + ctx, + ); let type_proof_type_name_address = type_proof_type_name.address_string(); let burn_mint_token_pool_package_id = address::from_ascii_bytes( @@ -92,7 +95,7 @@ public fun initialize_by_ccip_admin( token_admin_registry::register_pool_by_admin( ref, ccip_admin_proof, - coin_metadata_address, + coin_metadata_object_id, burn_mint_token_pool_package_id, string::utf8(b"burn_mint_token_pool"), token_type.into_string(), @@ -108,18 +111,18 @@ public fun initialize_by_ccip_admin( #[allow(lint(self_transfer))] fun initialize_internal( - coin_metadata: &CoinMetadata, + coin_metadata_object_id: address, treasury_cap: TreasuryCap, + decimals: u8, ctx: &mut TxContext, -): (address, TypeName, TypeName, BurnMintTokenPoolState) { - let coin_metadata_address: address = object::id_to_address(&object::id(coin_metadata)); +): (TypeName, TypeName, BurnMintTokenPoolState) { let (ownable_state, owner_cap) = ownable::new(ctx); let burn_mint_token_pool = BurnMintTokenPoolState { id: object::new(ctx), token_pool_state: token_pool::initialize( - coin_metadata_address, - coin_metadata.get_decimals(), + coin_metadata_object_id, + decimals, vector[], ctx, ), @@ -131,7 +134,7 @@ fun initialize_internal( transfer::public_transfer(owner_cap, ctx.sender()); - (coin_metadata_address, type_proof_type_name, token_type, burn_mint_token_pool) + (type_proof_type_name, token_type, burn_mint_token_pool) } // ================================================================ diff --git a/contracts/ccip/ccip_token_pools/burn_mint_token_pool/tests/burn_mint_token_pool_ownable_test.move b/contracts/ccip/ccip_token_pools/burn_mint_token_pool/tests/burn_mint_token_pool_ownable_test.move index 84bdec41..3bcdc54b 100644 --- a/contracts/ccip/ccip_token_pools/burn_mint_token_pool/tests/burn_mint_token_pool_ownable_test.move +++ b/contracts/ccip/ccip_token_pools/burn_mint_token_pool/tests/burn_mint_token_pool_ownable_test.move @@ -49,13 +49,15 @@ fun setup(): (TestEnv, OwnerCap) { option::none(), scenario.ctx(), ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, scenario.ctx(), ); 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 22e37ba9..ebe94cfa 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 @@ -78,14 +78,16 @@ public fun test_initialize_and_basic_functionality() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); // Initialize burn mint token pool burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, // token_pool_administrator + Decimals, ctx, ); @@ -143,13 +145,15 @@ public fun test_chain_configuration_management() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -259,13 +263,15 @@ public fun test_allowlist_management() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -317,13 +323,15 @@ public fun test_rate_limiter_configuration() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -420,13 +428,15 @@ public fun test_invalid_arguments_rate_limiter_configs() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -484,13 +494,15 @@ public fun test_comprehensive_allowlist_operations() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -545,13 +557,15 @@ public fun test_destroy_token_pool() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -601,13 +615,15 @@ public fun test_comprehensive_rate_limiter_operations() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -703,13 +719,15 @@ public fun test_edge_cases_and_boundary_conditions() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -837,6 +855,7 @@ public fun test_lock_or_burn_comprehensive() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); // Mint some tokens for testing before initializing the pool let test_coin = coin::mint(&mut treasury_cap, 1000, ctx); // Small amount to stay within rate limiter @@ -845,9 +864,10 @@ public fun test_lock_or_burn_comprehensive() { burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, // treasury_cap is moved here @0x123, + Decimals, ctx, ); @@ -985,15 +1005,15 @@ public fun test_release_or_mint_comprehensive() { option::none(), ctx, ); - let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -1129,13 +1149,15 @@ public fun test_set_allowlist_enabled() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -1193,13 +1215,15 @@ public fun test_apply_allowlist_updates() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); @@ -1294,13 +1318,15 @@ public fun test_allowlist_enabled_and_updates_comprehensive() { option::none(), ctx, ); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); burn_mint_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, treasury_cap, @0x123, + Decimals, ctx, ); diff --git a/contracts/ccip/ccip_token_pools/lock_release_token_pool/sources/lock_release_token_pool.move b/contracts/ccip/ccip_token_pools/lock_release_token_pool/sources/lock_release_token_pool.move index bbbc6f58..0fef730c 100644 --- a/contracts/ccip/ccip_token_pools/lock_release_token_pool/sources/lock_release_token_pool.move +++ b/contracts/ccip/ccip_token_pools/lock_release_token_pool/sources/lock_release_token_pool.move @@ -51,7 +51,12 @@ public fun initialize( rebalancer: address, ctx: &mut TxContext, ) { - let (_, lock_release_token_pool_state_address, _, _) = initialize_internal( + let ( + coin_metadata_object_id, + lock_release_token_pool_state_address, + _, + _, + ) = initialize_internal( coin_metadata, rebalancer, ctx, @@ -60,7 +65,7 @@ public fun initialize( token_admin_registry::register_pool( ref, treasury_cap, - coin_metadata, + coin_metadata_object_id, token_pool_administrator, vector[CLOCK_ADDRESS, lock_release_token_pool_state_address], vector[CLOCK_ADDRESS, lock_release_token_pool_state_address], @@ -80,7 +85,7 @@ public fun initialize_by_ccip_admin( ctx: &mut TxContext, ) { let ( - coin_metadata_address, + coin_metadata_object_id, lock_release_token_pool_state_address, token_type, type_proof_type_name, @@ -94,7 +99,7 @@ public fun initialize_by_ccip_admin( token_admin_registry::register_pool_by_admin( ref, ccip_admin_proof, - coin_metadata_address, + coin_metadata_object_id, lock_release_token_pool_package_id, string::utf8(b"lock_release_token_pool"), token_type.into_string(), diff --git a/contracts/ccip/ccip_token_pools/managed_token_pool/sources/managed_token_pool.move b/contracts/ccip/ccip_token_pools/managed_token_pool/sources/managed_token_pool.move index d45b5e47..716f0b92 100644 --- a/contracts/ccip/ccip_token_pools/managed_token_pool/sources/managed_token_pool.move +++ b/contracts/ccip/ccip_token_pools/managed_token_pool/sources/managed_token_pool.move @@ -19,7 +19,7 @@ use std::string::{Self, String}; use std::type_name::{Self, TypeName}; use sui::address; use sui::clock::Clock; -use sui::coin::{Coin, CoinMetadata}; +use sui::coin::Coin; use sui::deny_list::DenyList; use sui::package::UpgradeCap; @@ -55,18 +55,20 @@ public fun initialize_with_managed_token( ref: &mut CCIPObjectRef, managed_token_state: &TokenState, owner_cap: &ManagedTokenOwnerCap, - coin_metadata: &CoinMetadata, + coin_metadata_object_id: address, mint_cap: MintCap, token_pool_administrator: address, + decimals: u8, ctx: &mut TxContext, ) { // Get treasury cap reference for registration let treasury_cap_ref = managed_token::borrow_treasury_cap(managed_token_state, owner_cap); // Initialize the token pool - let (_, managed_token_pool_state_address, _, _) = initialize_internal( - coin_metadata, + let (managed_token_pool_state_address, _, _) = initialize_internal( + coin_metadata_object_id, mint_cap, + decimals, ctx, ); @@ -74,7 +76,7 @@ public fun initialize_with_managed_token( token_admin_registry::register_pool( ref, treasury_cap_ref, - coin_metadata, + coin_metadata_object_id, token_pool_administrator, vector[ CLOCK_ADDRESS, @@ -95,18 +97,19 @@ public fun initialize_with_managed_token( public fun initialize_by_ccip_admin( ref: &mut CCIPObjectRef, ccip_admin_proof: state_object::CCIPAdminProof, - coin_metadata: &CoinMetadata, + coin_metadata_object_id: address, mint_cap: MintCap, managed_token_state: address, token_pool_administrator: address, + decimals: u8, ctx: &mut TxContext, ) { - let ( - coin_metadata_address, - managed_token_pool_state_address, - token_type, - type_proof_type_name, - ) = initialize_internal(coin_metadata, mint_cap, ctx); + let (managed_token_pool_state_address, token_type, type_proof_type_name) = initialize_internal( + coin_metadata_object_id, + mint_cap, + decimals, + ctx, + ); let type_proof_type_name_address = type_proof_type_name.address_string(); let managed_token_pool_package_id = address::from_ascii_bytes( @@ -116,7 +119,7 @@ public fun initialize_by_ccip_admin( token_admin_registry::register_pool_by_admin( ref, ccip_admin_proof, - coin_metadata_address, + coin_metadata_object_id, managed_token_pool_package_id, string::utf8(b"managed_token_pool"), token_type.into_string(), @@ -140,18 +143,18 @@ public fun initialize_by_ccip_admin( #[allow(lint(self_transfer))] fun initialize_internal( - coin_metadata: &CoinMetadata, + coin_metadata_object_id: address, mint_cap: MintCap, + decimals: u8, ctx: &mut TxContext, -): (address, address, TypeName, TypeName) { - let coin_metadata_address: address = object::id_to_address(&object::id(coin_metadata)); +): (address, TypeName, TypeName) { let (ownable_state, owner_cap) = ownable::new(ctx); let managed_token_pool = ManagedTokenPoolState { id: object::new(ctx), token_pool_state: token_pool::initialize( - coin_metadata_address, - coin_metadata.get_decimals(), + coin_metadata_object_id, + decimals, vector[], ctx, ), @@ -165,7 +168,7 @@ fun initialize_internal( transfer::share_object(managed_token_pool); transfer::public_transfer(owner_cap, ctx.sender()); - (coin_metadata_address, managed_token_pool_state_address, token_type, type_proof_type_name) + (managed_token_pool_state_address, token_type, type_proof_type_name) } public fun add_remote_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 073db714..de87eb0c 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 @@ -110,14 +110,15 @@ public fun test_initialize_and_basic_functionality() { let mint_cap = scenario.take_from_sender>(); let token_state = scenario.take_shared>(); let token_owner_cap = scenario.take_from_sender>(); - + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); managed_token_pool::initialize_with_managed_token( &mut ccip_ref, &token_state, &token_owner_cap, - &coin_metadata, + coin_metadata_address, mint_cap, @managed_token_pool, + Decimals, scenario.ctx(), ); scenario.return_to_sender(token_owner_cap); @@ -378,14 +379,15 @@ public fun test_lock_or_burn_functionality() { let mint_cap = scenario.take_from_sender>(); let token_state = scenario.take_shared>(); let token_owner_cap = scenario.take_from_sender>(); - + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); managed_token_pool::initialize_with_managed_token( &mut ccip_ref, &token_state, &token_owner_cap, - &coin_metadata, + coin_metadata_address, mint_cap, @managed_token_pool, + Decimals, scenario.ctx(), ); @@ -578,9 +580,10 @@ public fun test_release_or_mint_functionality() { &mut ccip_ref, &token_state, &token_owner_cap, - &coin_metadata, + coin_metadata_address, mint_cap, @managed_token_pool, + Decimals, scenario.ctx(), ); @@ -776,14 +779,16 @@ public fun test_initialize_by_ccip_admin() { // Switch to CCIP admin to call initialize_by_ccip_admin scenario.next_tx(CCIP_ADMIN); { + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); // Test initialize_by_ccip_admin function (doesn't require treasury cap) managed_token_pool::initialize_by_ccip_admin( &mut ccip_ref, state_object::create_ccip_admin_proof_for_test(), - &coin_metadata, + coin_metadata_address, mint_cap, managed_token_state_address, // Use the actual managed token state address @0x123, // token_pool_administrator + Decimals, scenario.ctx(), ); }; @@ -863,14 +868,15 @@ public fun test_invalid_owner_cap_error() { let mint_cap2 = scenario.take_from_sender>(); let token_state2 = scenario.take_shared>(); let token_owner_cap2 = scenario.take_from_sender>(); - + let coin_metadata_address2 = object::id_to_address(&object::id(&coin_metadata2)); managed_token_pool::initialize_with_managed_token( &mut ccip_ref2, &token_state2, &token_owner_cap2, - &coin_metadata2, + coin_metadata_address2, mint_cap2, @0x999, + Decimals, scenario.ctx(), ); @@ -1127,15 +1133,16 @@ public fun test_initialize_with_managed_token_function() { let mint_cap = scenario.take_from_sender>(); let token_state = scenario.take_shared>(); let token_owner_cap = scenario.take_from_sender>(); - + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); // Use the new function that takes managed token state and owner cap directly managed_token_pool::initialize_with_managed_token( &mut ccip_ref, &token_state, &token_owner_cap, - &coin_metadata, + coin_metadata_address, mint_cap, @managed_token_pool, // token pool administrator + Decimals, scenario.ctx(), ); @@ -1267,14 +1274,16 @@ fun setup_basic_pool( let mint_cap = scenario.take_from_sender>(); let token_state = scenario.take_shared>(); let token_owner_cap = scenario.take_from_sender>(); + let coin_metadata_address = object::id_to_address(&object::id(&coin_metadata)); managed_token_pool::initialize_with_managed_token( &mut ccip_ref, &token_state, &token_owner_cap, - &coin_metadata, + coin_metadata_address, mint_cap, @managed_token_pool, + Decimals, scenario.ctx(), ); 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 14bce34e..5d64afcd 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 @@ -19,7 +19,7 @@ use std::string::{Self, String}; use std::type_name; use sui::address; use sui::clock::Clock; -use sui::coin::{Coin, CoinMetadata}; +use sui::coin::Coin; use sui::deny_list::DenyList; use sui::event; use sui::package::UpgradeCap; @@ -62,18 +62,17 @@ public struct USDCTokenPoolState has key { ownable_state: OwnableState, } -const EInvalidCoinMetadata: u64 = 1; -const EInvalidArguments: u64 = 2; -const EInvalidOwnerCap: u64 = 4; -const EZeroChainSelector: u64 = 5; -const EEmptyAllowedCaller: u64 = 6; -const EInvalidMessageVersion: u64 = 7; -const EDomainMismatch: u64 = 8; -const ENonceMismatch: u64 = 9; -const EDomainNotFound: u64 = 10; -const EDomainDisabled: u64 = 11; -const ETokenAmountOverflow: u64 = 12; -const EInvalidFunction: u64 = 13; +const EInvalidArguments: u64 = 1; +const EInvalidOwnerCap: u64 = 2; +const EZeroChainSelector: u64 = 3; +const EEmptyAllowedCaller: u64 = 4; +const EInvalidMessageVersion: u64 = 5; +const EDomainMismatch: u64 = 6; +const ENonceMismatch: u64 = 7; +const EDomainNotFound: u64 = 8; +const EDomainDisabled: u64 = 9; +const ETokenAmountOverflow: u64 = 10; +const EInvalidFunction: u64 = 11; // ================================================================ // | Init | @@ -83,27 +82,23 @@ public fun type_and_version(): String { string::utf8(b"USDCTokenPool 1.6.0") } -// TODO: should we just import USDC as type arg? #[allow(lint(self_transfer))] -public fun initialize( +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, + decimals: u8, ctx: &mut TxContext, ) { - let coin_metadata_address: address = object::id_to_address(&object::id(coin_metadata)); - assert!(coin_metadata_address == @usdc_coin_metadata_object_id, EInvalidCoinMetadata); - let (ownable_state, token_pool_owner_cap) = ownable::new(ctx); let usdc_token_pool = USDCTokenPoolState { id: object::new(ctx), token_pool_state: token_pool::initialize( - coin_metadata_address, - coin_metadata.get_decimals(), + @usdc_coin_metadata_object_id, + decimals, vector[], ctx, ), @@ -119,7 +114,7 @@ public fun initialize( token_admin_registry::register_pool_by_admin( ref, ccip_admin_proof, - coin_metadata_address, + @usdc_coin_metadata_object_id, token_pool_package_id, string::utf8(b"usdc_token_pool"), token_type.into_string(), diff --git a/contracts/ccip/managed_token_faucet/sources/faucet.move b/contracts/ccip/managed_token_faucet/sources/faucet.move index 9c9f7b80..5d6f9cbc 100644 --- a/contracts/ccip/managed_token_faucet/sources/faucet.move +++ b/contracts/ccip/managed_token_faucet/sources/faucet.move @@ -1,7 +1,7 @@ module managed_token_faucet::faucet; use managed_token::managed_token::{Self, MintCap, TokenState}; -use sui::coin::{Coin, CoinMetadata}; +use sui::coin::Coin; use sui::deny_list::DenyList; public struct FaucetState has key, store { @@ -19,35 +19,34 @@ public fun initialize(mint_cap: MintCap, ctx: &mut TxContext) { } public fun drip( - metadata: &CoinMetadata, state: &FaucetState, token_state: &mut TokenState, deny_list: &DenyList, + decimals: u8, ctx: &mut TxContext, ): Coin { - drip_internal(metadata, state, token_state, deny_list, ctx) + drip_internal(state, token_state, deny_list, decimals, ctx) } public fun drip_and_send( - metadata: &CoinMetadata, state: &FaucetState, token_state: &mut TokenState, deny_list: &DenyList, recipient: address, + decimals: u8, ctx: &mut TxContext, ) { - let coin = drip_internal(metadata, state, token_state, deny_list, ctx); + let coin = drip_internal(state, token_state, deny_list, decimals, ctx); transfer::public_transfer(coin, recipient); } fun drip_internal( - metadata: &CoinMetadata, state: &FaucetState, token_state: &mut TokenState, deny_list: &DenyList, + decimals: u8, ctx: &mut TxContext, ): Coin { - let decimals = metadata.get_decimals(); let mut i = 0; let mut amount = 1; diff --git a/deployment/ops/ccip_burn_mint_token_pool/op_burn_mint_token_pool.go b/deployment/ops/ccip_burn_mint_token_pool/op_burn_mint_token_pool.go index 76d0e6e4..85edf05a 100644 --- a/deployment/ops/ccip_burn_mint_token_pool/op_burn_mint_token_pool.go +++ b/deployment/ops/ccip_burn_mint_token_pool/op_burn_mint_token_pool.go @@ -26,6 +26,7 @@ type BurnMintTokenPoolInitializeInput struct { CoinMetadataObjectId string TreasuryCapObjectId string TokenPoolAdministrator string + Decimals uint8 } var initBMTPHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, input BurnMintTokenPoolInitializeInput) (output sui_ops.OpTxResult[BurnMintTokenPoolInitializeObjects], err error) { @@ -41,9 +42,10 @@ var initBMTPHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, input BurnMi opts, []string{input.CoinObjectTypeArg}, bind.Object{Id: input.StateObjectId}, - bind.Object{Id: input.CoinMetadataObjectId}, + input.CoinMetadataObjectId, bind.Object{Id: input.TreasuryCapObjectId}, input.TokenPoolAdministrator, + input.Decimals, ) if err != nil { return sui_ops.OpTxResult[BurnMintTokenPoolInitializeObjects]{}, fmt.Errorf("failed to execute burn mint token pool initialization: %w", err) @@ -82,6 +84,7 @@ type BurnMintTokenPoolInitializeByCcipAdminInput struct { OwnerCapObjectId string TreasuryCapObjectId string TokenPoolAdministrator string + Decimals uint8 } var initByCcipAdminBMTPHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, input BurnMintTokenPoolInitializeByCcipAdminInput) (output sui_ops.OpTxResult[BurnMintTokenPoolInitializeObjects], err error) { @@ -98,9 +101,10 @@ var initByCcipAdminBMTPHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, i []string{input.CoinObjectTypeArg}, bind.Object{Id: input.StateObjectId}, bind.Object{Id: input.OwnerCapObjectId}, - bind.Object{Id: input.CoinMetadataObjectId}, + input.CoinMetadataObjectId, bind.Object{Id: input.TreasuryCapObjectId}, input.TokenPoolAdministrator, + input.Decimals, ) if err != nil { return sui_ops.OpTxResult[BurnMintTokenPoolInitializeObjects]{}, fmt.Errorf("failed to execute burn mint token pool initialization by ccip admin: %w", err) diff --git a/deployment/ops/ccip_burn_mint_token_pool/seq_deploy_and_init.go b/deployment/ops/ccip_burn_mint_token_pool/seq_deploy_and_init.go index 7521b10a..05154b98 100644 --- a/deployment/ops/ccip_burn_mint_token_pool/seq_deploy_and_init.go +++ b/deployment/ops/ccip_burn_mint_token_pool/seq_deploy_and_init.go @@ -26,6 +26,7 @@ type DeployAndInitBurnMintTokenPoolInput struct { CoinMetadataObjectId string TreasuryCapObjectId string TokenPoolAdministrator string + Decimals uint8 // apply chain updates RemoteChainSelectorsToRemove []uint64 RemoteChainSelectorsToAdd []uint64 @@ -62,6 +63,7 @@ var DeployAndInitBurnMintTokenPoolSequence = cld_ops.NewSequence( CoinMetadataObjectId: input.CoinMetadataObjectId, TreasuryCapObjectId: input.TreasuryCapObjectId, TokenPoolAdministrator: input.TokenPoolAdministrator, + Decimals: input.Decimals, }, ) if err != nil { diff --git a/deployment/ops/ccip_managed_token_pool/op_managed_token_pool.go b/deployment/ops/ccip_managed_token_pool/op_managed_token_pool.go index 16857f28..3479ed9e 100644 --- a/deployment/ops/ccip_managed_token_pool/op_managed_token_pool.go +++ b/deployment/ops/ccip_managed_token_pool/op_managed_token_pool.go @@ -28,6 +28,7 @@ type ManagedTokenPoolInitializeInput struct { CoinMetadataObjectId string MintCapObjectId string TokenPoolAdministrator string + Decimals uint8 } var initMTPHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, input ManagedTokenPoolInitializeInput) (output sui_ops.OpTxResult[ManagedTokenPoolInitializeObjects], err error) { @@ -45,9 +46,10 @@ var initMTPHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, input Managed bind.Object{Id: input.CCIPObjectRefObjectId}, bind.Object{Id: input.ManagedTokenStateObjectId}, bind.Object{Id: input.ManagedTokenOwnerCapId}, - bind.Object{Id: input.CoinMetadataObjectId}, + input.CoinMetadataObjectId, bind.Object{Id: input.MintCapObjectId}, input.TokenPoolAdministrator, + input.Decimals, ) if err != nil { return sui_ops.OpTxResult[ManagedTokenPoolInitializeObjects]{}, fmt.Errorf("failed to execute managed token pool initialization: %w", err) @@ -87,6 +89,7 @@ type ManagedTokenPoolInitializeByCcipAdminInput struct { MintCapObjectId string ManagedTokenStateObjectId string TokenPoolAdministrator string + Decimals uint8 } var initByCcipAdminManagedTokenPoolHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, input ManagedTokenPoolInitializeByCcipAdminInput) (output sui_ops.OpTxResult[ManagedTokenPoolInitializeObjects], err error) { @@ -103,10 +106,11 @@ var initByCcipAdminManagedTokenPoolHandler = func(b cld_ops.Bundle, deps sui_ops []string{input.CoinObjectTypeArg}, bind.Object{Id: input.CCIPObjectRefObjectId}, bind.Object{Id: input.OwnerCapObjectId}, - bind.Object{Id: input.CoinMetadataObjectId}, + input.CoinMetadataObjectId, bind.Object{Id: input.MintCapObjectId}, input.ManagedTokenStateObjectId, input.TokenPoolAdministrator, + input.Decimals, ) if err != nil { return sui_ops.OpTxResult[ManagedTokenPoolInitializeObjects]{}, fmt.Errorf("failed to execute managed token pool initialization by ccip admin: %w", err) diff --git a/deployment/ops/ccip_managed_token_pool/seq_deploy_and_init.go b/deployment/ops/ccip_managed_token_pool/seq_deploy_and_init.go index fe0fd7c9..c5bc7fd9 100644 --- a/deployment/ops/ccip_managed_token_pool/seq_deploy_and_init.go +++ b/deployment/ops/ccip_managed_token_pool/seq_deploy_and_init.go @@ -23,6 +23,7 @@ type SeqDeployAndInitManagedTokenPoolInput struct { CoinMetadataObjectId string MintCapObjectId string TokenPoolAdministrator string + Decimals uint8 // apply chain updates RemoteChainSelectorsToRemove []uint64 RemoteChainSelectorsToAdd []uint64 @@ -77,6 +78,7 @@ var DeployAndInitManagedTokenPoolSequence = cld_ops.NewSequence( CoinMetadataObjectId: input.CoinMetadataObjectId, MintCapObjectId: input.MintCapObjectId, TokenPoolAdministrator: input.TokenPoolAdministrator, + Decimals: input.Decimals, }, ) if err != nil { diff --git a/deployment/ops/ccip_onramp/op_deploy.go b/deployment/ops/ccip_onramp/op_deploy.go index d3ea2690..e66147c1 100644 --- a/deployment/ops/ccip_onramp/op_deploy.go +++ b/deployment/ops/ccip_onramp/op_deploy.go @@ -274,7 +274,7 @@ var GetFee = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, input GetFeeInput) (o opts := deps.GetCallOpts() opts.Signer = deps.Signer - inspectResp, err := onRampPackage.GetFee(b.GetContext(), opts, []string{input.TypeArgs}, bind.Object{Id: input.CCIPObjectRef}, bind.Object{Id: "0x6"}, input.DestChainSelector, input.Receiver, input.Data, input.TokenAddress, input.TokenAmounts, bind.Object{Id: input.FeeToken}, input.ExtraArgs) + inspectResp, err := onRampPackage.GetFee(b.GetContext(), opts, bind.Object{Id: input.CCIPObjectRef}, bind.Object{Id: "0x6"}, input.DestChainSelector, input.Receiver, input.Data, input.TokenAddress, input.TokenAmounts, input.FeeToken, input.ExtraArgs) if err != nil { return sui_ops.OpTxResult[IsChainSupportedOutput]{}, fmt.Errorf("failed to get fee: %w", err) } 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 b948ab19..0652c83d 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 @@ -23,10 +23,10 @@ type USDCTokenPoolInitializeInput struct { CoinObjectTypeArg string StateObjectId string OwnerCapObjectId string - CoinMetadataObjectId string LocalDomainIdentifier uint32 TokenPoolPackageId string TokenPoolAdministrator string + Decimals uint8 } var initUSDCTokenPoolHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, input USDCTokenPoolInitializeInput) (output sui_ops.OpTxResult[USDCTokenPoolInitializeObjects], err error) { @@ -43,10 +43,10 @@ var initUSDCTokenPoolHandler = func(b cld_ops.Bundle, deps sui_ops.OpTxDeps, inp []string{input.CoinObjectTypeArg}, bind.Object{Id: input.StateObjectId}, bind.Object{Id: input.OwnerCapObjectId}, - bind.Object{Id: input.CoinMetadataObjectId}, input.LocalDomainIdentifier, input.TokenPoolPackageId, input.TokenPoolAdministrator, + input.Decimals, ) 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..d4dcf083 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 @@ -25,6 +25,7 @@ type DeployAndInitUSDCTokenPoolInput struct { CCIPObjectRefObjectId string CCIPAdminProofObjectId string CoinMetadataObjectId string + Decimals uint8 LocalDomainIdentifier uint32 TokenPoolPackageId string TokenPoolAdministrator string @@ -68,10 +69,10 @@ var DeployAndInitUSDCTokenPoolSequence = cld_ops.NewSequence( CoinObjectTypeArg: input.CoinObjectTypeArg, StateObjectId: input.CCIPObjectRefObjectId, OwnerCapObjectId: input.CCIPAdminProofObjectId, - CoinMetadataObjectId: input.CoinMetadataObjectId, LocalDomainIdentifier: input.LocalDomainIdentifier, TokenPoolPackageId: input.TokenPoolPackageId, TokenPoolAdministrator: input.TokenPoolAdministrator, + Decimals: input.Decimals, }, ) if err != nil { diff --git a/integration-tests/offramp/execute_test.go b/integration-tests/offramp/execute_test.go index 5243a6c4..91240aa1 100644 --- a/integration-tests/offramp/execute_test.go +++ b/integration-tests/offramp/execute_test.go @@ -39,6 +39,7 @@ import ( const ( evmReceiverAddress = "0x80226fc0ee2b096224eeac085bb9a8cba1146f7d" + tokenReceiverAddress = "0xD127643c855aA9BAEf66ab895049AA0264a74453" SUI_CHAIN_SELECTOR = 2 ETHEREUM_CHAIN_SELECTOR = 1 ) @@ -636,6 +637,7 @@ func TestExecuteOffRamp(t *testing.T) { offChainTokenData, proofs, uint32(1_000_000), + normalizeTo32Bytes(tokenReceiverAddress), ) execReportBCSBytes, err := testutils.SerializeExecutionReport(report) diff --git a/integration-tests/onramp/environment/token_pools.go b/integration-tests/onramp/environment/token_pools.go index 79b8e3e0..4bed4e33 100644 --- a/integration-tests/onramp/environment/token_pools.go +++ b/integration-tests/onramp/environment/token_pools.go @@ -70,6 +70,7 @@ func SetupEthTokenPoolBurnMint( CoinMetadataObjectId: reportMockEthToken.Output.Objects.CoinMetadataObjectId, TreasuryCapObjectId: reportMockEthToken.Output.Objects.TreasuryCapObjectId, TokenPoolAdministrator: accountAddress, + Decimals: 9, // Chain updates - adding the destination chain RemoteChainSelectorsToRemove: []uint64{}, @@ -181,6 +182,7 @@ func SetupManagedTokenPool( CoinMetadataObjectId: reportMockEthToken.Output.Objects.CoinMetadataObjectId, MintCapObjectId: mintCapObjectId, TokenPoolAdministrator: accountAddress, + Decimals: 9, // Chain updates - adding the destination chain RemoteChainSelectorsToRemove: []uint64{}, RemoteChainSelectorsToAdd: []uint64{destChainSelector}, // Destination chain selector diff --git a/relayer/testutils/onramp.go b/relayer/testutils/onramp.go index b7b0c692..c3e93590 100644 --- a/relayer/testutils/onramp.go +++ b/relayer/testutils/onramp.go @@ -100,10 +100,9 @@ func getCCIPSendCommand(ccipOnrampPackageId string, feeTokenType string) cwConfi }, }, { - Name: "fee_token_metadata", - Type: "object_id", - Required: true, - IsMutable: BoolPointer(false), + Name: "fee_token_metadata", + Type: "address", + Required: true, }, { Name: "fee_token",