Documentation
¶
Index ¶
- Constants
- Variables
- func AnySliceToBytes(src []any) ([]byte, error)
- func AppendToEphemeralPubFile(filePath, buildEnv, chainID string, entry EphemeralPubEntry) error
- func BytesToAnySlice(b []byte) []any
- func ClearTestModifier()
- func ComputeDigestForModulesAndDeps(modules [][]byte, objectIDs [][]byte) [32]byte
- func ConvertToCallArg(typeName string, value any) (*transaction.CallArg, error)
- func DecodeJSONReturn(data any, target any) errordeprecated
- func DeserializeBCS(data []byte, moveTypes []string) ([]any, error)
- func EnsureEnvironmentInMoveToml(packageDir, environment, chainID string) error
- func ExecutePTB(ctx context.Context, opts *CallOpts, chainClient client.BindingsClient, ...) (*models.SuiTransactionBlockResponse, error)
- func FetchDefaultGasCoinRef(ctx context.Context, chainClient client.BindingsClient, address string) (*models.SuiObjectRef, error)
- func FindCoinObjectIdFromTx(tx models.SuiTransactionBlockResponse, coinType string) (string, error)
- func FindObjectIDFromChangedObjects(changed []*suirpcv2.ChangedObject, module, object string) (string, error)
- func FindObjectIdFromPublishTx(tx models.SuiTransactionBlockResponse, module, object string) (string, error)
- func FindPackageIdFromPublishTx(tx models.SuiTransactionBlockResponse) (string, error)
- func GetCustomValueFromObjectData[T any](resp *models.SuiObjectResponse, target *T) error
- func GetFailedTxError(tx *models.SuiTransactionBlockResponse) error
- func GetObjectRef(ctx context.Context, chainClient client.BindingsClient, objectID string) (*models.SuiObjectRef, error)
- func IsSuiAddress(addr string) booldeprecated
- func ReadObject(ctx context.Context, objectId string, chainClient client.BindingsClient) (*models.SuiObjectResponse, error)
- func RegisterStructDecoder(moveType string, decoder bcsStructDecoder)
- func RemovePublishedTOML(packageDir string) error
- func SetTestModifier(modifier SourceModifier)
- func SignAndSendTx(ctx context.Context, signer bindutils.SuiSigner, ...) (*models.SuiTransactionBlockResponse, error)
- func ToSuiAddress(address string) (string, error)deprecated
- func ToSuiObjectRef(ctx context.Context, chainClient client.BindingsClient, objectId string, ...) (*models.SuiObjectRef, error)
- func UnifiedTypeConverterHook(from, to reflect.Type, data any) (any, error)
- func UpdatePublishedTOMLForUpgrade(packageDir, environment, chainID, newPublishedAt, originalID string, ...) error
- func WaitForTransactionIndexed(ctx context.Context, chainClient transactionStatusClient, digest string) error
- func WriteEphemeralPubFile(filePath, buildEnv, chainID string, entries []EphemeralPubEntry) error
- func WritePublishedTOML(packageDir, environment, chainID, publishedAt, originalID string, version int) error
- type ArgumentRef
- type BoundContract
- func (c *BoundContract) AppendPTB(ctx context.Context, opts *CallOpts, ptb *transaction.Transaction, ...) (*transaction.Argument, error)
- func (c *BoundContract) Call(ctx context.Context, opts *CallOpts, encoded *EncodedCall) ([]any, error)
- func (c *BoundContract) EncodeCallArgs(function string, typeArgs []string, paramTypes []string, paramValues []any) (*EncodedCall, error)
- func (c *BoundContract) EncodeCallArgsWithGenerics(function string, typeArgs []string, typeParams []string, paramTypes []string, ...) (*EncodedCall, error)
- func (c *BoundContract) EncodeCallArgsWithReturnTypes(function string, typeArgs []string, paramTypes []string, paramValues []any, ...) (*EncodedCall, error)
- func (c *BoundContract) ExecuteTransaction(ctx context.Context, opts *CallOpts, encoded *EncodedCall) (*models.SuiTransactionBlockResponse, error)
- func (c *BoundContract) GetModuleName() string
- func (c *BoundContract) GetPackageID() string
- func (c *BoundContract) GetPackageName() string
- type BuildInfo
- type CallArg
- type CallArgManager
- func (m *CallArgManager) AddCallArg(arg *transaction.CallArg) transaction.Argument
- func (m *CallArgManager) ConvertCallArgsToArguments(callArgs []*transaction.CallArg) ([]*transaction.Argument, error)
- func (m *CallArgManager) ConvertEncodedCallArgsToArguments(encodedArgs []*EncodedCallArgument) ([]*transaction.Argument, error)
- func (m *CallArgManager) GetInputs() []*transaction.CallArg
- type CallOpts
- type Command
- type EmptyMoveStructWitness
- type EncodedCall
- type EncodedCallArgument
- func NewEncodedCallArgFromArgument(arg *transaction.Argument) *EncodedCallArgument
- func NewEncodedCallArgFromArgumentWithType(arg *transaction.Argument, typeName string) *EncodedCallArgument
- func NewEncodedCallArgFromCallArg(callArg *transaction.CallArg) *EncodedCallArgument
- func NewEncodedCallArgFromCallArgWithType(callArg *transaction.CallArg, typeName string) *EncodedCallArgument
- type EphemeralPubEntry
- type EphemeralPubFile
- type GasData
- type GenericTypeResolver
- type IBoundContract
- type ModuleInformation
- type Objectdeprecated
- type ObjectResolver
- type PackageArtifact
- type PackageID
- type PackageManifest
- type ProgrammableMoveCall
- type ProgrammableTransaction
- type PublishRequest
- type PublishedTOMLEntry
- type RPCResponse
- type SourceModifier
- type SuiAddressBytes
- type TransactionData
- type TransactionDataV1
- type TransactionKind
- type TransferObjects
- type TypeConversionFunc
- type TypeConverter
Constants ¶
const ( DefaultGasBudget uint64 = 10_000_000_000 AddressType = "address" )
const ( MaxUint8Value = 255 MaxUint16Value = 65535 U128ByteSize = 16 U256ByteSize = 32 DecimalBase = 10 HexCharPairLength = 2 )
Constants for magic numbers
Variables ¶
var ( WaitForTxIndexedTimeout = 30 * time.Second WaitForTxIndexedInitialBackoff = 100 * time.Millisecond WaitForTxIndexedMaxBackoff = 1 * time.Second )
Polling parameters for waitForTransactionIndexed.
var ErrTxIndexingTimeout = errors.New("tx submitted but fullnode indexing wait timed out")
Functions ¶
func AnySliceToBytes ¶
func AppendToEphemeralPubFile ¶
func AppendToEphemeralPubFile(filePath, buildEnv, chainID string, entry EphemeralPubEntry) error
AppendToEphemeralPubFile adds a new entry to an existing ephemeral pub file If the file doesn't exist, it creates a new one
func BytesToAnySlice ¶
func ConvertToCallArg ¶
func ConvertToCallArg(typeName string, value any) (*transaction.CallArg, error)
ConvertToCallArg converts a Go value to a CallArg for use in PTB
func DecodeJSONReturn
deprecated
func DeserializeBCS ¶
DeserializeBCS decodes BCS-encoded transaction calldata (used by MCMS proposal decoding).
func EnsureEnvironmentInMoveToml ¶
EnsureEnvironmentInMoveToml ensures the [environments] section exists in Move.toml with the specified environment and chain ID
func ExecutePTB ¶
func ExecutePTB(ctx context.Context, opts *CallOpts, chainClient client.BindingsClient, ptb *transaction.Transaction) (*models.SuiTransactionBlockResponse, error)
func FetchDefaultGasCoinRef ¶
func FetchDefaultGasCoinRef(ctx context.Context, chainClient client.BindingsClient, address string) (*models.SuiObjectRef, error)
func FindCoinObjectIdFromTx ¶
func FindCoinObjectIdFromTx(tx models.SuiTransactionBlockResponse, coinType string) (string, error)
FindCoinObjectIdFromTx finds a coin object ID from a transaction response by looking for created objects of type Coin<T>
func FindObjectIDFromChangedObjects ¶
func FindObjectIDFromChangedObjects(changed []*suirpcv2.ChangedObject, module, object string) (string, error)
func FindObjectIdFromPublishTx ¶
func FindObjectIdFromPublishTx(tx models.SuiTransactionBlockResponse, module, object string) (string, error)
func FindPackageIdFromPublishTx ¶
func FindPackageIdFromPublishTx(tx models.SuiTransactionBlockResponse) (string, error)
func GetCustomValueFromObjectData ¶
func GetCustomValueFromObjectData[T any](resp *models.SuiObjectResponse, target *T) error
func GetFailedTxError ¶
func GetFailedTxError(tx *models.SuiTransactionBlockResponse) error
func GetObjectRef ¶
func GetObjectRef(ctx context.Context, chainClient client.BindingsClient, objectID string) (*models.SuiObjectRef, error)
func IsSuiAddress
deprecated
func ReadObject ¶
func ReadObject(ctx context.Context, objectId string, chainClient client.BindingsClient) (*models.SuiObjectResponse, error)
func RegisterStructDecoder ¶
func RegisterStructDecoder(moveType string, decoder bcsStructDecoder)
RegisterStructDecoder registers a custom BCS decoder for MCMS and legacy calldata paths.
func RemovePublishedTOML ¶
RemovePublishedTOML removes the Published.toml file from a package directory This is useful when cleaning up temporary workspaces
func SetTestModifier ¶
func SetTestModifier(modifier SourceModifier)
SetTestModifier sets a source modifier for the next compilation (test only)
func SignAndSendTx ¶
func ToSuiAddress
deprecated
func ToSuiObjectRef ¶
func ToSuiObjectRef(ctx context.Context, chainClient client.BindingsClient, objectId string, address string) (*models.SuiObjectRef, error)
func UnifiedTypeConverterHook ¶
UnifiedTypeConverterHook is a mapstructure hook that uses the type converter registry
func UpdatePublishedTOMLForUpgrade ¶
func UpdatePublishedTOMLForUpgrade(packageDir, environment, chainID, newPublishedAt, originalID string, newVersion int, upgradeCap string) error
UpdatePublishedTOMLForUpgrade updates an existing Published.toml file for a package upgrade. This updates the published-at address and increments the version.
func WriteEphemeralPubFile ¶
func WriteEphemeralPubFile(filePath, buildEnv, chainID string, entries []EphemeralPubEntry) error
WriteEphemeralPubFile writes an ephemeral publication file (Pub.<env>.toml) for test publishing. This file tracks publications of the package and its dependencies for ephemeral environments.
Parameters:
- filePath: The full path to the ephemeral pub file
- buildEnv: The build environment (e.g., "testnet", "mainnet")
- chainID: The actual chain ID of the network being published to
- entries: List of published package entries
func WritePublishedTOML ¶
func WritePublishedTOML(packageDir, environment, chainID, publishedAt, originalID string, version int) error
WritePublishedTOML writes a Published.toml file for a package at the given directory. This is used to make a dependency resolvable when building packages that depend on it.
Parameters:
- packageDir: The directory containing the package (where Published.toml will be written)
- environment: The environment name (e.g., "testnet", "mainnet", "local")
- chainID: The chain identifier (first 8 chars of chain ID hash)
- publishedAt: The on-chain address where the package is published
- originalID: The original package ID (for v1, same as publishedAt)
- version: The package version number
Types ¶
type ArgumentRef ¶
type ArgumentRef struct {
Result *uint16 `json:"Result,omitempty"`
Input *uint16 `json:"Input,omitempty"`
}
ArgumentRef — small helper for fields like {"Result": 0}
type BoundContract ¶
type BoundContract struct {
// contains filtered or unexported fields
}
func NewBoundContract ¶
func NewBoundContract(packageID string, packageName, moduleName string, chainClient client.BindingsClient) (*BoundContract, error)
func (*BoundContract) AppendPTB ¶
func (c *BoundContract) AppendPTB(ctx context.Context, opts *CallOpts, ptb *transaction.Transaction, encoded *EncodedCall) (*transaction.Argument, error)
func (*BoundContract) Call ¶
func (c *BoundContract) Call(ctx context.Context, opts *CallOpts, encoded *EncodedCall) ([]any, error)
func (*BoundContract) EncodeCallArgs ¶
func (c *BoundContract) EncodeCallArgs(function string, typeArgs []string, paramTypes []string, paramValues []any) (*EncodedCall, error)
EncodeCallArgs encodes function parameters to CallArgs for use in PTB
func (*BoundContract) EncodeCallArgsWithGenerics ¶
func (c *BoundContract) EncodeCallArgsWithGenerics(function string, typeArgs []string, typeParams []string, paramTypes []string, paramValues []any, returnTypes []string) (*EncodedCall, error)
EncodeCallArgsWithGenerics encodes function parameters with full generic type information
func (*BoundContract) EncodeCallArgsWithReturnTypes ¶
func (c *BoundContract) EncodeCallArgsWithReturnTypes(function string, typeArgs []string, paramTypes []string, paramValues []any, returnTypes []string) (*EncodedCall, error)
EncodeCallArgsWithReturnTypes encodes function parameters to CallArgs for use in PTB with return type information
func (*BoundContract) ExecuteTransaction ¶
func (c *BoundContract) ExecuteTransaction(ctx context.Context, opts *CallOpts, encoded *EncodedCall) (*models.SuiTransactionBlockResponse, error)
func (*BoundContract) GetModuleName ¶
func (c *BoundContract) GetModuleName() string
func (*BoundContract) GetPackageID ¶
func (c *BoundContract) GetPackageID() string
func (*BoundContract) GetPackageName ¶
func (c *BoundContract) GetPackageName() string
type BuildInfo ¶
type BuildInfo struct {
CompiledPackageInfo struct {
PackageName string `yaml:"package_name"`
} `yaml:"compiled_package_info"`
}
type CallArg ¶
type CallArg struct {
Pure []byte `json:"Pure,omitempty"`
}
CallArg — mimics SDK CallArg but matches CLI JSON
type CallArgManager ¶
type CallArgManager struct {
// contains filtered or unexported fields
}
func NewCallArgManager ¶
func NewCallArgManager() *CallArgManager
func NewCallArgManagerWithExisting ¶
func NewCallArgManagerWithExisting(existingInputs []*transaction.CallArg) *CallArgManager
func (*CallArgManager) AddCallArg ¶
func (m *CallArgManager) AddCallArg(arg *transaction.CallArg) transaction.Argument
func (*CallArgManager) ConvertCallArgsToArguments ¶
func (m *CallArgManager) ConvertCallArgsToArguments(callArgs []*transaction.CallArg) ([]*transaction.Argument, error)
func (*CallArgManager) ConvertEncodedCallArgsToArguments ¶
func (m *CallArgManager) ConvertEncodedCallArgsToArguments(encodedArgs []*EncodedCallArgument) ([]*transaction.Argument, error)
func (*CallArgManager) GetInputs ¶
func (m *CallArgManager) GetInputs() []*transaction.CallArg
type Command ¶
type Command struct {
MoveCall *ProgrammableMoveCall `json:"MoveCall,omitempty"`
Publish [][]interface{} `json:"Publish,omitempty"`
Upgrade []interface{} `json:"Upgrade,omitempty"`
}
Command — mimics SDK Command but matches CLI JSON
type EmptyMoveStructWitness ¶
type EmptyMoveStructWitness struct{}
type EncodedCall ¶
type EncodedCall struct {
Module ModuleInformation
Function string
TypeArgs []*transaction.TypeTag
CallArgs []*EncodedCallArgument
ReturnTypes []string
TypeParams []string
}
EncodedCall represents an encoded Move function call
func (*EncodedCall) String ¶
func (e *EncodedCall) String() string
func (*EncodedCall) ValidateCallArgs ¶
func (e *EncodedCall) ValidateCallArgs() error
ValidateCallArgs ensures all CallArgs are valid (Pure or Object) and returns an error if an unresolved SDK variant is detected
type EncodedCallArgument ¶
type EncodedCallArgument struct {
// Only one of these should be set:
CallArg *transaction.CallArg // For regular values (Pure, Object)
Argument *transaction.Argument // For PTB results (Result, NestedResult, GasCoin)
// TypeName stores the original Move type string (e.g., "&mut 0x2::clock::Clock", "&OwnerCap")
// This is used to preserve type information (including mutability) through the encoding process
TypeName string
}
EncodedCallArgument represents an argument in an encoded Move function call.
func NewEncodedCallArgFromArgument ¶
func NewEncodedCallArgFromArgument(arg *transaction.Argument) *EncodedCallArgument
func NewEncodedCallArgFromArgumentWithType ¶
func NewEncodedCallArgFromArgumentWithType(arg *transaction.Argument, typeName string) *EncodedCallArgument
func NewEncodedCallArgFromCallArg ¶
func NewEncodedCallArgFromCallArg(callArg *transaction.CallArg) *EncodedCallArgument
func NewEncodedCallArgFromCallArgWithType ¶
func NewEncodedCallArgFromCallArgWithType(callArg *transaction.CallArg, typeName string) *EncodedCallArgument
func (*EncodedCallArgument) IsArgument ¶
func (e *EncodedCallArgument) IsArgument() bool
IsArgument returns true if this is a transaction.Argument (PTB result)
func (*EncodedCallArgument) IsCallArg ¶
func (e *EncodedCallArgument) IsCallArg() bool
IsCallArg returns true if this is a regular CallArg
func (*EncodedCallArgument) Validate ¶
func (e *EncodedCallArgument) Validate() error
Validate ensures that exactly one field is set
type EphemeralPubEntry ¶
type EphemeralPubEntry struct {
Source string // Can be local path, git URL, or root
PublishedAt string
OriginalID string
UpgradeCap string
Version int // Package version number
}
EphemeralPubEntry represents an entry in the ephemeral publication file (Pub.<env>.toml)
type EphemeralPubFile ¶
type EphemeralPubFile struct {
BuildEnv string
ChainID string
Published []EphemeralPubEntry
}
EphemeralPubFile represents the structure of Pub.<env>.toml files
type GasData ¶
type GasData struct {
Payment [][]interface{} `json:"payment"`
Owner string `json:"owner"`
Price uint64 `json:"price"`
Budget uint64 `json:"budget"`
}
GasData
type GenericTypeResolver ¶
type GenericTypeResolver struct {
// contains filtered or unexported fields
}
GenericTypeResolver resolves generic type parameters to concrete types
func NewGenericTypeResolver ¶
func NewGenericTypeResolver(typeParamNames []string, typeArgs []string) (*GenericTypeResolver, error)
NewGenericTypeResolver creates a new resolver with the given type parameter mappings
func (*GenericTypeResolver) ResolveType ¶
func (r *GenericTypeResolver) ResolveType(typeName string) string
ResolveType resolves a type that may contain generic parameters
type IBoundContract ¶
type IBoundContract interface {
GetPackageID() string
GetPackageName() string
GetModuleName() string
AppendPTB(ctx context.Context, opts *CallOpts, ptb *transaction.Transaction, encoded *EncodedCall) (*transaction.Argument, error)
Call(ctx context.Context, opts *CallOpts, encoded *EncodedCall) ([]any, error)
ExecuteTransaction(ctx context.Context, opts *CallOpts, encoded *EncodedCall) (*models.SuiTransactionBlockResponse, error)
}
type ModuleInformation ¶
func (*ModuleInformation) String ¶
func (m *ModuleInformation) String() string
type ObjectResolver ¶
type ObjectResolver struct {
// contains filtered or unexported fields
}
func NewObjectResolver ¶
func NewObjectResolver(chainClient client.BindingsClient) *ObjectResolver
func (*ObjectResolver) ClearCache ¶
func (r *ObjectResolver) ClearCache()
func (*ObjectResolver) GetSharedObject ¶
func (*ObjectResolver) ResolveCallArg ¶
func (r *ObjectResolver) ResolveCallArg(ctx context.Context, arg *transaction.CallArg, typeName string) (*transaction.CallArg, error)
type PackageArtifact ¶
type PackageArtifact struct {
Modules []string `json:"modules"`
Dependencies []string `json:"dependencies"`
Digest []byte `json:"digest"`
}
func CompilePackage ¶
func ToArtifact ¶
func ToArtifact(artifactJSON string) (PackageArtifact, error)
type PackageID ¶
type PackageID = string
func PublishPackage ¶
func PublishPackage( ctx context.Context, opts *CallOpts, chainClient client.BindingsClient, req PublishRequest, ) (PackageID, *models.SuiTransactionBlockResponse, error)
type PackageManifest ¶
type ProgrammableMoveCall ¶
type ProgrammableMoveCall struct {
Package string `json:"package"`
Module string `json:"module"`
Function string `json:"function"`
TypeArguments []interface{} `json:"type_arguments"`
Arguments []ArgumentRef `json:"arguments"`
}
ProgrammableMoveCall — kept simple for now
type ProgrammableTransaction ¶
type ProgrammableTransaction struct {
Inputs []CallArg `json:"inputs"`
Commands []Command `json:"commands"`
}
ProgrammableTransaction
type PublishRequest ¶
type PublishedTOMLEntry ¶
type PublishedTOMLEntry struct {
ChainID string
PublishedAt string // The on-chain address of the published package
OriginalID string // The address of the first version of the package
Version int
ToolchainVersion string
UpgradeCapability string
}
PublishedTOMLEntry represents a publication entry for a specific environment
type RPCResponse ¶
type SourceModifier ¶
SourceModifier is a function that can modify Move source files during compilation.
This is primarily used for testing package upgrades without creating duplicate contract versions in the repository.
Example usage:
modifier := func(packageRoot string) error {
sourcePath := filepath.Join(packageRoot, "sources", "contract.move")
content, _ := os.ReadFile(sourcePath)
modified := strings.Replace(string(content), "1.0.0", "2.0.0", 1)
return os.WriteFile(sourcePath, []byte(modified), 0o644)
}
type SuiAddressBytes ¶
type SuiAddressBytes [32]byte
type TransactionDataV1 ¶
type TransactionDataV1 struct {
Kind TransactionKind `json:"kind"`
Sender string `json:"sender"`
GasData GasData `json:"gas_data"`
Expiration string `json:"expiration"`
}
TransactionDataV1
type TransactionKind ¶
type TransactionKind struct {
ProgrammableTransaction ProgrammableTransaction `json:"ProgrammableTransaction"`
}
TransactionKind
type TransferObjects ¶
type TransferObjects struct {
Objects []ArgumentRef `json:"TransferObjects,omitempty"`
Address ArgumentRef `json:"Address,omitempty"`
}
TransferObjects
type TypeConversionFunc ¶
TypeConversionFunc defines a function that converts data from one type to another
type TypeConverter ¶
type TypeConverter struct {
// contains filtered or unexported fields
}
TypeConverter provides a registry approach to type conversions for mapstructure
func NewTypeConverter ¶
func NewTypeConverter() *TypeConverter
NewTypeConverter creates a new type converter with all standard conversions registered
func (*TypeConverter) RegisterConverter ¶
func (tc *TypeConverter) RegisterConverter(key string, fn TypeConversionFunc)
RegisterConverter registers a conversion function with a unique key