analyzer

package
v0.62.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 3, 2025 License: MIT Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Magic number constants
	MinStructFieldsForPrettyFormat = 2
	MinDataLengthForMethodID       = 4
	DefaultAnalyzersCount          = 2
)
View Source
const (
	Indent = "    "

	// Length thresholds for different rendering decisions
	MaxSummaryLength      = 80  // Maximum length for inline summaries
	MaxSimpleValueLength  = 50  // Maximum length for values considered "simple"
	MaxLongValueLength    = 120 // Threshold for values that need details section
	MaxHexPreviewBytes    = 16  // Maximum bytes to show in hex preview
	MaxCompactValueLength = 24  // Maximum length for compact value previews
	MaxCompactHexBytes    = 4   // Maximum bytes for compact hex previews
)

Variables

View Source
var ManyChainMultiSigMetaData = &bind.MetaData{
	ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"MAX_NUM_SIGNERS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NUM_GROUPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"op\",\"type\":\"tuple\",\"internalType\":\"structManyChainMultiSig.Op\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"multiSig\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint40\",\"internalType\":\"uint40\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structManyChainMultiSig.Config\",\"components\":[{\"name\":\"signers\",\"type\":\"tuple[]\",\"internalType\":\"structManyChainMultiSig.Signer[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"group\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"groupQuorums\",\"type\":\"uint8[32]\",\"internalType\":\"uint8[32]\"},{\"name\":\"groupParents\",\"type\":\"uint8[32]\",\"internalType\":\"uint8[32]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOpCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint40\",\"internalType\":\"uint40\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validUntil\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootMetadata\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structManyChainMultiSig.RootMetadata\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"multiSig\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"preOpCount\",\"type\":\"uint40\",\"internalType\":\"uint40\"},{\"name\":\"postOpCount\",\"type\":\"uint40\",\"internalType\":\"uint40\"},{\"name\":\"overridePreviousRoot\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConfig\",\"inputs\":[{\"name\":\"signerAddresses\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"signerGroups\",\"type\":\"uint8[]\",\"internalType\":\"uint8[]\"},{\"name\":\"groupQuorums\",\"type\":\"uint8[32]\",\"internalType\":\"uint8[32]\"},{\"name\":\"groupParents\",\"type\":\"uint8[32]\",\"internalType\":\"uint8[32]\"},{\"name\":\"clearRoot\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validUntil\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"metadata\",\"type\":\"tuple\",\"internalType\":\"structManyChainMultiSig.RootMetadata\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"multiSig\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"preOpCount\",\"type\":\"uint40\",\"internalType\":\"uint40\"},{\"name\":\"postOpCount\",\"type\":\"uint40\",\"internalType\":\"uint40\"},{\"name\":\"overridePreviousRoot\",\"type\":\"bool\",\"internalType\":\"bool\"}]},{\"name\":\"metadataProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"signatures\",\"type\":\"tuple[]\",\"internalType\":\"structManyChainMultiSig.Signature[]\",\"components\":[{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ConfigSet\",\"inputs\":[{\"name\":\"config\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structManyChainMultiSig.Config\",\"components\":[{\"name\":\"signers\",\"type\":\"tuple[]\",\"internalType\":\"structManyChainMultiSig.Signer[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"group\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"groupQuorums\",\"type\":\"uint8[32]\",\"internalType\":\"uint8[32]\"},{\"name\":\"groupParents\",\"type\":\"uint8[32]\",\"internalType\":\"uint8[32]\"}]},{\"name\":\"isRootCleared\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validUntil\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"metadata\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structManyChainMultiSig.RootMetadata\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"multiSig\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"preOpCount\",\"type\":\"uint40\",\"internalType\":\"uint40\"},{\"name\":\"postOpCount\",\"type\":\"uint40\",\"internalType\":\"uint40\"},{\"name\":\"overridePreviousRoot\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OpExecuted\",\"inputs\":[{\"name\":\"nonce\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallReverted\",\"inputs\":[{\"name\":\"error\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"GroupTreeNotWellFormed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientSigners\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSigner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MissingConfig\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutOfBoundsGroup\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutOfBoundsGroupQuorum\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutOfBoundsNumOfSigners\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PendingOps\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostOpCountReached\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ProofCannotBeVerified\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignedHashAlreadySeen\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignerGroupsLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignerInDisabledGroup\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignersAddressesMustBeStrictlyIncreasing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidUntilHasAlreadyPassed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongChainId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongMultiSig\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongNonce\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongPostOpCount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongPreOpCount\",\"inputs\":[]}]",
}
View Source
var RBACTimelockMetaDataTesting = &bind.MetaData{
	ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"minDelay\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"proposers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"executors\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"cancellers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"bypassers\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BYPASSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"CANCELLER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_ADMIN_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"EXECUTOR_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROPOSER_ROLE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blockFunctionSelector\",\"inputs\":[{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"bypasserExecuteBatch\",\"inputs\":[{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structRBACTimelock.Call[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"cancel\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"executeBatch\",\"inputs\":[{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structRBACTimelock.Call[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"predecessor\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getBlockedFunctionSelectorAt\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockedFunctionSelectorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"duration\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleAdmin\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleMember\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRoleMemberCount\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTimestamp\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"hasRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hashOperationBatch\",\"inputs\":[{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structRBACTimelock.Call[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"predecessor\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"isOperation\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"registered\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperationDone\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"done\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperationPending\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"pending\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperationReady\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"ready\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onERC721Received\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revokeRole\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"scheduleBatch\",\"inputs\":[{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structRBACTimelock.Call[]\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"predecessor\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delay\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unblockFunctionSelector\",\"inputs\":[{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateDelay\",\"inputs\":[{\"name\":\"newDelay\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BypasserCallExecuted\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CallExecuted\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CallScheduled\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"predecessor\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"delay\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Cancelled\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FunctionSelectorBlocked\",\"inputs\":[{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":true,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FunctionSelectorUnblocked\",\"inputs\":[{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":true,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinDelayChange\",\"inputs\":[{\"name\":\"oldDuration\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newDuration\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleAdminChanged\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"previousAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAdminRole\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleGranted\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RoleRevoked\",\"inputs\":[{\"name\":\"role\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]",
}

