sequence

package
v0.0.0-...-67263d3 Latest Latest
Warning

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

Go to latest
Published: Jun 29, 2026 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AcceptTokenAdminsSequence = operations.NewSequence(
	"accept-token-admins",
	operation.Version1_0_0,
	"Accepts the admin role of one or multiple pending admin transfers on regulated token instances",
	acceptTokenAdminsSequence,
)
View Source
var AcceptTokenOwnershipsSequence = operations.NewSequence(
	"accept-token-ownerships",
	operation.Version1_0_0,
	"Accepts the ownership of one or multiple managed/regulated token instances",
	acceptTokenOwnershipsSequence,
)
View Source
var AcceptTokenPoolOwnershipsSequence = operations.NewSequence(
	"accept-token-pool-ownerships",
	operation.Version1_0_0,
	"Accept ownership of one or multiple managed/BnM/LnR token pool instances",
	acceptTokenPoolOwnershipsSequence,
)
View Source
var AptosCurseSequence = cldf_ops.NewSequence(
	"aptos-curse-sequence",
	operation.Version1_0_0,
	"Curse sequence for Aptos",
	func(b cldf_ops.Bundle, chains cldf_chain.BlockChains, in AptosCurseUncurseInput) (output sequences.OnChainOutput, err error) {
		chain, ok := chains.AptosChains()[in.ChainSelector]
		if !ok {
			return sequences.OnChainOutput{}, fmt.Errorf("chain with selector %d not found in environment", in.ChainSelector)
		}
		subjectBytes := make([][]byte, len(in.Subjects))
		for i, subject := range in.Subjects {
			subjectBytes[i] = subject[:]
		}
		curseInput := rmnops.CurseMultipleInput{
			CCIPAddress: in.CCIPAddress,
			Subjects:    subjectBytes,
		}
		deps := dependency.AptosDeps{
			AptosChain: chain,
		}
		report, err := cldf_ops.ExecuteOperation(b, rmnops.CurseMultipleOp, deps, curseInput)
		if err != nil {
			return sequences.OnChainOutput{}, fmt.Errorf("failed to execute curse operation on Aptos chain %d: %w", chain.Selector, err)
		}
		batchOperation := mcmstypes.BatchOperation{
			ChainSelector: mcmstypes.ChainSelector(chain.Selector),
			Transactions:  []mcmstypes.Transaction{report.Output},
		}
		return sequences.OnChainOutput{
			BatchOps: []mcmstypes.BatchOperation{batchOperation},
		}, nil
	},
)
View Source
var AptosUncurseSequence = cldf_ops.NewSequence(
	"aptos-uncurse-sequence",
	operation.Version1_0_0,
	"Uncurse sequence for Aptos",
	func(b cldf_ops.Bundle, chains cldf_chain.BlockChains, in AptosCurseUncurseInput) (output sequences.OnChainOutput, err error) {
		chain, ok := chains.AptosChains()[in.ChainSelector]
		if !ok {
			return sequences.OnChainOutput{}, fmt.Errorf("chain with selector %d not found in environment", in.ChainSelector)
		}
		subjectBytes := make([][]byte, len(in.Subjects))
		for i, subject := range in.Subjects {
			subjectBytes[i] = subject[:]
		}
		uncurseInput := rmnops.UncurseMultipleInput{
			CCIPAddress: in.CCIPAddress,
			Subjects:    subjectBytes,
		}
		deps := dependency.AptosDeps{
			AptosChain: chain,
		}
		report, err := cldf_ops.ExecuteOperation(b, rmnops.UncurseMultipleOp, deps, uncurseInput)
		if err != nil {
			return sequences.OnChainOutput{}, fmt.Errorf("failed to execute uncurse operation on Aptos chain %d: %w", chain.Selector, err)
		}
		batchOperation := mcmstypes.BatchOperation{
			ChainSelector: mcmstypes.ChainSelector(chain.Selector),
			Transactions:  []mcmstypes.Transaction{report.Output},
		}
		return sequences.OnChainOutput{
			BatchOps: []mcmstypes.BatchOperation{batchOperation},
		}, nil
	},
)
View Source
var ConnectTokenPoolSequence = operations.NewSequence(
	"connect-aptos-evm-token-pools",
	operation.Version1_0_0,
	"Connects EVM<>Aptos lanes token pools",
	connectTokenPoolSequence,
)
View Source
var DeployAptosTokenPoolSequence = operations.NewSequence(
	"deploy-aptos-token-pool",
	operation.Version1_0_0,
	"Deploys token and token pool and configures",
	deployAptosTokenPoolSequence,
)

