Skip to main content

TxBuilder

export interface TxBuilder {
  addCollateral(utxo: TxInput | TxInput[]): TxBuilder
  addDCert(dcert: DCert): TxBuilder
  addOutput(output: TxOutput[]): TxBuilder
  addSigners(hash: PubKeyHash[]): TxBuilder
  apply(fn: (b: TxBuilder) => any): TxBuilder
  attachNativeScript(script: NativeScript): TxBuilder
  attachUplcProgram(program: UplcProgramV2 | UplcProgramV1): TxBuilder
  build(config: TxBuilderFinalConfig): Promise<Tx>
  buildUnsafe(config: TxBuilderFinalConfig): Promise<Tx>
  config: TxBuilderConfig
  delegateUnsafe(
    hash: PubKeyHash | StakingValidatorHash<any>,
    poolId: PubKeyHashLike,
    redeemer?: UplcData | LazyRedeemerData<UplcData>
  ): TxBuilder
  delegateWithoutRedeemer(
    hash: PubKeyHash,
    poolId: PubKeyHashLike
  ): TxBuilder
  delegateWithRedeemer<TRedeemer>(
    hash: StakingValidatorHash<StakingContext<any, TRedeemer>>,
    poolId: PubKeyHashLike,
    redeemer: TRedeemer
  ): TxBuilder
  deregisterUnsafe(
    hash: PubKeyHash | StakingValidatorHash<any>,
    redeemer?: UplcData | LazyRedeemerData<UplcData>
  ): TxBuilder
  deregisterWithoutRedeemer(hash: PubKeyHash): TxBuilder
  deregisterWithRedeemer<TRedeemer>(
    hash: StakingValidatorHash<StakingContext<any, TRedeemer>>,
    redeemer: TRedeemer
  ): TxBuilder
  hasDatum(data: UplcData): boolean
  hasMetadata(): boolean
  hasUplcScripts(): boolean
  inputs: TxInput[]
  mintAssetClassUnsafe(
    assetClass: AssetClass,
    quantity: IntLike,
    redeemer?: UplcData | LazyRedeemerData<UplcData>
  ): TxBuilder
  mintAssetClassWithLazyRedeemer<TRedeemer>(
    assetClass: AssetClass<MintingContext<any, TRedeemer>>,
    quantity: IntLike,
    redeemer: LazyRedeemerData<TRedeemer>
  ): TxBuilder
  mintAssetClassWithoutRedeemer(
    assetClass: AssetClass,
    quantity: IntLike
  ): TxBuilder
  mintAssetClassWithRedeemer<TRedeemer>(
    assetClass: AssetClass<MintingContext<any, TRedeemer>>,
    quantity: IntLike,
    redeemer: TRedeemer
  ): TxBuilder
  mintedTokens: Assets
  mintPolicyTokensUnsafe(
    policy: MintingPolicyHashLike,
    tokens: [BytesLike, IntLike][],
    redeemer?: UplcData | LazyRedeemerData<UplcData>
  ): TxBuilder
  mintPolicyTokensWithoutRedeemer(
    policy: MintingPolicyHash,
    tokens: [BytesLike, IntLike][]
  ): TxBuilder
  mintPolicyTokensWithRedeemer<TRedeemer>(
    policy: MintingPolicyHash<MintingContext<any, TRedeemer>>,
    tokens: [BytesLike, IntLike][],
    redeemer: TRedeemer
  ): TxBuilder
  mintTokenValueWithoutRedeemer(token: TokenValue): TxBuilder
  mintTokenValueWithRedeemer<TRedeemer>(
    token: TokenValue<MintingContext<any, TRedeemer>>,
    redeemer: TRedeemer
  ): TxBuilder
  outputs: TxOutput[]
  payUnsafe(
    addr: ShelleyAddressLike,
    value: ValueLike,
    datum?: TxOutputDatum
  ): TxBuilder
  payWithDatum<TDatum>(
    address: ShelleyAddress<ValidatorHash<DatumPaymentContext<TDatum>>>,
    value: ValueLike,
    datum: TxOutputDatumCastable<TDatum>
  ): TxBuilder
  payWithoutDatum(
    address: ShelleyAddress<PubKeyHash>,
    value: ValueLike
  ): TxBuilder
  refer(utxos: TxInput<any>[]): TxBuilder
  refInputs: TxInput[]
  reset(): TxBuilder
  setMetadataAttribute(
    key: number,
    value: TxMetadataAttr
  ): TxBuilder
  setMetadataAttributes(attributes: {[key: number]: TxMetadataAttr}): TxBuilder
  signers: PubKeyHash[]
  spendUnsafe(
    utxos: TxInput<any> | TxInput<any>[],
    redeemer?: UplcData | LazyRedeemerData<UplcData>
  ): TxBuilder
  spendWithLazyRedeemer<TRedeemer>(
    utxos: TxInput<ValidatorHash<SpendingContext<any, any, any, TRedeemer>>> | TxInput<ValidatorHash<SpendingContext<any, any, any, TRedeemer>>>[],
    redeemer: LazyRedeemerData<TRedeemer>
  ): TxBuilder
  spendWithoutRedeemer(utxos: TxInput<PubKeyHash>[]): TxBuilder
  spendWithRedeemer<TRedeemer>(
    utxos: TxInput<ValidatorHash<SpendingContext<any, any, any, TRedeemer>>> | TxInput<ValidatorHash<SpendingContext<any, any, any, TRedeemer>>>[],
    redeemer: TRedeemer
  ): TxBuilder
  sumInputAndMintedAssets(): Assets
  sumOutputAssets(): Assets
  sumOutputValue(): Value
  validFromSlot(slot: IntLike): TxBuilder
  validFromTime(time: TimeLike): TxBuilder
  validToSlot(slot: IntLike): TxBuilder
  validToTime(time: TimeLike): TxBuilder
  withdrawUnsafe(
    addr: StakingAddressLike,
    lovelace: IntLike,
    redeemer?: UplcData | LazyRedeemerData<UplcData>
  ): TxBuilder
  withdrawWithLazyRedeemer<TRedeemer>(
    addr: StakingAddress<StakingValidatorHash<StakingContext<any, TRedeemer>>>,
    lovelace: IntLike,
    redeemer: LazyRedeemerData<TRedeemer>
  ): TxBuilder
  withdrawWithoutRedeemer(
    addr: StakingAddress<PubKeyHash>,
    lovelace: IntLike
  ): TxBuilder
  withdrawWithRedeemer<TRedeemer>(
    addr: StakingAddress<StakingValidatorHash<StakingContext<any, TRedeemer>>>,
    lovelace: IntLike,
    redeemer: TRedeemer
  ): TxBuilder
}

