Files
node/wallet/chain/p/builder_with_options.go
zeekayandHanzo Dev b1cc108c9f gofmt
Co-authored-by: Hanzo Dev <[email protected]>
2026-09-08 01:51:51 -07:00

225 lines
5.1 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package p
import (
"time"
"github.com/luxfi/ids"
"github.com/luxfi/node/vms/platformvm/signer"
"github.com/luxfi/node/vms/platformvm/txs"
"github.com/luxfi/node/wallet/network/primary/common"
lux "github.com/luxfi/utxo"
"github.com/luxfi/utxo/secp256k1fx"
)
var _ Builder = (*builderWithOptions)(nil)
type builderWithOptions struct {
Builder
options []common.Option
}
// NewBuilderWithOptions returns a new transaction builder that will use the
// given options by default.
//
// - [builder] is the builder that will be called to perform the underlying
// operations.
// - [options] will be provided to the builder in addition to the options
// provided in the method calls.
func NewBuilderWithOptions(builder Builder, options ...common.Option) Builder {
return &builderWithOptions{
Builder: builder,
options: options,
}
}
func (b *builderWithOptions) GetBalance(
options ...common.Option,
) (map[ids.ID]uint64, error) {
return b.Builder.GetBalance(
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) GetImportableBalance(
chainID ids.ID,
options ...common.Option,
) (map[ids.ID]uint64, error) {
return b.Builder.GetImportableBalance(
chainID,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewAddValidatorTx(
vdr *txs.Validator,
rewardsOwner *secp256k1fx.OutputOwners,
shares uint32,
options ...common.Option,
) (*txs.AddValidatorTx, error) {
return b.Builder.NewAddValidatorTx(
vdr,
rewardsOwner,
shares,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewAddChainValidatorTx(
vdr *txs.ChainValidator,
options ...common.Option,
) (*txs.AddChainValidatorTx, error) {
return b.Builder.NewAddChainValidatorTx(
vdr,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) RemoveChainValidatorTx(
nodeID ids.NodeID,
netID ids.ID,
options ...common.Option,
) (*txs.RemoveChainValidatorTx, error) {
return b.Builder.NewRemoveChainValidatorTx(
nodeID,
netID,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewAddDelegatorTx(
vdr *txs.Validator,
rewardsOwner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.AddDelegatorTx, error) {
return b.Builder.NewAddDelegatorTx(
vdr,
rewardsOwner,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewCreateChainTx(
netID ids.ID,
genesis []byte,
vmID ids.ID,
fxIDs []ids.ID,
chainName string,
options ...common.Option,
) (*txs.CreateChainTx, error) {
return b.Builder.NewCreateChainTx(
netID,
genesis,
vmID,
fxIDs,
chainName,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewCreateNetworkTx(
owner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.CreateNetworkTx, error) {
return b.Builder.NewCreateNetworkTx(
owner,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewImportTx(
sourceChainID ids.ID,
to *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.ImportTx, error) {
return b.Builder.NewImportTx(
sourceChainID,
to,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewExportTx(
chainID ids.ID,
outputs []*lux.TransferableOutput,
options ...common.Option,
) (*txs.ExportTx, error) {
return b.Builder.NewExportTx(
chainID,
outputs,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewTransformChainTx(
netID ids.ID,
assetID ids.ID,
initialSupply uint64,
maxSupply uint64,
minConsumptionRate uint64,
maxConsumptionRate uint64,
minValidatorStake uint64,
maxValidatorStake uint64,
minStakeDuration time.Duration,
maxStakeDuration time.Duration,
minDelegationFee uint32,
minDelegatorStake uint64,
maxValidatorWeightFactor byte,
uptimeRequirement uint32,
options ...common.Option,
) (*txs.TransformChainTx, error) {
return b.Builder.NewTransformChainTx(
netID,
assetID,
initialSupply,
maxSupply,
minConsumptionRate,
maxConsumptionRate,
minValidatorStake,
maxValidatorStake,
minStakeDuration,
maxStakeDuration,
minDelegationFee,
minDelegatorStake,
maxValidatorWeightFactor,
uptimeRequirement,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewAddPermissionlessValidatorTx(
vdr *txs.ChainValidator,
signer signer.Signer,
assetID ids.ID,
validationRewardsOwner *secp256k1fx.OutputOwners,
delegationRewardsOwner *secp256k1fx.OutputOwners,
shares uint32,
options ...common.Option,
) (*txs.AddPermissionlessValidatorTx, error) {
return b.Builder.NewAddPermissionlessValidatorTx(
vdr,
signer,
assetID,
validationRewardsOwner,
delegationRewardsOwner,
shares,
common.UnionOptions(b.options, options)...,
)
}
func (b *builderWithOptions) NewAddPermissionlessDelegatorTx(
vdr *txs.ChainValidator,
assetID ids.ID,
rewardsOwner *secp256k1fx.OutputOwners,
options ...common.Option,
) (*txs.AddPermissionlessDelegatorTx, error) {
return b.Builder.NewAddPermissionlessDelegatorTx(
vdr,
assetID,
rewardsOwner,
common.UnionOptions(b.options, options)...,
)
}