DeployAptosTokenPoolSequence deploys token pool to the same address as Token Object Address

View Source
var DeployAptosTokenSequence = operations.NewSequence(
	"deploy-aptos-token",
	operation.Version1_0_0,
	"Deploys token and configures",
	deployAptosTokenSequence,
)
View Source
var DeployCCIPSequence = operations.NewSequence(
	"deploy-aptos-ccip-sequence",
	operation.Version1_0_0,
	"Deploy Aptos CCIP contracts and initialize them",
	deployCCIPSequence,
)
View Source
var DeployCurseMCMSSequence = operations.NewSequence(
	"deploy-aptos-curse-mcms-sequence",
	operation.Version1_0_0,
	"Deploy and configure Aptos CurseMCMS contract",
	deployCurseMCMSSequence,
)
View Source
var DeployMCMSSequence = operations.NewSequence(
	"deploy-aptos-mcms-sequence",
	operation.Version1_0_0,
	"Deploy Aptos MCMS contract and configure it",
	deployMCMSSequence,
)
View Source
var DeployRegulatedTokenSequence = operations.NewSequence(
	"deploy-regulated-token-aptos-sequence",
	operation.Version1_0_0,
	"Deploy regulated token directly (regulated_token cannot be deployed via MCMS due to DFA re-entrancy) then build MCMS accept_ownership + accept_admin batch",
	deployRegulatedTokenSequence,
)
View Source
var DeployTokenFaucetSequence = operations.NewSequence(
	"deploy-aptos-token-faucet",
	operation.Version1_0_0,
	"Deploys a token faucet onto an existing manage_token instance",
	deployAptosTokenFaucetSequence,
)
View Source
var DynamicSequence = operations.NewSequence(
	"aptos-dynamic-sequence",
	operation.Version1_0_0,
	"Allows operations to be retrieved and executed at runtime",
	dynamicSequence,
)

DynamicSequence allows operations to be retrieved and executed at runtime

View Source
var ExecuteTokenOwnershipTransfersSequence = operations.NewSequence(
	"execute-token-ownership-transfers",
	operation.Version1_0_0,
	"Executes the pending ownership transfer(s) of one or multiple managed/regulated token instances",
	executeTokenOwnershipTransfersSequence,
)
View Source
var ExecuteTokenPoolOwnershipTransfersSequence = operations.NewSequence(
	"execute-token-pool-ownership-transfers",
	operation.Version1_0_0,
	"Executed the ownership transfer of one or multiple managed/BnM/LnR token pool instances",
	executeTokenPoolOwnershipTransfersSequence,
)
View Source
var FinalizeRegulatedTokenOwnershipSequence = operations.NewSequence(
	"finalize-regulated-token-ownership-sequence",
	operation.Version1_0_0,
	"Run regulated_token::execute_ownership_transfer (EOA) when a pending transfer exists",
	finalizeRegulatedTokenOwnershipSequence,
)

FinalizeRegulatedTokenOwnershipSequence runs regulated_token::execute_ownership_transfer (EOA) to finalize the 3-step ownable handoff after MCMS has accepted ownership. The full validation (transfer is to MCMS, accepted, deployer is current owner) lives in VerifyFinalizeRegulatedTokenOwnership and must be invoked by the calling changeset's VerifyPreconditions;