Properties

addCollateral

addCollateral(utxo: TxInput | TxInput[]): TxBuilder

addDCert

addDCert(dcert: DCert): TxBuilder

addOutput

addOutput(output: TxOutput[]): TxBuilder
Sorts that assets in the output if not already sorted (mutates outputs) (needed by the Flint wallet) Throws an error if any the value entries are non-positive Throws an error if the output doesn't include a datum but is sent to a non-nativescript validator

addSigners

addSigners(hash: PubKeyHash[]): TxBuilder

apply

apply(fn: (b: TxBuilder) => any): TxBuilder
Apply a function to the TxBuilder instance Useful for chaining compositions of TxBuilder mutations The return value of fn is unused

attachNativeScript

attachNativeScript(script: NativeScript): TxBuilder

attachUplcProgram

attachUplcProgram(program: UplcProgramV2 | UplcProgramV1): TxBuilder

build

build(config: TxBuilderFinalConfig): Promise<Tx>
Builds and runs validation logic on the transaction, throwing any validation errors found The resulting transaction may likely still require Tx.addSignature / Tx.addSignatures before it is submitted to the network. The [tx.validate|transaction-validation logic](/docs/sdk/tx-utils/tx.validate|transaction-validation logic) run will throw an error if the transaction is invalid for any reason, including script errors. The config.throwBuildPhaseScriptErrors default (true) will throw script errors during the build phase, but you can set it to false to defer those errors to the validate phase. Use buildUnsafe to get a transaction with possible Tx.hasValidationError set, and no thrown exception.

buildUnsafe

