@secondlayer/stacks 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/stacks-02actsrx.cjs.map +2 -2
- package/dist/shared/{stacks-xp9n3r0t.js → stacks-09wa7ewe.js} +108 -108
- package/dist/shared/stacks-09wa7ewe.js.map +15 -0
- package/dist/shared/{stacks-ky14tdf6.cjs → stacks-0nfexv24.cjs} +20 -8
- package/dist/shared/stacks-0nfexv24.cjs.map +14 -0
- package/dist/shared/{stacks-an5k8n4t.cjs → stacks-14pgpkrr.cjs} +82 -73
- package/dist/shared/stacks-14pgpkrr.cjs.map +23 -0
- package/dist/shared/{stacks-v6ja2eh7.cjs → stacks-17sdtaxg.cjs} +106 -102
- package/dist/shared/stacks-17sdtaxg.cjs.map +15 -0
- package/dist/shared/{stacks-96gaxfcf.js → stacks-1s5w4ncf.js} +44 -32
- package/dist/shared/stacks-1s5w4ncf.js.map +17 -0
- package/dist/shared/stacks-24h5k94q.cjs.map +3 -3
- package/dist/shared/{stacks-evnzth1q.cjs → stacks-4vzmhw3q.cjs} +3 -3
- package/dist/shared/stacks-4vzmhw3q.cjs.map +10 -0
- package/dist/shared/{stacks-k9p8m3wf.js → stacks-4x2bcc2k.js} +87 -78
- package/dist/shared/stacks-4x2bcc2k.js.map +23 -0
- package/dist/shared/stacks-5tprhns9.cjs.map +3 -3
- package/dist/shared/stacks-709tra19.js.map +2 -2
- package/dist/shared/{stacks-q79dx28x.js → stacks-70p84bgg.js} +3 -3
- package/dist/shared/stacks-70p84bgg.js.map +10 -0
- package/dist/shared/{stacks-k2p5tv6x.js → stacks-913a2rx7.js} +3 -3
- package/dist/shared/stacks-913a2rx7.js.map +10 -0
- package/dist/shared/{stacks-jrnmh4kc.js → stacks-96d6m1zy.js} +15 -6
- package/dist/shared/stacks-96d6m1zy.js.map +11 -0
- package/dist/shared/stacks-9g0jhab3.cjs.map +2 -2
- package/dist/shared/stacks-dr5en54r.cjs.map +2 -2
- package/dist/shared/stacks-fcaefc5b.cjs.map +2 -2
- package/dist/shared/stacks-gck1sq7h.cjs.map +2 -2
- package/dist/shared/stacks-je937aas.js.map +2 -2
- package/dist/shared/{stacks-k58k970n.js → stacks-kg1npstf.js} +5 -3
- package/dist/shared/stacks-kg1npstf.js.map +10 -0
- package/dist/shared/{stacks-qvg7c24g.cjs → stacks-n98w7g57.cjs} +5 -3
- package/dist/shared/stacks-n98w7g57.cjs.map +10 -0
- package/dist/shared/{stacks-6m1z4j07.js → stacks-nqae5amn.cjs} +74 -160
- package/dist/shared/stacks-nqae5amn.cjs.map +10 -0
- package/dist/shared/stacks-qcae5852.js.map +2 -2
- package/dist/shared/stacks-qt8ehebn.js.map +3 -3
- package/dist/shared/stacks-ra02bpny.cjs.map +3 -3
- package/dist/shared/stacks-rwfgts3s.js.map +2 -2
- package/dist/shared/stacks-s10yb9gz.js.map +2 -2
- package/dist/shared/{stacks-etf219gs.cjs → stacks-s30kkvm8.js} +101 -118
- package/dist/shared/stacks-s30kkvm8.js.map +10 -0
- package/dist/shared/stacks-s7z5q8be.js.map +3 -3
- package/dist/shared/stacks-v9jqcpd4.js.map +2 -2
- package/dist/shared/stacks-vdfag81a.cjs.map +2 -2
- package/dist/shared/{stacks-rg1g0fja.js → stacks-wjem3xw9.js} +21 -9
- package/dist/shared/stacks-wjem3xw9.js.map +14 -0
- package/dist/shared/{stacks-k08tgzyp.cjs → stacks-wyxj879g.cjs} +3 -3
- package/dist/shared/stacks-wyxj879g.cjs.map +13 -0
- package/dist/shared/stacks-y3dh7hv1.js.map +3 -3
- package/dist/shared/{stacks-2ar4prfz.cjs → stacks-y5262j0z.cjs} +14 -5
- package/dist/shared/stacks-y5262j0z.cjs.map +11 -0
- package/dist/shared/stacks-ya3x01yd.cjs.map +2 -2
- package/dist/shared/{stacks-p93g814f.js → stacks-zf7rbpzp.js} +4 -4
- package/dist/shared/stacks-zf7rbpzp.js.map +13 -0
- package/dist/shared/{stacks-61rvzkz1.cjs → stacks-znrb59ce.cjs} +41 -29
- package/dist/shared/stacks-znrb59ce.cjs.map +17 -0
- package/dist/src/accounts/index.cjs +2 -2
- package/dist/src/accounts/index.cjs.map +5 -5
- package/dist/src/accounts/index.js +2 -6
- package/dist/src/accounts/index.js.map +5 -5
- package/dist/src/actions/index.d.cts +29 -29
- package/dist/src/actions/index.d.ts +29 -29
- package/dist/src/actions/index.js +7 -7
- package/dist/src/bns/index.cjs +55 -43
- package/dist/src/bns/index.cjs.map +9 -9
- package/dist/src/bns/index.d.cts +29 -29
- package/dist/src/bns/index.d.ts +29 -29
- package/dist/src/bns/index.js +62 -50
- package/dist/src/bns/index.js.map +9 -9
- package/dist/src/clarity/index.js +4 -4
- package/dist/src/connect/index.cjs +114 -112
- package/dist/src/connect/index.cjs.map +13 -13
- package/dist/src/connect/index.js +114 -112
- package/dist/src/connect/index.js.map +13 -13
- package/dist/src/connect/walletconnect/index.cjs +3 -3
- package/dist/src/connect/walletconnect/index.cjs.map +10 -10
- package/dist/src/connect/walletconnect/index.js +3 -3
- package/dist/src/connect/walletconnect/index.js.map +10 -10
- package/dist/src/index.cjs +108 -2
- package/dist/src/index.cjs.map +19 -15
- package/dist/src/index.d.cts +291 -112
- package/dist/src/index.d.ts +291 -112
- package/dist/src/index.js +122 -9
- package/dist/src/index.js.map +19 -15
- package/dist/src/pox/index.cjs.map +6 -6
- package/dist/src/pox/index.d.cts +29 -29
- package/dist/src/pox/index.d.ts +29 -29
- package/dist/src/pox/index.js +5 -5
- package/dist/src/pox/index.js.map +6 -6
- package/dist/src/stackingdao/index.cjs +31 -6
- package/dist/src/stackingdao/index.cjs.map +6 -6
- package/dist/src/stackingdao/index.d.cts +29 -29
- package/dist/src/stackingdao/index.d.ts +29 -29
- package/dist/src/stackingdao/index.js +37 -12
- package/dist/src/stackingdao/index.js.map +6 -6
- package/dist/src/subscriptions/index.d.cts +29 -29
- package/dist/src/subscriptions/index.d.ts +29 -29
- package/dist/src/tools/btc/index.cjs +130 -0
- package/dist/src/tools/btc/index.cjs.map +10 -0
- package/dist/src/tools/btc/index.d.cts +8 -0
- package/dist/src/tools/btc/index.d.ts +8 -0
- package/dist/src/tools/btc/index.js +89 -0
- package/dist/src/tools/btc/index.js.map +10 -0
- package/dist/src/tools/index.cjs +2470 -0
- package/dist/src/tools/index.cjs.map +61 -0
- package/dist/src/tools/index.d.cts +144 -0
- package/dist/src/tools/index.d.ts +144 -0
- package/dist/src/tools/index.js +2435 -0
- package/dist/src/tools/index.js.map +61 -0
- package/dist/src/transactions/index.js +3 -3
- package/dist/src/triggers/index.cjs +66 -0
- package/dist/src/triggers/index.cjs.map +10 -0
- package/dist/src/triggers/index.d.cts +116 -0
- package/dist/src/triggers/index.d.ts +116 -0
- package/dist/src/triggers/index.js +25 -0
- package/dist/src/triggers/index.js.map +10 -0
- package/dist/src/tx/index.cjs +65 -0
- package/dist/src/tx/index.cjs.map +10 -0
- package/dist/src/tx/index.d.cts +42 -0
- package/dist/src/tx/index.d.ts +42 -0
- package/dist/src/tx/index.js +22 -0
- package/dist/src/tx/index.js.map +10 -0
- package/dist/src/ui/index.cjs +431 -0
- package/dist/src/ui/index.cjs.map +27 -0
- package/dist/src/ui/index.d.cts +107 -0
- package/dist/src/ui/index.d.ts +107 -0
- package/dist/src/ui/index.js +391 -0
- package/dist/src/ui/index.js.map +27 -0
- package/dist/src/ui/schemas.cjs +134 -0
- package/dist/src/ui/schemas.cjs.map +18 -0
- package/dist/src/ui/schemas.d.cts +83 -0
- package/dist/src/ui/schemas.d.ts +83 -0
- package/dist/src/ui/schemas.js +91 -0
- package/dist/src/ui/schemas.js.map +18 -0
- package/dist/src/utils/index.cjs +3 -3
- package/dist/src/utils/index.cjs.map +4 -4
- package/dist/src/utils/index.js +4 -4
- package/dist/src/utils/index.js.map +4 -4
- package/package.json +157 -105
- package/dist/shared/stacks-2ar4prfz.cjs.map +0 -11
- package/dist/shared/stacks-61rvzkz1.cjs.map +0 -17
- package/dist/shared/stacks-6m1z4j07.js.map +0 -10
- package/dist/shared/stacks-96gaxfcf.js.map +0 -17
- package/dist/shared/stacks-an5k8n4t.cjs.map +0 -23
- package/dist/shared/stacks-etf219gs.cjs.map +0 -10
- package/dist/shared/stacks-evnzth1q.cjs.map +0 -10
- package/dist/shared/stacks-jrnmh4kc.js.map +0 -11
- package/dist/shared/stacks-k08tgzyp.cjs.map +0 -13
- package/dist/shared/stacks-k2p5tv6x.js.map +0 -10
- package/dist/shared/stacks-k58k970n.js.map +0 -10
- package/dist/shared/stacks-k9p8m3wf.js.map +0 -23
- package/dist/shared/stacks-ky14tdf6.cjs.map +0 -13
- package/dist/shared/stacks-p93g814f.js.map +0 -13
- package/dist/shared/stacks-q79dx28x.js.map +0 -10
- package/dist/shared/stacks-qvg7c24g.cjs.map +0 -10
- package/dist/shared/stacks-rg1g0fja.js.map +0 -13
- package/dist/shared/stacks-v6ja2eh7.cjs.map +0 -15
- package/dist/shared/stacks-xp9n3r0t.js.map +0 -15
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
// src/actions/public/getBalance.ts
|
|
2
|
-
async function getBalance(client, params) {
|
|
3
|
-
const data = await client.request(`/v2/accounts/${params.address}`, {
|
|
4
|
-
method: "GET"
|
|
5
|
-
});
|
|
6
|
-
return BigInt(data.balance);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
1
|
// src/actions/public/getAccountInfo.ts
|
|
10
2
|
async function getAccountInfo(client, params) {
|
|
11
|
-
const data = await client.request(`/v2/accounts/${params.address}?proof=1`, {
|
|
3
|
+
const data = await client.request(`/v2/accounts/${params.address}?proof=1`, {
|
|
4
|
+
method: "GET"
|
|
5
|
+
});
|
|
12
6
|
return {
|
|
13
7
|
balance: BigInt(data.balance),
|
|
14
8
|
nonce: BigInt(data.nonce),
|
|
@@ -17,13 +11,25 @@ async function getAccountInfo(client, params) {
|
|
|
17
11
|
};
|
|
18
12
|
}
|
|
19
13
|
|
|
14
|
+
// src/actions/public/getBalance.ts
|
|
15
|
+
async function getBalance(client, params) {
|
|
16
|
+
const data = await client.request(`/v2/accounts/${params.address}`, {
|
|
17
|
+
method: "GET"
|
|
18
|
+
});
|
|
19
|
+
return BigInt(data.balance);
|
|
20
|
+
}
|
|
21
|
+
|
|
20
22
|
// src/actions/public/getBlock.ts
|
|
21
23
|
async function getBlock(client, params) {
|
|
22
24
|
if (params?.hash) {
|
|
23
|
-
return client.request(`/extended/v2/blocks/${params.hash}`, {
|
|
25
|
+
return client.request(`/extended/v2/blocks/${params.hash}`, {
|
|
26
|
+
method: "GET"
|
|
27
|
+
});
|
|
24
28
|
}
|
|
25
29
|
if (params?.height !== undefined) {
|
|
26
|
-
return client.request(`/extended/v2/blocks/${params.height}`, {
|
|
30
|
+
return client.request(`/extended/v2/blocks/${params.height}`, {
|
|
31
|
+
method: "GET"
|
|
32
|
+
});
|
|
27
33
|
}
|
|
28
34
|
return client.request("/extended/v2/blocks?limit=1", { method: "GET" });
|
|
29
35
|
}
|
|
@@ -47,7 +53,10 @@ async function multicall(client, params) {
|
|
|
47
53
|
const { calls, allowFailure = true } = params;
|
|
48
54
|
if (allowFailure) {
|
|
49
55
|
const settled = await Promise.allSettled(calls.map((call) => readContract(client, call)));
|
|
50
|
-
return settled.map((r) => r.status === "fulfilled" ? { status: "success", result: r.value } : {
|
|
56
|
+
return settled.map((r) => r.status === "fulfilled" ? { status: "success", result: r.value } : {
|
|
57
|
+
status: "failure",
|
|
58
|
+
error: r.reason instanceof Error ? r.reason : new Error(String(r.reason))
|
|
59
|
+
});
|
|
51
60
|
}
|
|
52
61
|
const results = await Promise.all(calls.map((call) => readContract(client, call)));
|
|
53
62
|
return results;
|
|
@@ -125,65 +134,6 @@ async function simulateTransaction(client, params) {
|
|
|
125
134
|
return { type: "token-transfer", fees };
|
|
126
135
|
}
|
|
127
136
|
|
|
128
|
-
// src/actions/wallet/signTransaction.ts
|
|
129
|
-
async function signTransactionAction(client, params) {
|
|
130
|
-
const account = client.account;
|
|
131
|
-
if (!account)
|
|
132
|
-
throw new Error("Account required");
|
|
133
|
-
if (isProviderAccount(account)) {
|
|
134
|
-
const hex = serializeTransactionHex(params.transaction);
|
|
135
|
-
const result = await account.provider.request("stx_signTransaction", {
|
|
136
|
-
transaction: hex
|
|
137
|
-
});
|
|
138
|
-
return deserializeTransaction(result.transaction);
|
|
139
|
-
}
|
|
140
|
-
const condition = params.transaction.auth.spendingCondition;
|
|
141
|
-
if ("fields" in condition) {
|
|
142
|
-
const publicKeys = params.signers ?? params.transaction._multisig?.publicKeys;
|
|
143
|
-
if (!publicKeys)
|
|
144
|
-
throw new Error("Multi-sig signing requires signers (publicKeys)");
|
|
145
|
-
return signMultiSigWithAccount(params.transaction, account, publicKeys);
|
|
146
|
-
}
|
|
147
|
-
return signTransactionWithAccount(params.transaction, account);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// src/actions/wallet/transferStx.ts
|
|
151
|
-
async function transferStx(client, params) {
|
|
152
|
-
const account = client.account;
|
|
153
|
-
if (!account)
|
|
154
|
-
throw new Error("Account required");
|
|
155
|
-
if (isProviderAccount(account)) {
|
|
156
|
-
const result2 = await account.provider.request("stx_transferStx", {
|
|
157
|
-
recipient: params.to,
|
|
158
|
-
amount: String(params.amount),
|
|
159
|
-
memo: params.memo
|
|
160
|
-
});
|
|
161
|
-
return result2.txid;
|
|
162
|
-
}
|
|
163
|
-
const nonce = params.nonce ?? await getNonce(client, { address: account.address });
|
|
164
|
-
const unsigned = buildTokenTransfer({
|
|
165
|
-
recipient: params.to,
|
|
166
|
-
amount: params.amount,
|
|
167
|
-
memo: params.memo,
|
|
168
|
-
fee: params.fee ?? 0n,
|
|
169
|
-
nonce,
|
|
170
|
-
publicKey: account.publicKey,
|
|
171
|
-
chain: client.chain,
|
|
172
|
-
postConditionMode: params.postConditionMode,
|
|
173
|
-
postConditions: params.postConditions
|
|
174
|
-
});
|
|
175
|
-
if (params.fee === undefined) {
|
|
176
|
-
const estimates = await estimateFee(client, { transaction: unsigned });
|
|
177
|
-
const mid = estimates[1] ?? estimates[0];
|
|
178
|
-
if (mid) {
|
|
179
|
-
unsigned.auth.spendingCondition.fee = BigInt(mid.fee);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
const signed = await signTransactionWithAccount(unsigned, account);
|
|
183
|
-
const result = await sendTransaction(client, { transaction: signed });
|
|
184
|
-
return result.txid;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
137
|
// src/actions/wallet/deployContract.ts
|
|
188
138
|
async function deployContract(client, params) {
|
|
189
139
|
const account = client.account;
|
|
@@ -254,6 +204,28 @@ async function signMessage(client, params) {
|
|
|
254
204
|
return bytesToHex(sigBytes);
|
|
255
205
|
}
|
|
256
206
|
|
|
207
|
+
// src/actions/wallet/signTransaction.ts
|
|
208
|
+
async function signTransactionAction(client, params) {
|
|
209
|
+
const account = client.account;
|
|
210
|
+
if (!account)
|
|
211
|
+
throw new Error("Account required");
|
|
212
|
+
if (isProviderAccount(account)) {
|
|
213
|
+
const hex = serializeTransactionHex(params.transaction);
|
|
214
|
+
const result = await account.provider.request("stx_signTransaction", {
|
|
215
|
+
transaction: hex
|
|
216
|
+
});
|
|
217
|
+
return deserializeTransaction(result.transaction);
|
|
218
|
+
}
|
|
219
|
+
const condition = params.transaction.auth.spendingCondition;
|
|
220
|
+
if ("fields" in condition) {
|
|
221
|
+
const publicKeys = params.signers ?? params.transaction._multisig?.publicKeys;
|
|
222
|
+
if (!publicKeys)
|
|
223
|
+
throw new Error("Multi-sig signing requires signers (publicKeys)");
|
|
224
|
+
return signMultiSigWithAccount(params.transaction, account, publicKeys);
|
|
225
|
+
}
|
|
226
|
+
return signTransactionWithAccount(params.transaction, account);
|
|
227
|
+
}
|
|
228
|
+
|
|
257
229
|
// src/actions/wallet/sponsorTransaction.ts
|
|
258
230
|
async function sponsorTransaction(client, params) {
|
|
259
231
|
const { transaction } = params;
|
|
@@ -287,5 +259,42 @@ async function sponsorTransaction(client, params) {
|
|
|
287
259
|
return signSponsorWithAccount(sponsored, account);
|
|
288
260
|
}
|
|
289
261
|
|
|
290
|
-
|
|
291
|
-
|
|
262
|
+
// src/actions/wallet/transferStx.ts
|
|
263
|
+
async function transferStx(client, params) {
|
|
264
|
+
const account = client.account;
|
|
265
|
+
if (!account)
|
|
266
|
+
throw new Error("Account required");
|
|
267
|
+
if (isProviderAccount(account)) {
|
|
268
|
+
const result2 = await account.provider.request("stx_transferStx", {
|
|
269
|
+
recipient: params.to,
|
|
270
|
+
amount: String(params.amount),
|
|
271
|
+
memo: params.memo
|
|
272
|
+
});
|
|
273
|
+
return result2.txid;
|
|
274
|
+
}
|
|
275
|
+
const nonce = params.nonce ?? await getNonce(client, { address: account.address });
|
|
276
|
+
const unsigned = buildTokenTransfer({
|
|
277
|
+
recipient: params.to,
|
|
278
|
+
amount: params.amount,
|
|
279
|
+
memo: params.memo,
|
|
280
|
+
fee: params.fee ?? 0n,
|
|
281
|
+
nonce,
|
|
282
|
+
publicKey: account.publicKey,
|
|
283
|
+
chain: client.chain,
|
|
284
|
+
postConditionMode: params.postConditionMode,
|
|
285
|
+
postConditions: params.postConditions
|
|
286
|
+
});
|
|
287
|
+
if (params.fee === undefined) {
|
|
288
|
+
const estimates = await estimateFee(client, { transaction: unsigned });
|
|
289
|
+
const mid = estimates[1] ?? estimates[0];
|
|
290
|
+
if (mid) {
|
|
291
|
+
unsigned.auth.spendingCondition.fee = BigInt(mid.fee);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
const signed = await signTransactionWithAccount(unsigned, account);
|
|
295
|
+
const result = await sendTransaction(client, { transaction: signed });
|
|
296
|
+
return result.txid;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
//# debugId=65C97D7D34400C6264756E2164756E21
|
|
300
|
+
//# sourceMappingURL=stacks-14pgpkrr.cjs.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/actions/public/getAccountInfo.ts", "../src/actions/public/getBalance.ts", "../src/actions/public/getBlock.ts", "../src/actions/public/getBlockHeight.ts", "../src/actions/public/getContractAbi.ts", "../src/actions/public/multicall.ts", "../src/errors/simulation.ts", "../src/actions/public/simulateCall.ts", "../src/actions/public/simulateTransaction.ts", "../src/actions/wallet/deployContract.ts", "../src/actions/wallet/signMessage.ts", "../src/actions/wallet/signTransaction.ts", "../src/actions/wallet/sponsorTransaction.ts", "../src/actions/wallet/transferStx.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { Client } from \"../../clients/types.ts\";\n\nexport type GetAccountInfoParams = {\n\taddress: string;\n};\n\nexport type AccountInfo = {\n\tbalance: bigint;\n\tnonce: bigint;\n\tbalanceProof: string;\n\tnonceProof: string;\n};\n\nexport async function getAccountInfo(\n\tclient: Client,\n\tparams: GetAccountInfoParams,\n): Promise<AccountInfo> {\n\tconst data = await client.request(`/v2/accounts/${params.address}?proof=1`, {\n\t\tmethod: \"GET\",\n\t});\n\treturn {\n\t\tbalance: BigInt(data.balance),\n\t\tnonce: BigInt(data.nonce),\n\t\tbalanceProof: data.balance_proof ?? \"\",\n\t\tnonceProof: data.nonce_proof ?? \"\",\n\t};\n}\n",
|
|
6
|
+
"import type { Client } from \"../../clients/types.ts\";\n\nexport type GetBalanceParams = {\n\taddress: string;\n};\n\nexport async function getBalance(\n\tclient: Client,\n\tparams: GetBalanceParams,\n): Promise<bigint> {\n\tconst data = await client.request(`/v2/accounts/${params.address}`, {\n\t\tmethod: \"GET\",\n\t});\n\treturn BigInt(data.balance);\n}\n",
|
|
7
|
+
"import type { Client } from \"../../clients/types.ts\";\n\nexport type GetBlockParams = {\n\theight?: number;\n\thash?: string;\n};\n\nexport async function getBlock(\n\tclient: Client,\n\tparams?: GetBlockParams,\n): Promise<any> {\n\tif (params?.hash) {\n\t\treturn client.request(`/extended/v2/blocks/${params.hash}`, {\n\t\t\tmethod: \"GET\",\n\t\t});\n\t}\n\tif (params?.height !== undefined) {\n\t\treturn client.request(`/extended/v2/blocks/${params.height}`, {\n\t\t\tmethod: \"GET\",\n\t\t});\n\t}\n\t// Latest block\n\treturn client.request(\"/extended/v2/blocks?limit=1\", { method: \"GET\" });\n}\n",
|
|
8
|
+
"import type { Client } from \"../../clients/types.ts\";\n\nexport async function getBlockHeight(client: Client): Promise<number> {\n\tconst data = await client.request(\"/v2/info\", { method: \"GET\" });\n\treturn data.stacks_tip_height;\n}\n",
|
|
9
|
+
"import type { Client } from \"../../clients/types.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\n\nexport type GetContractAbiParams = {\n\tcontract: string; // \"address.name\"\n};\n\nexport async function getContractAbi(\n\tclient: Client,\n\tparams: GetContractAbiParams,\n): Promise<any> {\n\tconst [address, name] = parseContractId(params.contract);\n\treturn client.request(`/v2/contracts/interface/${address}/${name}`, {\n\t\tmethod: \"GET\",\n\t});\n}\n",
|
|
10
|
+
"import type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { Client } from \"../../clients/types.ts\";\nimport { readContract } from \"./readContract.ts\";\n\nexport type MulticallCall = {\n\tcontract: string;\n\tfunctionName: string;\n\targs?: ClarityValue[];\n\tsender?: string;\n};\n\nexport type MulticallParams<TAllowFailure extends boolean = true> = {\n\tcalls: readonly MulticallCall[];\n\tallowFailure?: TAllowFailure;\n};\n\nexport type MulticallSuccessResult = {\n\tstatus: \"success\";\n\tresult: ClarityValue;\n};\nexport type MulticallFailureResult = { status: \"failure\"; error: Error };\n\nexport type MulticallResult<T extends boolean> = T extends true\n\t? (MulticallSuccessResult | MulticallFailureResult)[]\n\t: ClarityValue[];\n\nexport async function multicall<TAllowFailure extends boolean = true>(\n\tclient: Client,\n\tparams: MulticallParams<TAllowFailure>,\n): Promise<MulticallResult<TAllowFailure>> {\n\tconst { calls, allowFailure = true } = params;\n\n\tif (allowFailure) {\n\t\tconst settled = await Promise.allSettled(\n\t\t\tcalls.map((call) => readContract(client, call)),\n\t\t);\n\t\treturn settled.map((r) =>\n\t\t\tr.status === \"fulfilled\"\n\t\t\t\t? { status: \"success\" as const, result: r.value }\n\t\t\t\t: {\n\t\t\t\t\t\tstatus: \"failure\" as const,\n\t\t\t\t\t\terror:\n\t\t\t\t\t\t\tr.reason instanceof Error\n\t\t\t\t\t\t\t\t? r.reason\n\t\t\t\t\t\t\t\t: new Error(String(r.reason)),\n\t\t\t\t\t},\n\t\t) as MulticallResult<TAllowFailure>;\n\t}\n\n\tconst results = await Promise.all(\n\t\tcalls.map((call) => readContract(client, call)),\n\t);\n\treturn results as MulticallResult<TAllowFailure>;\n}\n",
|
|
11
|
+
"import { BaseError } from \"./base.ts\";\n\nexport class SimulationError extends BaseError {\n\toverride name = \"SimulationError\";\n\twritesDetected: boolean;\n\n\tconstructor(\n\t\tmessage: string,\n\t\toptions: { writesDetected: boolean; details?: string },\n\t) {\n\t\tsuper(message, { details: options.details });\n\t\tthis.writesDetected = options.writesDetected;\n\t}\n}\n",
|
|
12
|
+
"import { deserializeCVBytes } from \"../../clarity/deserialize.ts\";\nimport { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { Client } from \"../../clients/types.ts\";\nimport { SimulationError } from \"../../errors/simulation.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport { bytesToHex, with0x } from \"../../utils/encoding.ts\";\n\nexport type SimulateCallParams = {\n\tcontract: string;\n\tfunctionName: string;\n\targs?: ClarityValue[];\n\tsender?: string;\n\ttip?: string;\n};\n\nexport type SimulateCallSuccess = { success: true; result: ClarityValue };\nexport type SimulateCallFailure = { success: false; error: SimulationError };\nexport type SimulateCallResult = SimulateCallSuccess | SimulateCallFailure;\n\nexport async function simulateCall(\n\tclient: Client,\n\tparams: SimulateCallParams,\n): Promise<SimulateCallResult> {\n\tconst [address, name] = parseContractId(params.contract);\n\tconst sender = params.sender ?? address;\n\n\tconst serializedArgs = (params.args ?? []).map((arg) =>\n\t\twith0x(bytesToHex(serializeCVBytes(arg))),\n\t);\n\n\tlet path = `/v2/contracts/call-read/${address}/${name}/${params.functionName}`;\n\tif (params.tip) {\n\t\tpath += `?tip=${params.tip}`;\n\t}\n\n\tconst data = await client.request(path, {\n\t\tmethod: \"POST\",\n\t\tbody: {\n\t\t\tsender,\n\t\t\targuments: serializedArgs,\n\t\t},\n\t});\n\n\tif (data.okay) {\n\t\treturn { success: true, result: deserializeCVBytes(data.result) };\n\t}\n\n\tconst cause: string = data.cause ?? \"Simulation failed\";\n\tconst writesDetected =\n\t\tcause.includes(\"NotReadOnly\") || cause.includes(\"CostBalanceExceeded\");\n\n\treturn {\n\t\tsuccess: false,\n\t\terror: new SimulationError(\n\t\t\twritesDetected\n\t\t\t\t? \"Function mutates state and cannot be simulated\"\n\t\t\t\t: \"Simulation failed\",\n\t\t\t{ writesDetected, details: cause },\n\t\t),\n\t};\n}\n",
|
|
13
|
+
"import type { Client } from \"../../clients/types.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport { AddressHashMode, PayloadType } from \"../../transactions/types.ts\";\nimport { c32address } from \"../../utils/address.ts\";\nimport { type FeeEstimation, estimateFee } from \"./estimateFee.ts\";\nimport { type SimulateCallResult, simulateCall } from \"./simulateCall.ts\";\n\nexport type SimulateTransactionParams = {\n\ttransaction: StacksTransaction;\n\tsender?: string;\n\ttip?: string;\n};\n\nexport type SimulateContractCallResult = {\n\ttype: \"contract-call\";\n\texecution: SimulateCallResult;\n\tfees: FeeEstimation[];\n};\n\nexport type SimulateTransferResult = {\n\ttype: \"token-transfer\";\n\tfees: FeeEstimation[];\n};\n\nexport type SimulateDeployResult = {\n\ttype: \"contract-deploy\";\n\tfees: FeeEstimation[];\n};\n\nexport type SimulateTransactionResult =\n\t| SimulateContractCallResult\n\t| SimulateTransferResult\n\t| SimulateDeployResult;\n\nfunction isMultiSig(hashMode: number): boolean {\n\treturn (\n\t\thashMode === AddressHashMode.P2SH ||\n\t\thashMode === AddressHashMode.P2WSH ||\n\t\thashMode === AddressHashMode.P2SH_NonSequential ||\n\t\thashMode === AddressHashMode.P2WSH_P2SH_NonSequential\n\t);\n}\n\nfunction extractSender(tx: StacksTransaction, client: Client): string {\n\tconst { hashMode, signer } = tx.auth.spendingCondition;\n\tconst chain = client.chain;\n\tconst version = isMultiSig(hashMode)\n\t\t? (chain?.addressVersion.multiSig ?? 20)\n\t\t: (chain?.addressVersion.singleSig ?? 22);\n\treturn c32address(version, signer);\n}\n\nexport async function simulateTransaction(\n\tclient: Client,\n\tparams: SimulateTransactionParams,\n): Promise<SimulateTransactionResult> {\n\tconst { transaction, tip } = params;\n\tconst { payload } = transaction;\n\n\tif (payload.payloadType === PayloadType.ContractCall) {\n\t\tconst sender = params.sender ?? extractSender(transaction, client);\n\t\tconst contract = `${payload.contractAddress}.${payload.contractName}`;\n\n\t\tconst [execution, fees] = await Promise.all([\n\t\t\tsimulateCall(client, {\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: payload.functionName,\n\t\t\t\targs: payload.functionArgs,\n\t\t\t\tsender,\n\t\t\t\ttip,\n\t\t\t}),\n\t\t\testimateFee(client, { transaction }),\n\t\t]);\n\n\t\treturn { type: \"contract-call\", execution, fees };\n\t}\n\n\tconst fees = await estimateFee(client, { transaction });\n\n\tif (\n\t\tpayload.payloadType === PayloadType.SmartContract ||\n\t\tpayload.payloadType === PayloadType.VersionedSmartContract\n\t) {\n\t\treturn { type: \"contract-deploy\", fees };\n\t}\n\n\treturn { type: \"token-transfer\", fees };\n}\n",
|
|
14
|
+
"import type { Client } from \"../../clients/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport { buildContractDeploy } from \"../../transactions/build.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport type { ClarityVersion } from \"../../transactions/types.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { sendTransaction } from \"./sendTransaction.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type DeployContractParams = {\n\tcontractName: string;\n\tcodeBody: string;\n\tclarityVersion?: ClarityVersion;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\n/** Build, sign, and broadcast a contract deploy */\nexport async function deployContract(\n\tclient: Client,\n\tparams: DeployContractParams,\n): Promise<string> {\n\tconst account = client.account;\n\tif (!account) throw new Error(\"Account required\");\n\n\t// Provider: delegate to wallet\n\tif (isProviderAccount(account)) {\n\t\tconst result = await account.provider.request(\"stx_deployContract\", {\n\t\t\tcontractName: params.contractName,\n\t\t\tcodeBody: params.codeBody,\n\t\t\tclarityVersion: params.clarityVersion,\n\t\t});\n\t\treturn result.txid;\n\t}\n\n\t// Local/Custom: build → sign → broadcast\n\tconst nonce =\n\t\tparams.nonce ?? (await getNonce(client, { address: account.address }));\n\n\tconst unsigned = buildContractDeploy({\n\t\tcontractName: params.contractName,\n\t\tcodeBody: params.codeBody,\n\t\tclarityVersion: params.clarityVersion,\n\t\tfee: params.fee ?? 0n,\n\t\tnonce,\n\t\tpublicKey: account.publicKey,\n\t\tchain: client.chain,\n\t\tpostConditionMode: params.postConditionMode,\n\t\tpostConditions: params.postConditions,\n\t});\n\n\tif (params.fee === undefined) {\n\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\tconst mid = estimates[1] ?? estimates[0];\n\t\tif (mid) {\n\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t}\n\t}\n\n\tconst signed = await signTransactionWithAccount(unsigned, account);\n\tconst result = await sendTransaction(client, { transaction: signed });\n\treturn result.txid;\n}\n",
|
|
15
|
+
"import { sha256 } from \"@noble/hashes/sha2.js\";\nimport { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport { Cl } from \"../../clarity/values.ts\";\nimport type { Client } from \"../../clients/types.ts\";\nimport { bytesToHex, concatBytes } from \"../../utils/encoding.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type SignMessageParams = {\n\tmessage: string | ClarityValue;\n\tdomain?: {\n\t\tname: string;\n\t\tversion: string;\n\t\tchainId: number;\n\t};\n};\n\nconst SIP018_PREFIX = new Uint8Array([0x53, 0x49, 0x50, 0x30, 0x31, 0x38]); // \"SIP018\"\n\n/** Sign a structured message per SIP-018 */\nexport async function signMessage(\n\tclient: Client,\n\tparams: SignMessageParams,\n): Promise<string> {\n\tconst account = client.account;\n\tif (!account) throw new Error(\"Account required\");\n\n\t// Provider: delegate to wallet\n\tif (isProviderAccount(account)) {\n\t\tconst method = params.domain\n\t\t\t? \"stx_signStructuredMessage\"\n\t\t\t: \"stx_signMessage\";\n\t\tconst result = await account.provider.request(method, {\n\t\t\tmessage: params.message,\n\t\t\tdomain: params.domain,\n\t\t});\n\t\treturn result.signature;\n\t}\n\n\t// Local/Custom: sign locally\n\tconst cv =\n\t\ttypeof params.message === \"string\"\n\t\t\t? Cl.stringAscii(params.message)\n\t\t\t: params.message;\n\n\tconst serializedMsg = serializeCVBytes(cv);\n\n\tlet hash: Uint8Array;\n\n\tif (params.domain) {\n\t\tconst domainCV = Cl.tuple({\n\t\t\tname: Cl.stringAscii(params.domain.name),\n\t\t\tversion: Cl.stringAscii(params.domain.version),\n\t\t\t\"chain-id\": Cl.uint(params.domain.chainId),\n\t\t});\n\t\tconst serializedDomain = serializeCVBytes(domainCV);\n\t\thash = sha256(concatBytes(SIP018_PREFIX, serializedDomain, serializedMsg));\n\t} else {\n\t\thash = sha256(serializedMsg);\n\t}\n\n\tconst sigBytes = await account.sign(hash);\n\treturn bytesToHex(sigBytes);\n}\n",
|
|
16
|
+
"import type { Client } from \"../../clients/types.ts\";\nimport { signMultiSigWithAccount } from \"../../transactions/multisig.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport { deserializeTransaction } from \"../../transactions/wire/deserialize.ts\";\nimport { serializeTransactionHex } from \"../../transactions/wire/serialize.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type SignTransactionParams = {\n\ttransaction: StacksTransaction;\n\t/** Public keys for multi-sig signing (auto-detected from _multisig metadata if omitted) */\n\tsigners?: string[];\n};\n\n/** Sign a transaction using the client's account */\nexport async function signTransactionAction(\n\tclient: Client,\n\tparams: SignTransactionParams,\n): Promise<StacksTransaction> {\n\tconst account = client.account;\n\tif (!account) throw new Error(\"Account required\");\n\n\t// Provider: send hex to wallet, get signed hex back\n\tif (isProviderAccount(account)) {\n\t\tconst hex = serializeTransactionHex(params.transaction);\n\t\tconst result = await account.provider.request(\"stx_signTransaction\", {\n\t\t\ttransaction: hex,\n\t\t});\n\t\treturn deserializeTransaction(result.transaction);\n\t}\n\n\t// Multi-sig: auto-detect from fields or _multisig metadata\n\tconst condition = params.transaction.auth.spendingCondition;\n\tif (\"fields\" in condition) {\n\t\tconst publicKeys =\n\t\t\tparams.signers ?? (params.transaction as any)._multisig?.publicKeys;\n\t\tif (!publicKeys)\n\t\t\tthrow new Error(\"Multi-sig signing requires signers (publicKeys)\");\n\t\treturn signMultiSigWithAccount(params.transaction, account, publicKeys);\n\t}\n\n\t// Local/Custom: sign with account\n\treturn signTransactionWithAccount(params.transaction, account);\n}\n",
|
|
17
|
+
"import type { Client } from \"../../clients/types.ts\";\nimport { createSingleSigSpendingCondition } from \"../../transactions/authorization.ts\";\nimport { signSponsorWithAccount } from \"../../transactions/signer.ts\";\nimport {\n\tAuthType,\n\ttype SponsoredAuthorization,\n\ttype StacksTransaction,\n} from \"../../transactions/types.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { intToBigInt } from \"../../utils/encoding.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type SponsorTransactionParams = {\n\ttransaction: StacksTransaction;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n};\n\n/** Sponsor a transaction: set sponsor spending condition, sign as sponsor */\nexport async function sponsorTransaction(\n\tclient: Client,\n\tparams: SponsorTransactionParams,\n): Promise<StacksTransaction> {\n\tconst { transaction } = params;\n\n\tif (transaction.auth.authType !== AuthType.Sponsored) {\n\t\tthrow new Error(\"Transaction must have sponsored authorization\");\n\t}\n\n\tconst account = client.account;\n\tif (!account) throw new Error(\"Account required\");\n\tif (isProviderAccount(account)) {\n\t\tthrow new Error(\"Provider accounts cannot sponsor transactions\");\n\t}\n\n\t// Resolve sponsor nonce\n\tconst nonce =\n\t\tparams.nonce != null\n\t\t\t? intToBigInt(params.nonce)\n\t\t\t: await getNonce(client, { address: account.address });\n\n\t// Resolve sponsor fee\n\tlet fee: bigint;\n\tif (params.fee != null) {\n\t\tfee = intToBigInt(params.fee);\n\t} else {\n\t\tconst estimates = await estimateFee(client, { transaction });\n\t\tconst mid = estimates[1] ?? estimates[0];\n\t\tfee = mid ? BigInt(mid.fee) : 0n;\n\t}\n\n\t// Create sponsor spending condition\n\tconst sponsorCondition = createSingleSigSpendingCondition(\n\t\taccount.publicKey,\n\t\tnonce,\n\t\tfee,\n\t);\n\n\t// Set sponsor spending condition on the tx\n\tconst auth = transaction.auth as SponsoredAuthorization;\n\tconst sponsored: StacksTransaction = {\n\t\t...transaction,\n\t\tauth: {\n\t\t\t...auth,\n\t\t\tsponsorSpendingCondition: sponsorCondition,\n\t\t},\n\t};\n\n\t// Sign as sponsor\n\treturn signSponsorWithAccount(sponsored, account);\n}\n",
|
|
18
|
+
"import type { Client } from \"../../clients/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport { buildTokenTransfer } from \"../../transactions/build.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { sendTransaction } from \"./sendTransaction.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type TransferStxParams = {\n\tto: string;\n\tamount: IntegerType;\n\tmemo?: string;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\n/** Build, sign, and broadcast an STX transfer */\nexport async function transferStx(\n\tclient: Client,\n\tparams: TransferStxParams,\n): Promise<string> {\n\tconst account = client.account;\n\tif (!account) throw new Error(\"Account required\");\n\n\t// Provider: delegate to wallet\n\tif (isProviderAccount(account)) {\n\t\tconst result = await account.provider.request(\"stx_transferStx\", {\n\t\t\trecipient: params.to,\n\t\t\tamount: String(params.amount),\n\t\t\tmemo: params.memo,\n\t\t});\n\t\treturn result.txid;\n\t}\n\n\t// Local/Custom: build → sign → broadcast\n\tconst nonce =\n\t\tparams.nonce ?? (await getNonce(client, { address: account.address }));\n\n\tconst unsigned = buildTokenTransfer({\n\t\trecipient: params.to,\n\t\tamount: params.amount,\n\t\tmemo: params.memo,\n\t\tfee: params.fee ?? 0n,\n\t\tnonce,\n\t\tpublicKey: account.publicKey,\n\t\tchain: client.chain,\n\t\tpostConditionMode: params.postConditionMode,\n\t\tpostConditions: params.postConditions,\n\t});\n\n\tif (params.fee === undefined) {\n\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\tconst mid = estimates[1] ?? estimates[0];\n\t\tif (mid) {\n\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t}\n\t}\n\n\tconst signed = await signTransactionWithAccount(unsigned, account);\n\tconst result = await sendTransaction(client, { transaction: signed });\n\treturn result.txid;\n}\n"
|
|
19
|
+
],
|
|
20
|
+
"mappings": "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",
|
|
21
|
+
"debugId": "65C97D7D34400C6264756E2164756E21",
|
|
22
|
+
"names": []
|
|
23
|
+
}
|
|
@@ -262,9 +262,9 @@ function serializeTransactionHex(tx) {
|
|
|
262
262
|
}
|
|
263
263
|
|
|
264
264
|
// src/transactions/authorization.ts
|
|
265
|
-
var import_secp256k1 = require("@noble/secp256k1");
|
|
266
265
|
var import_hmac = require("@noble/hashes/hmac.js");
|
|
267
266
|
var import_sha2 = require("@noble/hashes/sha2.js");
|
|
267
|
+
var import_secp256k1 = require("@noble/secp256k1");
|
|
268
268
|
import_secp256k1.etc.hmacSha256Sync = (key, ...msgs) => {
|
|
269
269
|
const h = import_hmac.hmac.create(import_sha2.sha256, key);
|
|
270
270
|
msgs.forEach((msg) => h.update(msg));
|
|
@@ -416,7 +416,9 @@ function signMultiSig(tx, privateKey, publicKeys) {
|
|
|
416
416
|
if (signerIndex === -1) {
|
|
417
417
|
throw new Error("Private key does not correspond to any signer in the multi-sig");
|
|
418
418
|
}
|
|
419
|
-
const condition = {
|
|
419
|
+
const condition = {
|
|
420
|
+
...tx.auth.spendingCondition
|
|
421
|
+
};
|
|
420
422
|
if (isNonSequential(condition.hashMode)) {
|
|
421
423
|
return signNonSequential(tx, condition, privateKey);
|
|
422
424
|
}
|
|
@@ -491,7 +493,9 @@ async function signMultiSigWithAccount(tx, account, publicKeys) {
|
|
|
491
493
|
if (signerIndex === -1) {
|
|
492
494
|
throw new Error("Account does not correspond to any signer in the multi-sig");
|
|
493
495
|
}
|
|
494
|
-
const condition = {
|
|
496
|
+
const condition = {
|
|
497
|
+
...tx.auth.spendingCondition
|
|
498
|
+
};
|
|
495
499
|
if (isNonSequential(condition.hashMode)) {
|
|
496
500
|
return signNonSequentialWithAccount(tx, condition, account);
|
|
497
501
|
}
|
|
@@ -613,103 +617,6 @@ function combineMultiSigSignatures(baseTx, signedTxs) {
|
|
|
613
617
|
};
|
|
614
618
|
}
|
|
615
619
|
|
|
616
|
-
// src/transactions/signer.ts
|
|
617
|
-
function txid(tx) {
|
|
618
|
-
return txidFromBytes(serializeTransaction(tx));
|
|
619
|
-
}
|
|
620
|
-
function signBegin(tx) {
|
|
621
|
-
const cleared = {
|
|
622
|
-
...tx,
|
|
623
|
-
auth: intoInitialSighashAuth(tx.auth)
|
|
624
|
-
};
|
|
625
|
-
return txid(cleared);
|
|
626
|
-
}
|
|
627
|
-
function signTransaction(tx, privateKey) {
|
|
628
|
-
const sigHash = signBegin(tx);
|
|
629
|
-
const condition = tx.auth.spendingCondition;
|
|
630
|
-
const { nextSig } = nextSignature(sigHash, AuthType.Standard, condition.fee, condition.nonce, privateKey);
|
|
631
|
-
return {
|
|
632
|
-
...tx,
|
|
633
|
-
auth: {
|
|
634
|
-
...tx.auth,
|
|
635
|
-
spendingCondition: {
|
|
636
|
-
...condition,
|
|
637
|
-
signature: nextSig
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
};
|
|
641
|
-
}
|
|
642
|
-
async function signTransactionWithAccount(tx, account) {
|
|
643
|
-
const sigHash = signBegin(tx);
|
|
644
|
-
const condition = tx.auth.spendingCondition;
|
|
645
|
-
const sigHashPre = sigHashPreSign(sigHash, AuthType.Standard, condition.fee, condition.nonce);
|
|
646
|
-
const sigBytes = await account.sign(hexToBytes(sigHashPre));
|
|
647
|
-
const nextSig = bytesToHex(sigBytes);
|
|
648
|
-
return {
|
|
649
|
-
...tx,
|
|
650
|
-
auth: {
|
|
651
|
-
...tx.auth,
|
|
652
|
-
spendingCondition: {
|
|
653
|
-
...condition,
|
|
654
|
-
signature: nextSig
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
};
|
|
658
|
-
}
|
|
659
|
-
function getTransactionId(tx) {
|
|
660
|
-
return txid(tx);
|
|
661
|
-
}
|
|
662
|
-
function getOriginSigHash(tx) {
|
|
663
|
-
const condition = tx.auth.spendingCondition;
|
|
664
|
-
if ("fields" in condition) {
|
|
665
|
-
return replayMultiSigSigHash(tx);
|
|
666
|
-
}
|
|
667
|
-
const initialSigHash2 = signBegin(tx);
|
|
668
|
-
const sc = condition;
|
|
669
|
-
const preSign = sigHashPreSign(initialSigHash2, AuthType.Standard, sc.fee, sc.nonce);
|
|
670
|
-
return sigHashPostSign(preSign, sc.keyEncoding, sc.signature);
|
|
671
|
-
}
|
|
672
|
-
function signSponsor(tx, privateKey) {
|
|
673
|
-
if (tx.auth.authType !== AuthType.Sponsored) {
|
|
674
|
-
throw new Error("Transaction must be sponsored");
|
|
675
|
-
}
|
|
676
|
-
const auth = tx.auth;
|
|
677
|
-
const sponsorCondition = auth.sponsorSpendingCondition;
|
|
678
|
-
const originSigHash = getOriginSigHash(tx);
|
|
679
|
-
const { nextSig } = nextSignature(originSigHash, AuthType.Sponsored, sponsorCondition.fee, sponsorCondition.nonce, privateKey);
|
|
680
|
-
return {
|
|
681
|
-
...tx,
|
|
682
|
-
auth: {
|
|
683
|
-
...auth,
|
|
684
|
-
sponsorSpendingCondition: {
|
|
685
|
-
...sponsorCondition,
|
|
686
|
-
signature: nextSig
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
};
|
|
690
|
-
}
|
|
691
|
-
async function signSponsorWithAccount(tx, account) {
|
|
692
|
-
if (tx.auth.authType !== AuthType.Sponsored) {
|
|
693
|
-
throw new Error("Transaction must be sponsored");
|
|
694
|
-
}
|
|
695
|
-
const auth = tx.auth;
|
|
696
|
-
const sponsorCondition = auth.sponsorSpendingCondition;
|
|
697
|
-
const originSigHash = getOriginSigHash(tx);
|
|
698
|
-
const sigHashPre = sigHashPreSign(originSigHash, AuthType.Sponsored, sponsorCondition.fee, sponsorCondition.nonce);
|
|
699
|
-
const sigBytes = await account.sign(hexToBytes(sigHashPre));
|
|
700
|
-
const nextSig = bytesToHex(sigBytes);
|
|
701
|
-
return {
|
|
702
|
-
...tx,
|
|
703
|
-
auth: {
|
|
704
|
-
...auth,
|
|
705
|
-
sponsorSpendingCondition: {
|
|
706
|
-
...sponsorCondition,
|
|
707
|
-
signature: nextSig
|
|
708
|
-
}
|
|
709
|
-
}
|
|
710
|
-
};
|
|
711
|
-
}
|
|
712
|
-
|
|
713
620
|
// src/transactions/build.ts
|
|
714
621
|
function resolvePcMode(mode) {
|
|
715
622
|
return mode === "allow" ? PostConditionModeWire.Allow : PostConditionModeWire.Deny;
|
|
@@ -858,5 +765,102 @@ function buildContractDeploy(options) {
|
|
|
858
765
|
return tx;
|
|
859
766
|
}
|
|
860
767
|
|
|
861
|
-
|
|
862
|
-
|
|
768
|
+
// src/transactions/signer.ts
|
|
769
|
+
function txid(tx) {
|
|
770
|
+
return txidFromBytes(serializeTransaction(tx));
|
|
771
|
+
}
|
|
772
|
+
function signBegin(tx) {
|
|
773
|
+
const cleared = {
|
|
774
|
+
...tx,
|
|
775
|
+
auth: intoInitialSighashAuth(tx.auth)
|
|
776
|
+
};
|
|
777
|
+
return txid(cleared);
|
|
778
|
+
}
|
|
779
|
+
function signTransaction(tx, privateKey) {
|
|
780
|
+
const sigHash = signBegin(tx);
|
|
781
|
+
const condition = tx.auth.spendingCondition;
|
|
782
|
+
const { nextSig } = nextSignature(sigHash, AuthType.Standard, condition.fee, condition.nonce, privateKey);
|
|
783
|
+
return {
|
|
784
|
+
...tx,
|
|
785
|
+
auth: {
|
|
786
|
+
...tx.auth,
|
|
787
|
+
spendingCondition: {
|
|
788
|
+
...condition,
|
|
789
|
+
signature: nextSig
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
};
|
|
793
|
+
}
|
|
794
|
+
async function signTransactionWithAccount(tx, account) {
|
|
795
|
+
const sigHash = signBegin(tx);
|
|
796
|
+
const condition = tx.auth.spendingCondition;
|
|
797
|
+
const sigHashPre = sigHashPreSign(sigHash, AuthType.Standard, condition.fee, condition.nonce);
|
|
798
|
+
const sigBytes = await account.sign(hexToBytes(sigHashPre));
|
|
799
|
+
const nextSig = bytesToHex(sigBytes);
|
|
800
|
+
return {
|
|
801
|
+
...tx,
|
|
802
|
+
auth: {
|
|
803
|
+
...tx.auth,
|
|
804
|
+
spendingCondition: {
|
|
805
|
+
...condition,
|
|
806
|
+
signature: nextSig
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
};
|
|
810
|
+
}
|
|
811
|
+
function getTransactionId(tx) {
|
|
812
|
+
return txid(tx);
|
|
813
|
+
}
|
|
814
|
+
function getOriginSigHash(tx) {
|
|
815
|
+
const condition = tx.auth.spendingCondition;
|
|
816
|
+
if ("fields" in condition) {
|
|
817
|
+
return replayMultiSigSigHash(tx);
|
|
818
|
+
}
|
|
819
|
+
const initialSigHash2 = signBegin(tx);
|
|
820
|
+
const sc = condition;
|
|
821
|
+
const preSign = sigHashPreSign(initialSigHash2, AuthType.Standard, sc.fee, sc.nonce);
|
|
822
|
+
return sigHashPostSign(preSign, sc.keyEncoding, sc.signature);
|
|
823
|
+
}
|
|
824
|
+
function signSponsor(tx, privateKey) {
|
|
825
|
+
if (tx.auth.authType !== AuthType.Sponsored) {
|
|
826
|
+
throw new Error("Transaction must be sponsored");
|
|
827
|
+
}
|
|
828
|
+
const auth = tx.auth;
|
|
829
|
+
const sponsorCondition = auth.sponsorSpendingCondition;
|
|
830
|
+
const originSigHash = getOriginSigHash(tx);
|
|
831
|
+
const { nextSig } = nextSignature(originSigHash, AuthType.Sponsored, sponsorCondition.fee, sponsorCondition.nonce, privateKey);
|
|
832
|
+
return {
|
|
833
|
+
...tx,
|
|
834
|
+
auth: {
|
|
835
|
+
...auth,
|
|
836
|
+
sponsorSpendingCondition: {
|
|
837
|
+
...sponsorCondition,
|
|
838
|
+
signature: nextSig
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
};
|
|
842
|
+
}
|
|
843
|
+
async function signSponsorWithAccount(tx, account) {
|
|
844
|
+
if (tx.auth.authType !== AuthType.Sponsored) {
|
|
845
|
+
throw new Error("Transaction must be sponsored");
|
|
846
|
+
}
|
|
847
|
+
const auth = tx.auth;
|
|
848
|
+
const sponsorCondition = auth.sponsorSpendingCondition;
|
|
849
|
+
const originSigHash = getOriginSigHash(tx);
|
|
850
|
+
const sigHashPre = sigHashPreSign(originSigHash, AuthType.Sponsored, sponsorCondition.fee, sponsorCondition.nonce);
|
|
851
|
+
const sigBytes = await account.sign(hexToBytes(sigHashPre));
|
|
852
|
+
const nextSig = bytesToHex(sigBytes);
|
|
853
|
+
return {
|
|
854
|
+
...tx,
|
|
855
|
+
auth: {
|
|
856
|
+
...auth,
|
|
857
|
+
sponsorSpendingCondition: {
|
|
858
|
+
...sponsorCondition,
|
|
859
|
+
signature: nextSig
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
};
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
//# debugId=2D9CB03503C2B15F64756E2164756E21
|
|
866
|
+
//# sourceMappingURL=stacks-17sdtaxg.cjs.map
|