View Source
var MigrateOnRampDestChainConfigsToV2Sequence = operations.NewSequence(
	"migrate-onramp-dest-chain-configs-to-v2-sequence",
	operation.Version1_0_0,
	"Migrates OnRamp destination chain configs from V1 to V2",
	migrateOnRampDestChainConfigsToV2Sequence,
)
View Source
var TransferTokenAdminsSequence = operations.NewSequence(
	"transfer-token-admins",
	operation.Version1_0_0,
	"Transfers the admin role of one or multiple regulated token instances",
	transferTokenAdminsSequence,
)
View Source
var TransferTokenOwnershipsSequence = operations.NewSequence(
	"transfer-token-ownerships",
	operation.Version1_0_0,
	"Transfers the ownership of one or multiple managed/regulated token instances",
	transferTokenOwnershipsSequence,
)
View Source
var TransferTokenPoolOwnershipsSequence = operations.NewSequence(
	"transfer-token-pool-ownerships",
	operation.Version1_0_0,
	"Initiates the ownership transfer of one or multiple managed/BnM/LnR token pool instances to a new owner",
	transferTokenPoolOwnershipSequence,
)
View Source
var UpgradeCCIPSequence = operations.NewSequence(
	"upgrade-aptos-ccip-sequence",
	operation.Version1_0_0,
	"Upgrade Aptos CCIP contracts",
	upgradeCCIPSequence,
)

Functions

func VerifyFinalizeRegulatedTokenOwnership

func VerifyFinalizeRegulatedTokenOwnership(
	deps dependency.AptosDeps,
	tokenCodeObjectAddress aptos.AccountAddress,
	mcmsAddress aptos.AccountAddress,
) error

VerifyFinalizeRegulatedTokenOwnership validates that the regulated token is in a state where the deployer EOA can run execute_ownership_transfer to finalize the 3-step handoff to MCMS.

Types

type AcceptTokenAdminsSeqInput

type AcceptTokenAdminsSeqInput struct {
	Accepts []TokenAcceptInput
}

type AcceptTokenOwnershipsSeqInput

type AcceptTokenOwnershipsSeqInput struct {
	Accepts []TokenAcceptInput
}

type AcceptTokenPoolOwnershipsSeqInput

type AcceptTokenPoolOwnershipsSeqInput struct {
	Accepts []TokenPoolAcceptInput
}

type AptosCurseUncurseInput

type AptosCurseUncurseInput struct {
	CCIPAddress   aptos.AccountAddress
	ChainSelector uint64
	Subjects      []fastcurse.Subject
}

type ConnectTokenPoolSeqInput

type ConnectTokenPoolSeqInput struct {
	TokenPoolAddress                    aptos.AccountAddress
	TokenPoolType                       cldf.ContractType
	RemotePools                         map[uint64]RemotePool
	RemotePoolsToRemove                 []uint64 // To re-set a pool also add its address on the removing list
	TokenAddress                        aptos.AccountAddress
	TokenTransferFeeByRemoteChainConfig map[uint64]fee_quoter.TokenTransferFeeConfig
}

Connect Token Pool sequence input

type DeployCCIPSeqInput

type DeployCCIPSeqInput struct {
	MCMSAddress      aptos.AccountAddress
	CCIPConfig       config.ChainContractParams
	LinkTokenAddress aptos.AccountAddress
}

type DeployCCIPSeqOutput

type DeployCCIPSeqOutput struct {
	CCIPAddress    aptos.AccountAddress
	MCMSOperations []mcmstypes.BatchOperation
}

type DeployCurseMCMSSeqInput

type DeployCurseMCMSSeqInput struct {
	MCMSAddress aptos.AccountAddress
	CCIPAddress aptos.AccountAddress
	CurseMCMS   cldfproposalutils.MCMSWithTimelockConfig
}

DeployCurseMCMSSeqInput holds the configuration for deploying CurseMCMS.

type DeployCurseMCMSSeqOutput

type DeployCurseMCMSSeqOutput struct {
	CurseMCMSAddress   aptos.AccountAddress
	CurseMCMSOperation mcmstypes.BatchOperation
}

DeployCurseMCMSSeqOutput holds the deployed address and a CurseMCMS self-governance batch (AcceptOwnership + SetMinDelay) that must be submitted as a proposal targeting the CurseMCMS contract.

type DeployMCMSSeqOutput

type DeployMCMSSeqOutput struct {
	MCMSAddress   aptos.AccountAddress
	MCMSOperation mcmstypes.BatchOperation
}

