Skip to content

Commit 7b3bd76

Browse files
committed
refactor(tx-construction): txOutputBuilder satisfies OutputBuilder interface
Using GenericTxBuilder.buildOutput should give access to all properties of TxOutputBuilder, instead of just OutputBuilder interface.
1 parent e4da0e3 commit 7b3bd76

File tree

3 files changed

+20
-25
lines changed

3 files changed

+20
-25
lines changed

packages/e2e/test/wallet/PersonalWallet/multiAddress.test.ts

+12-16
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,13 @@ describe('PersonalWallet/multiAddress', () => {
6565
);
6666

6767
addressesToBeDiscovered.push(address);
68-
69-
const txOutput = await txBuilder.buildOutput().address(address.address).coin(3_000_000n).build();
70-
txBuilder.addOutput(txOutput);
68+
txBuilder.addOutput(txBuilder.buildOutput().address(address.address).coin(3_000_000n).toTxOut());
7169
}
7270

7371
// Remove duplicates
7472
addressesToBeDiscovered = [...new Set(addressesToBeDiscovered)];
7573

76-
const unsignedTx = txBuilder.build();
77-
78-
const { tx: signedTx } = await unsignedTx.sign();
74+
const { tx: signedTx } = await txBuilder.build().sign();
7975

8076
await wallet.submitTx(signedTx);
8177

@@ -125,17 +121,17 @@ describe('PersonalWallet/multiAddress', () => {
125121
txBuilder = newWallet.wallet.createTxBuilder();
126122

127123
const fundingWalletAddresses = await firstValueFromTimed(wallet.addresses$);
128-
const returnAdaOutput = await txBuilder
129-
.buildOutput()
130-
.address(fundingWalletAddresses[0].address)
131-
.coin(totalBalance.coins - 1_500_000n) // Let's leave some behind for fees.
132-
.build();
133-
134-
txBuilder.addOutput(returnAdaOutput);
135124

136-
const returnAdaUnsignedTx = await txBuilder.build();
137-
138-
const { tx: returnAdaSignedTx } = await returnAdaUnsignedTx.sign();
125+
const { tx: returnAdaSignedTx } = await txBuilder
126+
.addOutput(
127+
txBuilder
128+
.buildOutput()
129+
.address(fundingWalletAddresses[0].address)
130+
.coin(totalBalance.coins - 1_500_000n) // Let's leave some behind for fees.
131+
.toTxOut()
132+
)
133+
.build()
134+
.sign();
139135
await newWallet.wallet.submitTx(returnAdaSignedTx);
140136

141137
// Search chain history to see if the transaction is there.

packages/tx-construction/src/tx-builder/OutputBuilder.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -93,42 +93,42 @@ export class TxOutputBuilder implements OutputBuilder {
9393
return this.#partialOutput;
9494
}
9595

96-
value(value: Cardano.Value): OutputBuilder {
96+
value(value: Cardano.Value): TxOutputBuilder {
9797
this.#partialOutput = { ...this.#partialOutput, value: { ...value } };
9898
return this;
9999
}
100100

101-
coin(coin: Cardano.Lovelace): OutputBuilder {
101+
coin(coin: Cardano.Lovelace): TxOutputBuilder {
102102
this.#partialOutput = { ...this.#partialOutput, value: { ...this.#partialOutput?.value, coins: coin } };
103103
return this;
104104
}
105105

106-
assets(assets: Cardano.TokenMap): OutputBuilder {
106+
assets(assets: Cardano.TokenMap): TxOutputBuilder {
107107
this.#partialOutput = {
108108
...this.#partialOutput,
109109
value: { ...this.#partialOutput?.value, assets }
110110
};
111111
return this;
112112
}
113113

114-
asset(assetId: Cardano.AssetId, quantity: bigint): OutputBuilder {
114+
asset(assetId: Cardano.AssetId, quantity: bigint): TxOutputBuilder {
115115
const assets: Cardano.TokenMap = new Map(this.#partialOutput?.value?.assets);
116116
quantity === 0n ? assets.delete(assetId) : assets.set(assetId, quantity);
117117

118118
return this.assets(assets);
119119
}
120120

121-
address(address: Cardano.PaymentAddress): OutputBuilder {
121+
address(address: Cardano.PaymentAddress): TxOutputBuilder {
122122
this.#partialOutput = { ...this.#partialOutput, address };
123123
return this;
124124
}
125125

126-
datum(datumHash: Hash32ByteBase16): OutputBuilder {
126+
datum(datumHash: Hash32ByteBase16): TxOutputBuilder {
127127
this.#partialOutput = { ...this.#partialOutput, datumHash };
128128
return this;
129129
}
130130

131-
handle(handle: Handle): OutputBuilder {
131+
handle(handle: Handle): TxOutputBuilder {
132132
if (!this.#handleProvider) {
133133
throw new InvalidConfigurationError(TxOutputFailure.MissingHandleProviderError);
134134
}

packages/tx-construction/src/tx-builder/TxBuilder.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import * as Crypto from '@cardano-sdk/crypto';
22
import { Cardano, HandleProvider, HandleResolution } from '@cardano-sdk/core';
33
import { Logger } from 'ts-log';
44
import {
5-
OutputBuilder,
65
OutputBuilderTxOut,
76
PartialTx,
87
PartialTxOut,
@@ -134,7 +133,7 @@ export class GenericTxBuilder implements TxBuilder {
134133
return this;
135134
}
136135

137-
buildOutput(txOut?: PartialTxOut): OutputBuilder {
136+
buildOutput(txOut?: PartialTxOut): TxOutputBuilder {
138137
return new TxOutputBuilder({
139138
handleProvider: this.#handleProvider,
140139
logger: contextLogger(this.#logger, 'outputBuilder'),

0 commit comments

Comments
 (0)