Functions

func DescribeProposal

func DescribeProposal(ctx ProposalContext, proposal *mcms.Proposal) (string, error)

func DescribeTimelockProposal

func DescribeTimelockProposal(ctx ProposalContext, proposal *mcms.TimelockProposal) (string, error)

func FieldContextGet added in v0.61.0

func FieldContextGet[T any](fieldCtx *FieldContext, key string) (T, error)

func GetChainNameBySelector added in v0.59.0

func GetChainNameBySelector(selector uint64) (string, error)

GetChainNameBySelector retrieves the chain name for a given chain selector.

func NewEnvironmentEVMRegistry

func NewEnvironmentEVMRegistry(env deployment.Environment, abiMappings map[string]string) (*environmentEVMRegistry, error)

NewEnvironmentEVMRegistry creates a new environmentEVMRegistry from the provided ABI mappings and domain name.

func NewEnvironmentSolanaRegistry

func NewEnvironmentSolanaRegistry(env deployment.Environment, decoderMappings map[string]DecodeInstructionFn) (*environmentSolanaRegistry, error)

NewEnvironmentSolanaRegistry creates a new environmentSolanaRegistry from the provided ABI mappings and domain name.

func WithEVMABIMappings

func WithEVMABIMappings(mappings map[string]string) proposalCtxOption

func WithRenderer added in v0.59.0

func WithRenderer(renderer Renderer) proposalCtxOption

func WithSolanaDecoders

func WithSolanaDecoders(decoders map[string]DecodeInstructionFn) proposalCtxOption

Types

type AddressField added in v0.61.0

type AddressField struct {
	Value string
}

func (AddressField) Annotation added in v0.61.0

func (a AddressField) Annotation(ctx *FieldContext) string

Annotation returns only the annotation if known, otherwise "".

func (AddressField) GetType added in v0.61.0

func (a AddressField) GetType() string

func (AddressField) GetValue added in v0.61.0

func (a AddressField) GetValue() string

type AddressFieldData added in v0.61.0

type AddressFieldData struct {
	Value string
}

Field-specific template data structures

type AnchorInstruction