buildUnsafe(config: TxBuilderFinalConfig): Promise<Tx>
Builds and runs validation logic on the transaction Always returns a built transaction that has been validation-checked. if the throwBuildPhaseScriptErrors option is true, then any script errors found during transaction-building will be thrown, and the full transaction validation is not run. Caller should check Tx.hasValidationError, which will be false or a validation error string, in case any transaction validations are found. Use TxBuilder.build if you want validation errors to be thrown.

config

config: TxBuilderConfig

delegateUnsafe

delegateUnsafe(
  hash: PubKeyHash | StakingValidatorHash<any>,
  poolId: PubKeyHashLike,
  redeemer?: UplcData | LazyRedeemerData<UplcData>
): TxBuilder

delegateWithoutRedeemer

delegateWithoutRedeemer(
  hash: PubKeyHash,
  poolId: PubKeyHashLike
): TxBuilder

delegateWithRedeemer

delegateWithRedeemer<TRedeemer>(
  hash: StakingValidatorHash<StakingContext<any, TRedeemer>>,
  poolId: PubKeyHashLike,
  redeemer: TRedeemer
): TxBuilder

deregisterUnsafe

deregisterUnsafe(
  hash: PubKeyHash | StakingValidatorHash<any>,
  redeemer?: UplcData | LazyRedeemerData<UplcData>
): TxBuilder

deregisterWithoutRedeemer

deregisterWithoutRedeemer(hash: PubKeyHash): TxBuilder

deregisterWithRedeemer

deregisterWithRedeemer<TRedeemer>(
  hash: StakingValidatorHash<StakingContext<any, TRedeemer>>,
  redeemer: TRedeemer
): TxBuilder

hasDatum

hasDatum(data: UplcData): boolean

hasMetadata

hasMetadata(): boolean

hasUplcScripts

hasUplcScripts(): boolean

inputs

inputs: TxInput[]

mintAssetClassUnsafe

mintAssetClassUnsafe(
  assetClass: AssetClass,
  quantity: IntLike,
  redeemer?: UplcData | LazyRedeemerData<UplcData>
): TxBuilder

mintAssetClassWithLazyRedeemer

mintAssetClassWithLazyRedeemer<TRedeemer>(
  assetClass: AssetClass<MintingContext<any, TRedeemer>>,
  quantity: IntLike,
  redeemer: LazyRedeemerData<TRedeemer>
): TxBuilder
Adds minting instructions to the transaction, given a transaction context supporting redeemer transformation

mintAssetClassWithoutRedeemer

mintAssetClassWithoutRedeemer(
  assetClass: AssetClass,
  quantity: IntLike
): TxBuilder
Adds minting instructions to the transaction without a redeemer

mintAssetClassWithRedeemer

mintAssetClassWithRedeemer<TRedeemer>(
  assetClass: AssetClass<MintingContext<any, TRedeemer>>,
  quantity: IntLike,
  redeemer: TRedeemer
): TxBuilder
Adds minting instructions to the transaction, given a transaction context supporting redeemer transformation

mintedTokens

mintedTokens: Assets

mintPolicyTokensUnsafe

mintPolicyTokensUnsafe(
  policy: MintingPolicyHashLike,
  tokens: [BytesLike, IntLike][],
  redeemer?: UplcData | LazyRedeemerData<UplcData>
): TxBuilder
Mint a list of tokens associated with a given MintingPolicyHash. Throws an error if the given MintingPolicyHash was already used in a previous call to mint(). The token names can either by a list of bytes or a hexadecimal string. Also throws an error if the redeemer is undefined, and the minting policy isn't a known NativeScript.

mintPolicyTokensWithoutRedeemer

mintPolicyTokensWithoutRedeemer(
  policy: MintingPolicyHash,
  tokens: [BytesLike, IntLike][]
): TxBuilder
Adds minting instructions to the transaction without a redeemer

mintPolicyTokensWithRedeemer

mintPolicyTokensWithRedeemer<TRedeemer>(
  policy: MintingPolicyHash<MintingContext<any, TRedeemer>>,
  tokens: [BytesLike, IntLike][],
  redeemer: TRedeemer
): TxBuilder
Adds minting instructions to the transaction, given a transaction context supporting redeemer transformation

mintTokenValueWithoutRedeemer

mintTokenValueWithoutRedeemer(token: TokenValue): TxBuilder
Adds minting instructions to the transaction without a redeemer

