Skip to content

Commit a1c33b8

Browse files
committed
feat: integrate meshTxBuilder V2
1 parent 545ed88 commit a1c33b8

2 files changed

Lines changed: 211 additions & 7 deletions

File tree

packages/mesh-transaction/src/mesh-tx-builder-v2/index.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
import type {
22
_MeshTxBuilderV2,
3-
BuilderData,
43
MintRedeemerBuilder,
54
MintScriptBuilder,
65
MintTxOutBuilder,
7-
RefTxIn,
86
SpendDatumBuilder,
97
SpendRedeemerBuilder,
108
SpendScriptBuilder,
119
SpendTxOutBuilder,
12-
Voter,
1310
VoteRedeemerBuilder,
1411
VoteScriptBuilder,
15-
VotingProcedure,
1612
WithdrawRedeemerBuilder,
1713
WithdrawScriptBuilder,
14+
} from "./types";
15+
import {
16+
Asset,
17+
Budget,
18+
BuilderData,
19+
DEFAULT_REDEEMER_BUDGET,
20+
RefTxIn,
21+
Voter,
22+
VotingProcedure,
1823
} from "@meshsdk/common";
19-
import { Asset, Budget, DEFAULT_REDEEMER_BUDGET } from "@meshsdk/common";
20-
import { byteString, conStr0, MeshTxBuilder, MeshTxBuilderOptions } from "@meshsdk/core";
24+
import { MeshTxBuilder, MeshTxBuilderOptions } from "../mesh-tx-builder";
2125