type AnchorInstruction interface {
	solana.Instruction
	Name() string
	TypeID() (binary.TypeID, error)
	Impl() (any, error)
	Inputs() []NamedField
}

type ArgumentTemplateData added in v0.59.0

type ArgumentTemplateData struct {
	Name       string
	Summary    string
	Annotation string
	Details    string
}

type ArrayField added in v0.61.0

type ArrayField struct {
	Elements []FieldValue
}

func (ArrayField) GetElements added in v0.61.0

func (a ArrayField) GetElements() []FieldValue

func (ArrayField) GetLength added in v0.61.0

func (a ArrayField) GetLength() int

func (ArrayField) GetType added in v0.61.0

func (a ArrayField) GetType() string

type ArrayFieldData added in v0.61.0

type ArrayFieldData struct {
	Elements []FieldValue
	Length   int
	Context  *FieldContext
}

type BatchReport added in v0.59.0

type BatchReport struct {
	ChainSelector uint64
	ChainName     string
	Family        string
	Operations    []OperationReport
}

BatchReport groups multiple operations for timelock-style proposals.

type BatchTemplateData added in v0.59.0

type BatchTemplateData struct {
	ChainSelector uint64
	ChainName     string
	Operations    []OperationTemplateData
}

type BytesField added in v0.61.0

type BytesField struct {
	Value []byte
}

func (BytesField) GetLength added in v0.61.0

func (b BytesField) GetLength() int

func (BytesField) GetType added in v0.61.0

func (b BytesField) GetType() string

func (BytesField) GetValue added in v0.61.0

func (b BytesField) GetValue() []byte

type BytesFieldData added in v0.61.0

type BytesFieldData struct {
	Value  []byte
	Length int
}

type ChainSelectorField added in v0.61.0

type ChainSelectorField struct {
	Value uint64
}

func (ChainSelectorField) GetType added in v0.61.0

func (c ChainSelectorField) GetType() string

func (ChainSelectorField) GetValue added in v0.61.0

func (c ChainSelectorField) GetValue() uint64

type DecodeInstructionFn

type DecodeInstructionFn func(accounts []*solana.AccountMeta, data []byte) (AnchorInstruction, error)

func DIFn

func DIFn[T any](fn func(accounts []*solana.AccountMeta, data []byte) (T, error)) DecodeInstructionFn

type DecodedCall added in v0.59.0

type DecodedCall struct {
	Address string
	Method  string
	Inputs  []NamedField
	Outputs []NamedField
}

func AnalyzeAptosTransaction

func AnalyzeAptosTransaction(ctx ProposalContext, decoder *mcmsaptossdk.Decoder, chainSelector uint64, mcmsTx types.Transaction) (*DecodedCall, error)

func AnalyzeAptosTransactions

func AnalyzeAptosTransactions(ctx ProposalContext, chainSelector uint64, txs []types.Transaction) ([]*DecodedCall, error)

func AnalyzeEVMTransaction

func AnalyzeEVMTransaction(
	ctx ProposalContext, decoder *EVMTxCallDecoder, chainSelector uint64, mcmsTx types.Transaction,
) (*DecodedCall, *abi.ABI, string, error)

func AnalyzeEVMTransactions

func AnalyzeEVMTransactions(ctx ProposalContext, chainSelector uint64, txs []types.Transaction) ([]*DecodedCall, error)

func AnalyzeSolanaTransaction

func AnalyzeSolanaTransaction(
	ctx ProposalContext, chainSelector uint64, mcmsTx mcmstypes.Transaction,
) (*DecodedCall, error)

func AnalyzeSolanaTransactions

func AnalyzeSolanaTransactions(
	ctx ProposalContext, chainSelector uint64, txs []mcmstypes.Transaction,
) ([]*DecodedCall, error)

func AnalyzeSuiTransaction added in v0.57.0

func AnalyzeSuiTransaction(ctx ProposalContext, decoder *mcmssuisdk.Decoder, chainSelector uint64, mcmsTx types.Transaction) (*DecodedCall, error)

func AnalyzeSuiTransactions added in v0.57.0

func AnalyzeSuiTransactions(ctx ProposalContext, chainSelector uint64, txs []types.Transaction) ([]*DecodedCall, error)

func (*DecodedCall) String added in v0.61.0