Deploy MCMS Sequence

type DeployRegulatedTokenSeqInput

type DeployRegulatedTokenSeqInput struct {
	MCMSAddress          aptos.AccountAddress
	TokenParams          config.TokenParams
	TokenMint            *config.TokenMint
	RegistrarPreregister bool
}

DeployRegulatedTokenSeqInput is input for DeployRegulatedTokenSequence.

type DeployRegulatedTokenSeqOutput

type DeployRegulatedTokenSeqOutput struct {
	TokenCodeObjectAddress aptos.AccountAddress
	TokenMetadataAddress   aptos.AccountAddress
	MCMSOperations         []mcmstypes.BatchOperation
}

DeployRegulatedTokenSeqOutput contains token addresses and MCMS batch operations (accept_ownership + accept_admin) to be wrapped in a timelock proposal.

type DeployTokenFaucetSeqInput

type DeployTokenFaucetSeqInput struct {
	MCMSAddress         aptos.AccountAddress
	TokenCodeObjAddress aptos.AccountAddress
}

type DeployTokenPoolSeqInput

type DeployTokenPoolSeqInput struct {
	TokenCodeObjAddress aptos.AccountAddress
	TokenAddress        aptos.AccountAddress
	TokenOwnerAddress   aptos.AccountAddress
	PoolType            cldf.ContractType
	IsTokenOwnedByMCMS  bool
}

Deploy Token Pool sequence input

type DeployTokenPoolSeqOutput

type DeployTokenPoolSeqOutput struct {
	TokenPoolAddress aptos.AccountAddress
	MCMSOps          []mcmstypes.BatchOperation
}

type DeployTokenSeqInput

type DeployTokenSeqInput struct {
	MCMSAddress aptos.AccountAddress
	TokenParams config.TokenParams
	TokenMint   *config.TokenMint
}

type DeployTokenSeqOutput

type DeployTokenSeqOutput struct {
	TokenAddress        aptos.AccountAddress
	TokenCodeObjAddress aptos.AccountAddress
	TokenOwnerAddress   aptos.AccountAddress
	MCMSOperations      []mcmstypes.BatchOperation
}

type DynamicSeqInput

type DynamicSeqInput struct {
	Defs          []operations.Definition
	Inputs        []any // Each element should be the corresponding input type for its operation
	ChainSelector uint64
}

type ExecuteTokenOwnershipTransfersSeqInput

type ExecuteTokenOwnershipTransfersSeqInput struct {
	Transfers []TokenTransferInput
}

type ExecuteTokenPoolOwnershipTransfersSeqInput

type ExecuteTokenPoolOwnershipTransfersSeqInput struct {
	Transfers []TokenPoolTransferInput
}

type RemotePool

type RemotePool struct {
	RemotePoolAddress  []byte
	RemoteTokenAddress []byte
	config.RateLimiterConfig
}

type TokenAcceptInput

type TokenAcceptInput struct {
	TokenCodeObjAddress aptos.AccountAddress
	TokenType           deployment.ContractType
}

type TokenPoolAcceptInput

type TokenPoolAcceptInput struct {
	TokenPoolAddress aptos.AccountAddress
	TokenPoolType    cldf.ContractType
}

type TokenPoolTransferInput

type TokenPoolTransferInput struct {
	TokenPoolAddress aptos.AccountAddress
	To               aptos.AccountAddress
	TokenPoolType    cldf.ContractType
}

type TokenTransferInput

type TokenTransferInput struct {
	TokenCodeObjAddress aptos.AccountAddress
	TokenType           deployment.ContractType
	To                  aptos.AccountAddress
}

type TransferTokenAdminsSeqInput

type TransferTokenAdminsSeqInput struct {
	Transfers []TokenTransferInput
}

type TransferTokenOwnershipsSeqInput

type TransferTokenOwnershipsSeqInput struct {
	Transfers []TokenTransferInput
}

type TransferTokenPoolOwnershipsSeqInput

type TransferTokenPoolOwnershipsSeqInput struct {
	Transfers []TokenPoolTransferInput
}

Jump to

Keyboard shortcuts

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