2226
class SpendBuilderImpl
2327
implements
@@ -356,4 +360,4 @@ class TxBuilderV2 extends MeshTxBuilder {
356360

357361
export const MeshTxBuilderV2: new (
358362
options?: MeshTxBuilderOptions,
359-
) => _MeshTxBuilderV2 = TxBuilderV2;
363+
) => _MeshTxBuilderV2 = TxBuilderV2;
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
import { Asset, Budget, BuilderData, RefTxIn, Voter, VotingProcedure } from "@meshsdk/common";
2+
3+
import { MeshTxBuilder } from "../mesh-tx-builder";
4+
5+
// ── Core V2 Builder Interface ──────────────────────────────────────────
6+
7+
export interface _MeshTxBuilderV2
8+
extends Omit<MeshTxBuilder, ScriptMethodsToDrop> {
9+
spendPlutusV1(txHash: string, txIndex: number): SpendScriptBuilder;
10+
spendPlutusV2(txHash: string, txIndex: number): SpendScriptBuilder;
11+
spendPlutusV3(txHash: string, txIndex: number): SpendScriptBuilder;
12+
13+
mintPlutusV1(
14+
quantity: string,
15+
policyId: string,
16+
assetName: string,
17+
): MintScriptBuilder;
18+
mintPlutusV2(
19+
quantity: string,
20+
policyId: string,
21+
assetName: string,
22+
): MintScriptBuilder;
23+
mintPlutusV3(
24+
quantity: string,
25+
policyId: string,
26+
assetName: string,
27+
): MintScriptBuilder;
28+
29+
withdrawPlutusV1(
30+
rewardAddress: string,
31+
amount: string,
32+
): WithdrawScriptBuilder;
33+
withdrawPlutusV2(
34+
rewardAddress: string,
35+
amount: string,
36+
): WithdrawScriptBuilder;
37+
withdrawPlutusV3(
38+
rewardAddress: string,
39+
amount: string,
40+
): WithdrawScriptBuilder;
41+
42+
votePlutusV1(
43+
voter: Voter,
44+
govActionId: RefTxIn,
45+
votingProcedure: VotingProcedure,
46+
): VoteScriptBuilder;
47+
votePlutusV2(
48+
voter: Voter,
49+
govActionId: RefTxIn,
50+
votingProcedure: VotingProcedure,
51+
): VoteScriptBuilder;
52+
votePlutusV3(
53+
voter: Voter,
54+
govActionId: RefTxIn,
55+
votingProcedure: VotingProcedure,
56+
): VoteScriptBuilder;
57+
}
58+
59+
type ScriptMethodsToDrop =
60+
| "spendingPlutusScript"
61+
| "spendingPlutusScriptV1"
62+
| "spendingPlutusScriptV2"
63+
| "spendingPlutusScriptV3"
64+
| "spendingTxInReference"
65+
| "spendingReferenceTxInInlineDatumPresent"
66+
| "spendingReferenceTxInRedeemerValue"
67+
| "mintPlutusScript"
68+
| "mintPlutusScriptV1"
69+
| "mintPlutusScriptV2"
70+
| "mintPlutusScriptV3"
71+
| "mintingScript"
72+
| "mintTxInReference"
73+
| "mintReferenceTxInRedeemerValue"
74+
| "mintRedeemerValue"
75+
| "withdrawalPlutusScript"
76+
| "withdrawalPlutusScriptV1"
77+
| "withdrawalPlutusScriptV2"
78+
| "withdrawalPlutusScriptV3"
79+
| "withdrawalScript"
80+
| "withdrawalTxInReference"
81+
| "withdrawalReferenceTxInRedeemerValue"
82+
| "withdrawalRedeemerValue"
83+
| "votePlutusScript"
84+
| "votePlutusScriptV1"
85+
| "votePlutusScriptV2"
86+
| "votePlutusScriptV3"
87+
| "voteScript"
88+
| "voteTxInReference"
89+
| "voteReferenceTxInRedeemerValue"
90+
| "voteRedeemerValue"
91+
| "txInScript"
92+
| "txInDatumValue"
93+
| "txInInlineDatumPresent"
94+
| "txInRedeemerValue";
95+
96+
// ── Spend Builder Types ────────────────────────────────────────────────
97+
98+
export interface SpendScriptBuilder {
99+
script(scriptCbor: string): SpendRedeemerBuilder;
100+
referenceScript(
101+
refTxHash: string,
102+
refTxIndex: number,
103+
scriptSize?: string,
104+
scriptHash?: string,
105+
): SpendRedeemerBuilder;
106+
}
107+
108+
export interface SpendRedeemerBuilder {
109+
redeemerJson(
110+
redeemer: BuilderData["content"],
111+
exUnits?: Budget,
112+
): SpendTxOutBuilder;
113+
redeemerCbor(
114+
redeemer: BuilderData["content"],
115+
exUnits?: Budget,
116+
): SpendTxOutBuilder;
117+
}
118+
119+
export interface SpendTxOutBuilder {
120+
txOut(address: string, amount: Asset[]): SpendDatumBuilder;
121+
}
122+
123+
export interface SpendDatumBuilder {
124+
datumHash(datumHash: string): _MeshTxBuilderV2;
125+
datumCbor(datumCbor: BuilderData["content"]): _MeshTxBuilderV2;
126+
datumJson(datumJson: BuilderData["content"]): _MeshTxBuilderV2;
127+
}
128+
129+
// ── Mint Builder Types ─────────────────────────────────────────────────
130+
131+
export interface MintScriptBuilder {
132+
script(scriptCbor: string): MintRedeemerBuilder;
133+
referenceScript(
134+
txHash: string,
135+
txIndex: number,
136+
scriptSize?: string,
137+
scriptHash?: string,
138+
): MintRedeemerBuilder;
139+
}
140+
141+
export interface MintRedeemerBuilder {
142+
redeemerJson(
143+
redeemer: BuilderData["content"],
144+
exUnits?: Budget,
145+
): MintTxOutBuilder;
146+
redeemerCbor(
147+
redeemer: BuilderData["content"],
148+
exUnits?: Budget,
149+
): MintTxOutBuilder;
150+
}
151+
152+
export interface MintTxOutBuilder {
153+
txOut(address: string, amount: Asset[]): _MeshTxBuilderV2;
154+
}
155+
156+
// ── Vote Builder Types ─────────────────────────────────────────────────
157+
158+
export interface VoteScriptBuilder {
159+
script(scriptCbor: string): VoteRedeemerBuilder;
160+
referenceScript(
161+
txHash: string,
162+
txIndex: number,
163+
scriptSize?: string,
164+
scriptHash?: string,
165+
): VoteRedeemerBuilder;
166+
}
167+
168+
export interface VoteRedeemerBuilder {
169+
redeemerJson(
170+
redeemer: BuilderData["content"],
171+
exUnits?: Budget,
172+
): _MeshTxBuilderV2;
173+
redeemerCbor(
174+
redeemer: BuilderData["content"],
175+
exUnits?: Budget,
176+
): _MeshTxBuilderV2;
177+
}
178+
179+
// ── Withdrawal Builder Types ───────────────────────────────────────────
180+
181+
export interface WithdrawScriptBuilder {
182+
script(scriptCbor: string): WithdrawRedeemerBuilder;
183+
referenceScript(
184+
txHash: string,
185+
txIndex: number,
186+
scriptSize?: string,
187+
scriptHash?: string,
188+
): WithdrawRedeemerBuilder;
189+
}
190+
191+
export interface WithdrawRedeemerBuilder {
192+
redeemerJson(
193+
redeemer: BuilderData["content"],
194+
exUnits?: Budget,
195+
): _MeshTxBuilderV2;
196+
redeemerCbor(
197+
redeemer: BuilderData["content"],
198+
exUnits?: Budget,
199+
): _MeshTxBuilderV2;
200+
}

0 commit comments

Comments
 (0)