func (d *DecodedCall) String(context *FieldContext) string

String renders a human-readable representation of the decoded call using the default text renderer. This method is kept for backwards compatibility but rendering should be done through renderers.

type DecodedCallTemplateData added in v0.59.0

type DecodedCallTemplateData struct {
	Address           string
	AddressAnnotation string
	Method            string
	Inputs            []ArgumentTemplateData
	Outputs           []ArgumentTemplateData
}

type DefaultProposalContext

type DefaultProposalContext struct {
	AddressesByChain deployment.AddressesByChain
	// contains filtered or unexported fields
}

DefaultProposalContext implements a default proposal analysis context which searches for the EVM ABI of all known contracts.

func (*DefaultProposalContext) FieldsContext added in v0.61.0

func (c *DefaultProposalContext) FieldsContext(chainSelector uint64) *FieldContext

func (*DefaultProposalContext) GetEVMRegistry

func (c *DefaultProposalContext) GetEVMRegistry() EVMABIRegistry

func (*DefaultProposalContext) GetRenderer added in v0.59.0

func (c *DefaultProposalContext) GetRenderer() Renderer

func (*DefaultProposalContext) GetSolanaDecoderRegistry

func (c *DefaultProposalContext) GetSolanaDecoderRegistry() SolanaDecoderRegistry

func (*DefaultProposalContext) SetRenderer added in v0.61.0

func (c *DefaultProposalContext) SetRenderer(renderer Renderer)

type DetailsTemplateData added in v0.59.0

type DetailsTemplateData struct {
	Name    string
	Content string
}

type EVMABIRegistry

type EVMABIRegistry interface {
	GetABIByAddress(chainSelector uint64, address string) (*abi.ABI, string, error)
	GetAllABIs() map[string]string
	GetABIByType(typeAndVersion deployment.TypeAndVersion) (*abi.ABI, string, error)
	AddABI(contractType deployment.TypeAndVersion, abi string) error
}

type EVMTxCallDecoder added in v0.59.0

type EVMTxCallDecoder struct {
	Analyzers []FieldAnalyzer
}

func NewTxCallDecoder added in v0.59.0

func NewTxCallDecoder(extraAnalyzers []FieldAnalyzer) *EVMTxCallDecoder

func (*EVMTxCallDecoder) Decode added in v0.59.0

func (p *EVMTxCallDecoder) Decode(address string, contractABI *abi.ABI, data []byte) (*DecodedCall, error)

Decode decodes the given data using the provided contract ABI.

type FieldAnalyzer added in v0.61.0

type FieldAnalyzer func(argName string, argAbi *abi.Type, argVal any, analyzers []FieldAnalyzer) FieldValue

FieldAnalyzer is an extension point of proposal decoding. You can implement your own FieldAnalyzer which returns your own FieldValue instance.

type FieldContext added in v0.61.0

type FieldContext struct {
	Ctx map[string]any
}

FieldContext is a storage for context that may be needed for field representations. Refer to BytesAndAddressFieldAnalyzer and ChainSelectorFieldAnalyzer for usage examples

func NewFieldContext added in v0.61.0

func NewFieldContext(addresses deployment.AddressesByChain) *FieldContext

type FieldValue added in v0.61.0

type FieldValue interface {
	GetType() string
}

FieldValue is an interface for different types of field values. it is used in analyzers to represent different types of data.

func BytesAndAddressAnalyzer added in v0.59.0

func BytesAndAddressAnalyzer(_ string, argAbi *abi.Type, argVal any, _ []FieldAnalyzer) FieldValue

BytesAndAddressAnalyzer is an EVM-specific analyzer that handles bytes and address types.

func ChainSelectorAnalyzer added in v0.59.0

func ChainSelectorAnalyzer(argName string, argAbi *abi.Type, argVal any, _ []FieldAnalyzer) FieldValue

ChainSelectorAnalyzer is an EVM-specific analyzer that handles chain selector parameters.

type MarkdownRenderer added in v0.59.0

type MarkdownRenderer struct {
	*TextRenderer
	// contains filtered or unexported fields
}

MarkdownRenderer extends TextRenderer with markdown-specific formatting

func NewMarkdownRenderer added in v0.59.0