mintTokenValueWithRedeemer

mintTokenValueWithRedeemer<TRedeemer>(
  token: TokenValue<MintingContext<any, TRedeemer>>,
  redeemer: TRedeemer
): TxBuilder
Adds minting instructions to the transaction, given a transaction context supporting redeemer transformation

outputs

outputs: TxOutput[]

payUnsafe

payUnsafe(
  addr: ShelleyAddressLike,
  value: ValueLike,
  datum?: TxOutputDatum
): TxBuilder

payWithDatum

payWithDatum<TDatum>(
  address: ShelleyAddress<ValidatorHash<DatumPaymentContext<TDatum>>>,
  value: ValueLike,
  datum: TxOutputDatumCastable<TDatum>
): TxBuilder

payWithoutDatum

payWithoutDatum(
  address: ShelleyAddress<PubKeyHash>,
  value: ValueLike
): TxBuilder

refer

refer(utxos: TxInput<any>[]): TxBuilder
Include a reference input

refInputs

refInputs: TxInput[]

reset

reset(): TxBuilder

setMetadataAttribute

setMetadataAttribute(
  key: number,
  value: TxMetadataAttr
): TxBuilder

setMetadataAttributes

setMetadataAttributes(attributes: {[key: number]: TxMetadataAttr}): TxBuilder

signers

signers: PubKeyHash[]

spendUnsafe

spendUnsafe(
  utxos: TxInput<any> | TxInput<any>[],
  redeemer?: UplcData | LazyRedeemerData<UplcData>
): TxBuilder
Add a UTxO instance as an input to the transaction being built. Throws an error if the UTxO is locked at a script address but a redeemer isn't specified (unless the script is a known NativeScript).

spendWithLazyRedeemer

spendWithLazyRedeemer<TRedeemer>(
  utxos: TxInput<ValidatorHash<SpendingContext<any, any, any, TRedeemer>>> | TxInput<ValidatorHash<SpendingContext<any, any, any, TRedeemer>>>[],
  redeemer: LazyRedeemerData<TRedeemer>
): TxBuilder

spendWithoutRedeemer

spendWithoutRedeemer(utxos: TxInput<PubKeyHash>[]): TxBuilder

spendWithRedeemer

spendWithRedeemer<TRedeemer>(
  utxos: TxInput<ValidatorHash<SpendingContext<any, any, any, TRedeemer>>> | TxInput<ValidatorHash<SpendingContext<any, any, any, TRedeemer>>>[],
  redeemer: TRedeemer
): TxBuilder

sumInputAndMintedAssets

sumInputAndMintedAssets(): Assets
Excludes lovelace

sumOutputAssets

sumOutputAssets(): Assets
Excludes lovelace

sumOutputValue

sumOutputValue(): Value

validFromSlot

validFromSlot(slot: IntLike): TxBuilder
Set the start of the valid time range by specifying a slot.

validFromTime

validFromTime(time: TimeLike): TxBuilder
Set the start of the valid time range by specifying a time.

validToSlot

validToSlot(slot: IntLike): TxBuilder
Set the end of the valid time range by specifying a slot.

validToTime

validToTime(time: TimeLike): TxBuilder
Set the end of the valid time range by specifying a time.

withdrawUnsafe

withdrawUnsafe(
  addr: StakingAddressLike,
  lovelace: IntLike,
  redeemer?: UplcData | LazyRedeemerData<UplcData>
): TxBuilder

withdrawWithLazyRedeemer

withdrawWithLazyRedeemer<TRedeemer>(
  addr: StakingAddress<StakingValidatorHash<StakingContext<any, TRedeemer>>>,
  lovelace: IntLike,
  redeemer: LazyRedeemerData<TRedeemer>
): TxBuilder

withdrawWithoutRedeemer

withdrawWithoutRedeemer(
  addr: StakingAddress<PubKeyHash>,
  lovelace: IntLike
): TxBuilder

withdrawWithRedeemer

withdrawWithRedeemer<TRedeemer>(
  addr: StakingAddress<StakingValidatorHash<StakingContext<any, TRedeemer>>>,
  lovelace: IntLike,
  redeemer: TRedeemer
): TxBuilder