func NewMarkdownRenderer() *MarkdownRenderer

NewMarkdownRenderer creates a new MarkdownRenderer with compiled templates

func (*MarkdownRenderer) RenderDecodedCall added in v0.59.0

func (r *MarkdownRenderer) RenderDecodedCall(d *DecodedCall, ctx *FieldContext) string

RenderDecodedCall renders a DecodedCall as Markdown using templates.

func (*MarkdownRenderer) RenderProposal added in v0.59.0

func (r *MarkdownRenderer) RenderProposal(rep *ProposalReport, ctx *FieldContext) string

RenderProposal renders a ProposalReport as Markdown.

func (*MarkdownRenderer) RenderTimelockProposal added in v0.59.0

func (r *MarkdownRenderer) RenderTimelockProposal(rep *ProposalReport, ctx *FieldContext) string

RenderTimelock renders a Timelock ProposalReport as Markdown.

type NamedField added in v0.61.0

type NamedField struct {
	Name  string
	Value FieldValue
}

func (NamedField) GetName added in v0.61.0

func (n NamedField) GetName() string

func (NamedField) GetType added in v0.61.0

func (n NamedField) GetType() string

func (NamedField) GetValue added in v0.61.0

func (n NamedField) GetValue() FieldValue

type OperationReport added in v0.59.0

type OperationReport struct {
	ChainSelector uint64
	ChainName     string
	Family        string
	Calls         []*DecodedCall
}

OperationReport captures one proposal operation on a specific chain.

type OperationTemplateData added in v0.59.0

type OperationTemplateData struct {
	ChainSelector uint64
	ChainName     string
	Calls         []*DecodedCall
}

type ProposalContext

type ProposalContext interface {
	GetEVMRegistry() EVMABIRegistry
	GetSolanaDecoderRegistry() SolanaDecoderRegistry
	FieldsContext(chainSelector uint64) *FieldContext
	GetRenderer() Renderer
	SetRenderer(renderer Renderer)
}

func NewDefaultProposalContext

func NewDefaultProposalContext(env deployment.Environment, opts ...proposalCtxOption) (ProposalContext, error)

type ProposalContextProvider

type ProposalContextProvider func(env deployment.Environment) (ProposalContext, error)

type ProposalReport added in v0.59.0

type ProposalReport struct {
	Operations []OperationReport
	Batches    []BatchReport
}

ProposalReport is a format-neutral structure describing a decoded proposal ready to be rendered in multiple output formats.

Exactly one of Operations or Batches is populated depending on the proposal type.

func BuildProposalReport added in v0.59.0

func BuildProposalReport(ctx ProposalContext, p *mcms.Proposal) (*ProposalReport, error)

BuildProposalReport assembles a ProposalReport from a single-proposal input.

func BuildTimelockReport added in v0.59.0

func BuildTimelockReport(ctx ProposalContext, p *mcms.TimelockProposal) (*ProposalReport, error)

BuildTimelockReport assembles a ProposalReport for timelock-style proposals with batches.

type ProposalTemplateData added in v0.59.0

type ProposalTemplateData struct {
	Operations []OperationTemplateData
	Context    *FieldContext
}

type Renderer added in v0.59.0

type Renderer interface {
	RenderProposal(r *ProposalReport, ctx *FieldContext) string
	RenderTimelockProposal(r *ProposalReport, ctx *FieldContext) string
	RenderDecodedCall(d *DecodedCall, ctx *FieldContext) string
	RenderField(field NamedField, ctx *FieldContext) string
}

Renderer turns a ProposalReport into a concrete output format. Implementations should be format-specific (Markdown/HTML/Text).

type SimpleField added in v0.61.0

type SimpleField struct {
	Value string
}

func (SimpleField) GetType added in v0.61.0

func (s SimpleField) GetType() string

func (SimpleField) GetValue added in v0.61.0

func (s SimpleField) GetValue() string

type SimpleFieldData added in v0.61.0

type SimpleFieldData struct {
	Value string
}

type SolanaDecoderRegistry

type SolanaDecoderRegistry interface {
	GetSolanaInstructionDecoderByAddress(chainSelector uint64, address string) (DecodeInstructionFn, error)
	GetSolanaInstructionDecoderByType(typeAndVersion deployment.TypeAndVersion) (DecodeInstructionFn, error)
	AddSolanaInstructionDecoder(contractType deployment.TypeAndVersion, decoder DecodeInstructionFn)
}

SolanaDecoderRegistry is an interface for retrieving and managing Solana instruction decoders.

type StructField added in v0.61.0

type StructField struct {
	Fields []NamedField
}

func (StructField) GetFieldCount added in v0.61.0

func (s StructField) GetFieldCount() int

func (StructField) GetFields added in v0.61.0

func (s StructField) GetFields() []NamedField

func (StructField) GetType added in v0.61.0

func (s StructField) GetType() string

type StructFieldData added in v0.61.0

type StructFieldData struct {
	FieldCount int
}

type SummaryTemplateData added in v0.59.0

type SummaryTemplateData struct {
	Type    string
	Length  int
	Preview string
	Value   string
}

type TextArgumentTemplateData added in v0.61.0

type TextArgumentTemplateData struct {
	Name    string
	Summary string
	Details string
}

type TextBatchTemplateData added in v0.61.0

type TextBatchTemplateData struct {
	ChainSelector uint64
	ChainName     string
	Operations    []TextOperationTemplateData
}

type TextDecodedCallTemplateData added in v0.61.0

type TextDecodedCallTemplateData struct {
	Address string
	Method  string
	Inputs  []TextArgumentTemplateData
	Outputs []TextArgumentTemplateData
}

type TextOperationTemplateData added in v0.61.0

type TextOperationTemplateData struct {
	ChainSelector uint64
	ChainName     string
	Calls         []*DecodedCall
}

type TextProposalTemplateData added in v0.61.0

type TextProposalTemplateData struct {
	Operations []TextOperationTemplateData
	Context    *FieldContext
}

Template data structures

type TextRenderer added in v0.61.0

type TextRenderer struct {
	// contains filtered or unexported fields
}

TextRenderer provides basic text rendering functionality using templates

func NewTextRenderer added in v0.61.0

func NewTextRenderer() *TextRenderer

NewTextRenderer creates a new TextRenderer

func (*TextRenderer) RenderDecodedCall added in v0.61.0

func (r *TextRenderer) RenderDecodedCall(d *DecodedCall, ctx *FieldContext) string

RenderDecodedCall renders a DecodedCall as plain text using templates

func (*TextRenderer) RenderField added in v0.61.0

func (r *TextRenderer) RenderField(field NamedField, ctx *FieldContext) string

RenderField renders a NamedField as plain text

func (*TextRenderer) RenderFieldValue added in v0.61.0

func (r *TextRenderer) RenderFieldValue(field FieldValue) string

RenderFieldValue renders just the value portion of a field without the name prefix. This is useful when you need the field value for embedding in other contexts.

func (*TextRenderer) RenderProposal added in v0.61.0

func (r *TextRenderer) RenderProposal(rep *ProposalReport, ctx *FieldContext) string

RenderProposal renders a ProposalReport as plain text using templates

func (*TextRenderer) RenderTimelockProposal added in v0.61.0

func (r *TextRenderer) RenderTimelockProposal(rep *ProposalReport, ctx *FieldContext) string

RenderTimelockProposal renders a Timelock ProposalReport as plain text using templates

type TextTimelockTemplateData added in v0.61.0

type TextTimelockTemplateData struct {
	Batches []TextBatchTemplateData
	Context *FieldContext
}

type TimelockTemplateData added in v0.59.0

type TimelockTemplateData struct {
	Batches []BatchTemplateData
	Context *FieldContext
}

type YamlField added in v0.61.0

type YamlField struct {
	Value any
}

YamlField for Solana-specific YAML output TODO: could also be used for the UPF format when making that format implement the Renderer interface.

func (YamlField) GetType added in v0.61.0

func (y YamlField) GetType() string

func (YamlField) GetValue added in v0.61.0

func (y YamlField) GetValue() string

func (YamlField) MarshalYAML added in v0.61.0

func (y YamlField) MarshalYAML() ([]byte, error)

MarshalYAML marshals the yaml field using custom marshallers

type YamlFieldData added in v0.61.0

type YamlFieldData struct {
	Value string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL