@secondlayer/stacks 2.9.0 → 2.10.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.
Files changed (65) hide show
  1. package/dist/shared/{stacks-1qmx9kt8.js → stacks-0ek3cyt8.js} +3 -3
  2. package/dist/shared/{stacks-53bjdb6p.js → stacks-2dhf79w5.js} +4 -4
  3. package/dist/shared/{stacks-z1j5d6fd.js → stacks-4t2vmp4y.js} +3 -3
  4. package/dist/shared/{stacks-nqae5amn.cjs → stacks-5nskdw7w.cjs} +19 -2
  5. package/dist/shared/stacks-5nskdw7w.cjs.map +10 -0
  6. package/dist/shared/{stacks-8mj5jw77.js → stacks-99ghanwx.js} +10 -4
  7. package/dist/shared/{stacks-8mj5jw77.js.map → stacks-99ghanwx.js.map} +3 -3
  8. package/dist/shared/{stacks-ttbq8emk.js → stacks-9t68zmpn.js} +2 -2
  9. package/dist/shared/{stacks-wqgepfab.js → stacks-e60vrr34.js} +20 -3
  10. package/dist/shared/stacks-e60vrr34.js.map +10 -0
  11. package/dist/shared/{stacks-4trgpb5a.js → stacks-vf0ekgwb.js} +42 -5
  12. package/dist/shared/stacks-vf0ekgwb.js.map +15 -0
  13. package/dist/shared/{stacks-ertyhttt.cjs → stacks-wamwv8q8.cjs} +41 -4
  14. package/dist/shared/stacks-wamwv8q8.cjs.map +15 -0
  15. package/dist/shared/{stacks-vdfag81a.cjs → stacks-xw0j252s.cjs} +8 -2
  16. package/dist/shared/{stacks-vdfag81a.cjs.map → stacks-xw0j252s.cjs.map} +3 -3
  17. package/dist/src/actions/index.d.cts +32 -2
  18. package/dist/src/actions/index.d.ts +32 -2
  19. package/dist/src/actions/index.js +7 -7
  20. package/dist/src/bitcoin/index.cjs +42 -20
  21. package/dist/src/bitcoin/index.cjs.map +5 -5
  22. package/dist/src/bitcoin/index.d.cts +15 -6
  23. package/dist/src/bitcoin/index.d.ts +15 -6
  24. package/dist/src/bitcoin/index.js +42 -20
  25. package/dist/src/bitcoin/index.js.map +5 -5
  26. package/dist/src/bns/index.cjs +4 -16
  27. package/dist/src/bns/index.cjs.map +3 -3
  28. package/dist/src/bns/index.js +10 -21
  29. package/dist/src/bns/index.js.map +3 -3
  30. package/dist/src/index.d.cts +32 -2
  31. package/dist/src/index.d.ts +32 -2
  32. package/dist/src/index.js +6 -6
  33. package/dist/src/postconditions/index.d.cts +14 -2
  34. package/dist/src/postconditions/index.d.ts +14 -2
  35. package/dist/src/pox/index.cjs +2 -6
  36. package/dist/src/pox/index.cjs.map +3 -3
  37. package/dist/src/pox/index.js +8 -11
  38. package/dist/src/pox/index.js.map +3 -3
  39. package/dist/src/sbtc/index.cjs +2 -6
  40. package/dist/src/sbtc/index.cjs.map +3 -3
  41. package/dist/src/sbtc/index.js +8 -11
  42. package/dist/src/sbtc/index.js.map +3 -3
  43. package/dist/src/stackingdao/index.js +4 -4
  44. package/dist/src/tools/index.cjs +45 -7
  45. package/dist/src/tools/index.cjs.map +7 -7
  46. package/dist/src/tools/index.js +45 -7
  47. package/dist/src/tools/index.js.map +7 -7
  48. package/dist/src/transactions/index.cjs +2 -1
  49. package/dist/src/transactions/index.cjs.map +1 -1
  50. package/dist/src/transactions/index.d.cts +35 -3
  51. package/dist/src/transactions/index.d.ts +35 -3
  52. package/dist/src/transactions/index.js +5 -3
  53. package/dist/src/transactions/index.js.map +1 -1
  54. package/dist/src/x402/index.d.cts +19 -1
  55. package/dist/src/x402/index.d.ts +19 -1
  56. package/dist/src/x402/index.js +4 -4
  57. package/package.json +4 -2
  58. package/dist/shared/stacks-4trgpb5a.js.map +0 -15
  59. package/dist/shared/stacks-ertyhttt.cjs.map +0 -15
  60. package/dist/shared/stacks-nqae5amn.cjs.map +0 -10
  61. package/dist/shared/stacks-wqgepfab.js.map +0 -10
  62. /package/dist/shared/{stacks-1qmx9kt8.js.map → stacks-0ek3cyt8.js.map} +0 -0
  63. /package/dist/shared/{stacks-53bjdb6p.js.map → stacks-2dhf79w5.js.map} +0 -0
  64. /package/dist/shared/{stacks-z1j5d6fd.js.map → stacks-4t2vmp4y.js.map} +0 -0
  65. /package/dist/shared/{stacks-ttbq8emk.js.map → stacks-9t68zmpn.js.map} +0 -0
@@ -32,6 +32,7 @@ __export(exports_transactions, {
32
32
  TenureChangeCause: () => TenureChangeCause,
33
33
  RECOVERABLE_ECDSA_SIG_LENGTH_BYTES: () => RECOVERABLE_ECDSA_SIG_LENGTH_BYTES,
34
34
  PubKeyEncoding: () => PubKeyEncoding,
35
+ PoxConditionCode: () => PoxConditionCode,
35
36
  PostConditionPrincipalId: () => PostConditionPrincipalId,
36
37
  PostConditionModeWire: () => PostConditionModeWire,
37
38
  PayloadType: () => PayloadType,
@@ -50,5 +51,5 @@ __export(exports_transactions, {
50
51
  });
51
52
  module.exports = __toCommonJS(exports_transactions);
52
53
 
53
- //# debugId=2AB78B85AA809B4F64756E2164756E21
54
+ //# debugId=D7C9025B29ACC3D364756E2164756E21
54
55
  //# sourceMappingURL=index.cjs.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "2AB78B85AA809B4F64756E2164756E21",
7
+ "debugId": "D7C9025B29ACC3D364756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -83,6 +83,7 @@ declare const ClarityVersion: {
83
83
  readonly Clarity3: 3
84
84
  readonly Clarity4: 4
85
85
  readonly Clarity5: 5
86
+ readonly Clarity6: 6
86
87
  };
87
88
  type ClarityVersion = (typeof ClarityVersion)[keyof typeof ClarityVersion];
88
89
  declare const AnchorMode: {
@@ -121,6 +122,12 @@ declare const NonFungibleConditionCode: {
121
122
  readonly Sends: 0x10
122
123
  readonly DoesNotSend: 0x11
123
124
  };
125
+ declare const PoxConditionCode: {
126
+ readonly WillNotPerform: 0x30
127
+ readonly MayPerform: 0x31
128
+ readonly WillPerform: 0x32
129
+ };
130
+ type PoxConditionCode = (typeof PoxConditionCode)[keyof typeof PoxConditionCode];
124
131
  declare const PostConditionPrincipalId: {
125
132
  readonly Origin: 0x01
126
133
  readonly Standard: 0x02
@@ -130,6 +137,8 @@ declare const AssetType: {
130
137
  readonly STX: 0x00
131
138
  readonly Fungible: 0x01
132
139
  readonly NonFungible: 0x02
140
+ readonly Staking: 0x03
141
+ readonly Pox: 0x04
133
142
  };
134
143
  declare const AuthFieldType: {
135
144
  readonly PublicKeyCompressed: 0x00
@@ -245,7 +254,7 @@ type StacksTransaction = {
245
254
  postConditions: PostConditionWire[]
246
255
  payload: TransactionPayload
247
256
  };
248
- type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire;
257
+ type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire | StakingPostConditionWire | PoxPostConditionWire;
249
258
  type StxPostConditionWire = {
250
259
  type: "stx"
251
260
  principal: PostConditionPrincipalWire
@@ -266,6 +275,17 @@ type NftPostConditionWire = {
266
275
  conditionCode: number
267
276
  assetId: ClarityValue
268
277
  };
278
+ type StakingPostConditionWire = {
279
+ type: "staking"
280
+ principal: PostConditionPrincipalWire
281
+ conditionCode: number
282
+ amount: bigint
283
+ };
284
+ type PoxPostConditionWire = {
285
+ type: "pox"
286
+ principal: PostConditionPrincipalWire
287
+ conditionCode: PoxConditionCode
288
+ };
269
289
  type PostConditionPrincipalWire = {
270
290
  type: "origin"
271
291
  } | {
@@ -388,7 +408,19 @@ type NftPostCondition = {
388
408
  asset: string
389
409
  assetId: ClarityValue
390
410
  };
391
- type PostCondition = StxPostCondition | FtPostCondition | NftPostCondition;
411
+ type StakingPostCondition = {
412
+ type: "staking-postcondition"
413
+ address: string
414
+ condition: FungibleComparator
415
+ amount: string | bigint | number
416
+ };
417
+ type PoxComparator = "will-not-perform" | "may-perform" | "will-perform";
418
+ type PoxPostCondition = {
419
+ type: "pox-postcondition"
420
+ address: string
421
+ condition: PoxComparator
422
+ };
423
+ type PostCondition = StxPostCondition | FtPostCondition | NftPostCondition | StakingPostCondition | PoxPostCondition;
392
424
  type IntegerType = number | string | bigint | Uint8Array;
393
425
  type MultiSigOptions = {
394
426
  publicKeys?: string[]
@@ -454,4 +486,4 @@ declare function signMultiSigWithAccount(tx: StacksTransaction, account: LocalAc
454
486
  declare function finalizeMultiSig(tx: StacksTransaction, publicKeys: string[]): StacksTransaction;
455
487
  /** Combine independently-signed non-sequential multi-sig transactions */
456
488
  declare function combineMultiSigSignatures(baseTx: StacksTransaction, signedTxs: StacksTransaction[]): StacksTransaction;
457
- export { signTransactionWithAccount, signTransaction, signSponsorWithAccount, signSponsor, signMultiSigWithAccount, signMultiSig, signBegin, sigHashPreSign, sigHashPostSign, serializeTransactionHex, serializeTransaction, replayMultiSigSigHash, nextSignature, makeMultiSigAddress, isNonSequential, getTransactionId, getOriginSigHash, finalizeMultiSig, deserializeTransaction, createStandardAuth, createSponsoredAuth, createSingleSigSpendingCondition, createMultiSigSpendingCondition, combineMultiSigSignatures, buildTokenTransfer, buildContractDeploy, buildContractCall, VRF_PROOF_BYTES_LENGTH, TransactionPayload, TransactionAuthField, TokenTransferPayload, TenureChangePayload, TenureChangeCause as TenureChangeCauseType, TenureChangeCause, StandardAuthorization, StacksTransaction, SponsoredAuthorization, SpendingCondition, SmartContractPayload, SingleSigSpendingCondition, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, PubKeyEncoding, PostConditionWire, PostConditionPrincipalId, PostConditionModeWire, PoisonMicroblockPayload, PayloadType, NonFungibleConditionCode, NakamotoCoinbasePayload, MultiSigSpendingCondition, MultiSigHashMode, MICROBLOCK_HEADER_BYTES_LENGTH, MEMO_MAX_LENGTH_BYTES, MAX_STRING_LENGTH_BYTES, FungibleConditionCode, ContractCallPayload, CoinbaseToAltRecipientPayload, CoinbasePayload, ClarityVersion, COINBASE_BYTES_LENGTH, BuildTokenTransferOptions, BuildContractDeployOptions, BuildContractCallOptions, Authorization, AuthType, AuthFieldType, AssetType, AnchorMode, AddressHashMode };
489
+ export { signTransactionWithAccount, signTransaction, signSponsorWithAccount, signSponsor, signMultiSigWithAccount, signMultiSig, signBegin, sigHashPreSign, sigHashPostSign, serializeTransactionHex, serializeTransaction, replayMultiSigSigHash, nextSignature, makeMultiSigAddress, isNonSequential, getTransactionId, getOriginSigHash, finalizeMultiSig, deserializeTransaction, createStandardAuth, createSponsoredAuth, createSingleSigSpendingCondition, createMultiSigSpendingCondition, combineMultiSigSignatures, buildTokenTransfer, buildContractDeploy, buildContractCall, VRF_PROOF_BYTES_LENGTH, TransactionPayload, TransactionAuthField, TokenTransferPayload, TenureChangePayload, TenureChangeCause as TenureChangeCauseType, TenureChangeCause, StxPostConditionWire, StandardAuthorization, StakingPostConditionWire, StacksTransaction, SponsoredAuthorization, SpendingCondition, SmartContractPayload, SingleSigSpendingCondition, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, PubKeyEncoding, PoxPostConditionWire, PoxConditionCode, PostConditionWire, PostConditionPrincipalId, PostConditionModeWire, PoisonMicroblockPayload, PayloadType, NonFungibleConditionCode, NftPostConditionWire, NakamotoCoinbasePayload, MultiSigSpendingCondition, MultiSigHashMode, MICROBLOCK_HEADER_BYTES_LENGTH, MEMO_MAX_LENGTH_BYTES, MAX_STRING_LENGTH_BYTES, FungibleConditionCode, FtPostConditionWire, ContractCallPayload, CoinbaseToAltRecipientPayload, CoinbasePayload, ClarityVersion, COINBASE_BYTES_LENGTH, BuildTokenTransferOptions, BuildContractDeployOptions, BuildContractCallOptions, Authorization, AuthType, AuthFieldType, AssetType, AnchorMode, AddressHashMode };
@@ -83,6 +83,7 @@ declare const ClarityVersion: {
83
83
  readonly Clarity3: 3
84
84
  readonly Clarity4: 4
85
85
  readonly Clarity5: 5
86
+ readonly Clarity6: 6
86
87
  };
87
88
  type ClarityVersion = (typeof ClarityVersion)[keyof typeof ClarityVersion];
88
89
  declare const AnchorMode: {
@@ -121,6 +122,12 @@ declare const NonFungibleConditionCode: {
121
122
  readonly Sends: 0x10
122
123
  readonly DoesNotSend: 0x11
123
124
  };
125
+ declare const PoxConditionCode: {
126
+ readonly WillNotPerform: 0x30
127
+ readonly MayPerform: 0x31
128
+ readonly WillPerform: 0x32
129
+ };
130
+ type PoxConditionCode = (typeof PoxConditionCode)[keyof typeof PoxConditionCode];
124
131
  declare const PostConditionPrincipalId: {
125
132
  readonly Origin: 0x01
126
133
  readonly Standard: 0x02
@@ -130,6 +137,8 @@ declare const AssetType: {
130
137
  readonly STX: 0x00
131
138
  readonly Fungible: 0x01
132
139
  readonly NonFungible: 0x02
140
+ readonly Staking: 0x03
141
+ readonly Pox: 0x04
133
142
  };
134
143
  declare const AuthFieldType: {
135
144
  readonly PublicKeyCompressed: 0x00
@@ -245,7 +254,7 @@ type StacksTransaction = {
245
254
  postConditions: PostConditionWire[]
246
255
  payload: TransactionPayload
247
256
  };
248
- type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire;
257
+ type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire | StakingPostConditionWire | PoxPostConditionWire;
249
258
  type StxPostConditionWire = {
250
259
  type: "stx"
251
260
  principal: PostConditionPrincipalWire
@@ -266,6 +275,17 @@ type NftPostConditionWire = {
266
275
  conditionCode: number
267
276
  assetId: ClarityValue
268
277
  };
278
+ type StakingPostConditionWire = {
279
+ type: "staking"
280
+ principal: PostConditionPrincipalWire
281
+ conditionCode: number
282
+ amount: bigint
283
+ };
284
+ type PoxPostConditionWire = {
285
+ type: "pox"
286
+ principal: PostConditionPrincipalWire
287
+ conditionCode: PoxConditionCode
288
+ };
269
289
  type PostConditionPrincipalWire = {
270
290
  type: "origin"
271
291
  } | {
@@ -388,7 +408,19 @@ type NftPostCondition = {
388
408
  asset: string
389
409
  assetId: ClarityValue
390
410
  };
391
- type PostCondition = StxPostCondition | FtPostCondition | NftPostCondition;
411
+ type StakingPostCondition = {
412
+ type: "staking-postcondition"
413
+ address: string
414
+ condition: FungibleComparator
415
+ amount: string | bigint | number
416
+ };
417
+ type PoxComparator = "will-not-perform" | "may-perform" | "will-perform";
418
+ type PoxPostCondition = {
419
+ type: "pox-postcondition"
420
+ address: string
421
+ condition: PoxComparator
422
+ };
423
+ type PostCondition = StxPostCondition | FtPostCondition | NftPostCondition | StakingPostCondition | PoxPostCondition;
392
424
  type IntegerType = number | string | bigint | Uint8Array;
393
425
  type MultiSigOptions = {
394
426
  publicKeys?: string[]
@@ -454,4 +486,4 @@ declare function signMultiSigWithAccount(tx: StacksTransaction, account: LocalAc
454
486
  declare function finalizeMultiSig(tx: StacksTransaction, publicKeys: string[]): StacksTransaction;
455
487
  /** Combine independently-signed non-sequential multi-sig transactions */
456
488
  declare function combineMultiSigSignatures(baseTx: StacksTransaction, signedTxs: StacksTransaction[]): StacksTransaction;
457
- export { signTransactionWithAccount, signTransaction, signSponsorWithAccount, signSponsor, signMultiSigWithAccount, signMultiSig, signBegin, sigHashPreSign, sigHashPostSign, serializeTransactionHex, serializeTransaction, replayMultiSigSigHash, nextSignature, makeMultiSigAddress, isNonSequential, getTransactionId, getOriginSigHash, finalizeMultiSig, deserializeTransaction, createStandardAuth, createSponsoredAuth, createSingleSigSpendingCondition, createMultiSigSpendingCondition, combineMultiSigSignatures, buildTokenTransfer, buildContractDeploy, buildContractCall, VRF_PROOF_BYTES_LENGTH, TransactionPayload, TransactionAuthField, TokenTransferPayload, TenureChangePayload, TenureChangeCause as TenureChangeCauseType, TenureChangeCause, StandardAuthorization, StacksTransaction, SponsoredAuthorization, SpendingCondition, SmartContractPayload, SingleSigSpendingCondition, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, PubKeyEncoding, PostConditionWire, PostConditionPrincipalId, PostConditionModeWire, PoisonMicroblockPayload, PayloadType, NonFungibleConditionCode, NakamotoCoinbasePayload, MultiSigSpendingCondition, MultiSigHashMode, MICROBLOCK_HEADER_BYTES_LENGTH, MEMO_MAX_LENGTH_BYTES, MAX_STRING_LENGTH_BYTES, FungibleConditionCode, ContractCallPayload, CoinbaseToAltRecipientPayload, CoinbasePayload, ClarityVersion, COINBASE_BYTES_LENGTH, BuildTokenTransferOptions, BuildContractDeployOptions, BuildContractCallOptions, Authorization, AuthType, AuthFieldType, AssetType, AnchorMode, AddressHashMode };
489
+ export { signTransactionWithAccount, signTransaction, signSponsorWithAccount, signSponsor, signMultiSigWithAccount, signMultiSig, signBegin, sigHashPreSign, sigHashPostSign, serializeTransactionHex, serializeTransaction, replayMultiSigSigHash, nextSignature, makeMultiSigAddress, isNonSequential, getTransactionId, getOriginSigHash, finalizeMultiSig, deserializeTransaction, createStandardAuth, createSponsoredAuth, createSingleSigSpendingCondition, createMultiSigSpendingCondition, combineMultiSigSignatures, buildTokenTransfer, buildContractDeploy, buildContractCall, VRF_PROOF_BYTES_LENGTH, TransactionPayload, TransactionAuthField, TokenTransferPayload, TenureChangePayload, TenureChangeCause as TenureChangeCauseType, TenureChangeCause, StxPostConditionWire, StandardAuthorization, StakingPostConditionWire, StacksTransaction, SponsoredAuthorization, SpendingCondition, SmartContractPayload, SingleSigSpendingCondition, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, PubKeyEncoding, PoxPostConditionWire, PoxConditionCode, PostConditionWire, PostConditionPrincipalId, PostConditionModeWire, PoisonMicroblockPayload, PayloadType, NonFungibleConditionCode, NftPostConditionWire, NakamotoCoinbasePayload, MultiSigSpendingCondition, MultiSigHashMode, MICROBLOCK_HEADER_BYTES_LENGTH, MEMO_MAX_LENGTH_BYTES, MAX_STRING_LENGTH_BYTES, FungibleConditionCode, FtPostConditionWire, ContractCallPayload, CoinbaseToAltRecipientPayload, CoinbasePayload, ClarityVersion, COINBASE_BYTES_LENGTH, BuildTokenTransferOptions, BuildContractDeployOptions, BuildContractCallOptions, Authorization, AuthType, AuthFieldType, AssetType, AnchorMode, AddressHashMode };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  deserializeTransaction
3
- } from "../../shared/stacks-wqgepfab.js";
3
+ } from "../../shared/stacks-e60vrr34.js";
4
4
  import {
5
5
  AddressHashMode,
6
6
  AnchorMode,
@@ -17,6 +17,7 @@ import {
17
17
  PayloadType,
18
18
  PostConditionModeWire,
19
19
  PostConditionPrincipalId,
20
+ PoxConditionCode,
20
21
  PubKeyEncoding,
21
22
  RECOVERABLE_ECDSA_SIG_LENGTH_BYTES,
22
23
  TenureChangeCause,
@@ -47,7 +48,7 @@ import {
47
48
  signSponsorWithAccount,
48
49
  signTransaction,
49
50
  signTransactionWithAccount
50
- } from "../../shared/stacks-4trgpb5a.js";
51
+ } from "../../shared/stacks-vf0ekgwb.js";
51
52
  import"../../shared/stacks-0zysn74p.js";
52
53
  import"../../shared/stacks-xxn5ma6g.js";
53
54
  import"../../shared/stacks-6xmk24yw.js";
@@ -85,6 +86,7 @@ export {
85
86
  TenureChangeCause,
86
87
  RECOVERABLE_ECDSA_SIG_LENGTH_BYTES,
87
88
  PubKeyEncoding,
89
+ PoxConditionCode,
88
90
  PostConditionPrincipalId,
89
91
  PostConditionModeWire,
90
92
  PayloadType,
@@ -102,5 +104,5 @@ export {
102
104
  AddressHashMode
103
105
  };
104
106
 
105
- //# debugId=2522E019EAA489F564756E2164756E21
107
+ //# debugId=D406BD773F3E52D364756E2164756E21
106
108
  //# sourceMappingURL=index.js.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "2522E019EAA489F564756E2164756E21",
7
+ "debugId": "D406BD773F3E52D364756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -125,6 +125,7 @@ declare const ClarityVersion: {
125
125
  readonly Clarity3: 3
126
126
  readonly Clarity4: 4
127
127
  readonly Clarity5: 5
128
+ readonly Clarity6: 6
128
129
  };
129
130
  type ClarityVersion = (typeof ClarityVersion)[keyof typeof ClarityVersion];
130
131
  declare const AnchorMode: {
@@ -152,6 +153,12 @@ declare const PubKeyEncoding: {
152
153
  readonly Uncompressed: 0x01
153
154
  };
154
155
  type PubKeyEncoding = (typeof PubKeyEncoding)[keyof typeof PubKeyEncoding];
156
+ declare const PoxConditionCode: {
157
+ readonly WillNotPerform: 0x30
158
+ readonly MayPerform: 0x31
159
+ readonly WillPerform: 0x32
160
+ };
161
+ type PoxConditionCode = (typeof PoxConditionCode)[keyof typeof PoxConditionCode];
155
162
  declare const TenureChangeCause: {
156
163
  readonly BlockFound: 0x00
157
164
  readonly Extended: 0x01
@@ -254,7 +261,7 @@ type StacksTransaction = {
254
261
  postConditions: PostConditionWire[]
255
262
  payload: TransactionPayload
256
263
  };
257
- type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire;
264
+ type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire | StakingPostConditionWire | PoxPostConditionWire;
258
265
  type StxPostConditionWire = {
259
266
  type: "stx"
260
267
  principal: PostConditionPrincipalWire
@@ -275,6 +282,17 @@ type NftPostConditionWire = {
275
282
  conditionCode: number
276
283
  assetId: ClarityValue
277
284
  };
285
+ type StakingPostConditionWire = {
286
+ type: "staking"
287
+ principal: PostConditionPrincipalWire
288
+ conditionCode: number
289
+ amount: bigint
290
+ };
291
+ type PoxPostConditionWire = {
292
+ type: "pox"
293
+ principal: PostConditionPrincipalWire
294
+ conditionCode: PoxConditionCode
295
+ };
278
296
  type PostConditionPrincipalWire = {
279
297
  type: "origin"
280
298
  } | {
@@ -125,6 +125,7 @@ declare const ClarityVersion: {
125
125
  readonly Clarity3: 3
126
126
  readonly Clarity4: 4
127
127
  readonly Clarity5: 5
128
+ readonly Clarity6: 6
128
129
  };
129
130
  type ClarityVersion = (typeof ClarityVersion)[keyof typeof ClarityVersion];
130
131
  declare const AnchorMode: {
@@ -152,6 +153,12 @@ declare const PubKeyEncoding: {
152
153
  readonly Uncompressed: 0x01
153
154
  };
154
155
  type PubKeyEncoding = (typeof PubKeyEncoding)[keyof typeof PubKeyEncoding];
156
+ declare const PoxConditionCode: {
157
+ readonly WillNotPerform: 0x30
158
+ readonly MayPerform: 0x31
159
+ readonly WillPerform: 0x32
160
+ };
161
+ type PoxConditionCode = (typeof PoxConditionCode)[keyof typeof PoxConditionCode];
155
162
  declare const TenureChangeCause: {
156
163
  readonly BlockFound: 0x00
157
164
  readonly Extended: 0x01
@@ -254,7 +261,7 @@ type StacksTransaction = {
254
261
  postConditions: PostConditionWire[]
255
262
  payload: TransactionPayload
256
263
  };
257
- type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire;
264
+ type PostConditionWire = StxPostConditionWire | FtPostConditionWire | NftPostConditionWire | StakingPostConditionWire | PoxPostConditionWire;
258
265
  type StxPostConditionWire = {
259
266
  type: "stx"
260
267
  principal: PostConditionPrincipalWire
@@ -275,6 +282,17 @@ type NftPostConditionWire = {
275
282
  conditionCode: number
276
283
  assetId: ClarityValue
277
284
  };
285
+ type StakingPostConditionWire = {
286
+ type: "staking"
287
+ principal: PostConditionPrincipalWire
288
+ conditionCode: number
289
+ amount: bigint
290
+ };
291
+ type PoxPostConditionWire = {
292
+ type: "pox"
293
+ principal: PostConditionPrincipalWire
294
+ conditionCode: PoxConditionCode
295
+ };
278
296
  type PostConditionPrincipalWire = {
279
297
  type: "origin"
280
298
  } | {
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  sponsorTransaction
3
- } from "../../shared/stacks-1qmx9kt8.js";
3
+ } from "../../shared/stacks-0ek3cyt8.js";
4
4
  import {
5
5
  sendTransaction
6
- } from "../../shared/stacks-ttbq8emk.js";
6
+ } from "../../shared/stacks-9t68zmpn.js";
7
7
  import"../../shared/stacks-709tra19.js";
8
8
  import {
9
9
  Pc
10
10
  } from "../../shared/stacks-a36n7sjz.js";
11
11
  import {
12
12
  deserializeTransaction
13
- } from "../../shared/stacks-wqgepfab.js";
13
+ } from "../../shared/stacks-e60vrr34.js";
14
14
  import {
15
15
  MEMO_MAX_LENGTH_BYTES,
16
16
  buildContractCall,
17
17
  buildTokenTransfer
18
- } from "../../shared/stacks-4trgpb5a.js";
18
+ } from "../../shared/stacks-vf0ekgwb.js";
19
19
  import {
20
20
  Cl
21
21
  } from "../../shared/stacks-0zysn74p.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@secondlayer/stacks",
3
- "version": "2.9.0",
3
+ "version": "2.10.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -110,7 +110,9 @@
110
110
  "require": "./dist/src/x402/index.cjs"
111
111
  }
112
112
  },
113
- "files": ["dist"],
113
+ "files": [
114
+ "dist"
115
+ ],
114
116
  "scripts": {
115
117
  "build": "bunup",
116
118
  "test": "bun test",
@@ -1,15 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/transactions/types.ts", "../src/transactions/wire/serialize.ts", "../src/transactions/authorization.ts", "../src/transactions/multisig.ts", "../src/transactions/build.ts", "../src/transactions/signer.ts"],
4
- "sourcesContent": [
5
- "import type { ClarityValue } from \"../clarity/types.ts\";\n\n// Auth types\nexport const AuthType = {\n\tStandard: 0x04,\n\tSponsored: 0x05,\n} as const;\nexport type AuthType = (typeof AuthType)[keyof typeof AuthType];\n\n// Payload types\nexport const PayloadType = {\n\tTokenTransfer: 0x00,\n\tSmartContract: 0x01,\n\tContractCall: 0x02,\n\tPoisonMicroblock: 0x03,\n\tCoinbase: 0x04,\n\tCoinbaseToAltRecipient: 0x05,\n\tVersionedSmartContract: 0x06,\n\tTenureChange: 0x07,\n\tNakamotoCoinbase: 0x08,\n} as const;\nexport type PayloadType = (typeof PayloadType)[keyof typeof PayloadType];\n\n// Clarity version\nexport const ClarityVersion = {\n\tClarity1: 1,\n\tClarity2: 2,\n\tClarity3: 3,\n\tClarity4: 4,\n\tClarity5: 5,\n} as const;\nexport type ClarityVersion =\n\t(typeof ClarityVersion)[keyof typeof ClarityVersion];\n\n// Anchor mode (deprecated post-Nakamoto, but needed for wire format)\nexport const AnchorMode = {\n\tOnChainOnly: 0x01,\n\tOffChainOnly: 0x02,\n\tAny: 0x03,\n} as const;\nexport type AnchorMode = (typeof AnchorMode)[keyof typeof AnchorMode];\n\n// Post condition mode\nexport const PostConditionModeWire = {\n\tAllow: 0x01,\n\tDeny: 0x02,\n} as const;\nexport type PostConditionModeWire =\n\t(typeof PostConditionModeWire)[keyof typeof PostConditionModeWire];\n\n// Address hash modes\nexport const AddressHashMode = {\n\tP2PKH: 0x00,\n\tP2SH: 0x01,\n\tP2WPKH: 0x02,\n\tP2WSH: 0x03,\n\tP2SH_NonSequential: 0x05, // SIP-027\n\tP2WSH_P2SH_NonSequential: 0x07, // SIP-027\n} as const;\nexport type AddressHashMode =\n\t(typeof AddressHashMode)[keyof typeof AddressHashMode];\n\n// Pub key encoding\nexport const PubKeyEncoding = {\n\tCompressed: 0x00,\n\tUncompressed: 0x01,\n} as const;\nexport type PubKeyEncoding =\n\t(typeof PubKeyEncoding)[keyof typeof PubKeyEncoding];\n\n// Fungible condition codes (wire format)\nexport const FungibleConditionCode = {\n\tEqual: 0x01,\n\tGreater: 0x02,\n\tGreaterEqual: 0x03,\n\tLess: 0x04,\n\tLessEqual: 0x05,\n} as const;\n\n// Non-fungible condition codes (wire format)\nexport const NonFungibleConditionCode = {\n\tSends: 0x10,\n\tDoesNotSend: 0x11,\n} as const;\n\n// Post condition principal types\nexport const PostConditionPrincipalId = {\n\tOrigin: 0x01,\n\tStandard: 0x02,\n\tContract: 0x03,\n} as const;\n\n// Post condition asset types\nexport const AssetType = {\n\tSTX: 0x00,\n\tFungible: 0x01,\n\tNonFungible: 0x02,\n} as const;\n\n// Auth field types\nexport const AuthFieldType = {\n\tPublicKeyCompressed: 0x00,\n\tPublicKeyUncompressed: 0x01,\n\tSignatureCompressed: 0x02,\n\tSignatureUncompressed: 0x03,\n} as const;\n\nexport const RECOVERABLE_ECDSA_SIG_LENGTH_BYTES = 65;\nexport const MEMO_MAX_LENGTH_BYTES = 34;\nexport const MAX_STRING_LENGTH_BYTES = 128;\nexport const COINBASE_BYTES_LENGTH = 32;\nexport const VRF_PROOF_BYTES_LENGTH = 80;\nexport const MICROBLOCK_HEADER_BYTES_LENGTH = 132; // 1 + 2 + 32 + 32 + 65\n\n// Tenure change cause\nexport const TenureChangeCause = {\n\tBlockFound: 0x00,\n\tExtended: 0x01,\n\tExtendedRuntime: 0x02,\n\tExtendedReadCount: 0x03,\n\tExtendedReadLength: 0x04,\n\tExtendedWriteCount: 0x05,\n\tExtendedWriteLength: 0x06,\n} as const;\nexport type TenureChangeCause =\n\t(typeof TenureChangeCause)[keyof typeof TenureChangeCause];\n\n// Token transfer payload\nexport type TokenTransferPayload = {\n\tpayloadType: typeof PayloadType.TokenTransfer;\n\trecipient: ClarityValue; // PrincipalCV\n\tamount: bigint;\n\tmemo: string;\n};\n\n// Contract call payload\nexport type ContractCallPayload = {\n\tpayloadType: typeof PayloadType.ContractCall;\n\tcontractAddress: string;\n\tcontractName: string;\n\tfunctionName: string;\n\tfunctionArgs: ClarityValue[];\n};\n\n// Smart contract deploy payload\nexport type SmartContractPayload = {\n\tpayloadType:\n\t\t| typeof PayloadType.SmartContract\n\t\t| typeof PayloadType.VersionedSmartContract;\n\tclarityVersion?: ClarityVersion;\n\tcontractName: string;\n\tcodeBody: string;\n};\n\n// Coinbase payload (appears in every pre-Nakamoto block)\nexport type CoinbasePayload = {\n\tpayloadType: typeof PayloadType.Coinbase;\n\tcoinbaseBuffer: string; // 32 bytes hex\n};\n\n// Coinbase to alt recipient payload\nexport type CoinbaseToAltRecipientPayload = {\n\tpayloadType: typeof PayloadType.CoinbaseToAltRecipient;\n\tcoinbaseBuffer: string; // 32 bytes hex\n\trecipient: ClarityValue; // PrincipalCV\n};\n\n// Poison microblock payload\nexport type PoisonMicroblockPayload = {\n\tpayloadType: typeof PayloadType.PoisonMicroblock;\n\theader1: string; // 132 bytes hex (raw microblock header)\n\theader2: string; // 132 bytes hex (raw microblock header)\n};\n\n// Tenure change payload (Nakamoto)\nexport type TenureChangePayload = {\n\tpayloadType: typeof PayloadType.TenureChange;\n\ttenureConsensusHash: string; // 20 bytes hex\n\tprevTenureConsensusHash: string; // 20 bytes hex\n\tburnViewConsensusHash: string; // 20 bytes hex\n\tpreviousTenureEnd: string; // 32 bytes hex\n\tpreviousTenureBlocks: number; // u32\n\tcause: TenureChangeCause;\n\tpubkeyHash: string; // 20 bytes hex\n};\n\n// Nakamoto coinbase payload\nexport type NakamotoCoinbasePayload = {\n\tpayloadType: typeof PayloadType.NakamotoCoinbase;\n\tcoinbaseBuffer: string; // 32 bytes hex\n\trecipient: ClarityValue | null; // Optional PrincipalCV\n\tvrfProof: string; // 80 bytes hex\n};\n\nexport type TransactionPayload =\n\t| TokenTransferPayload\n\t| ContractCallPayload\n\t| SmartContractPayload\n\t| CoinbasePayload\n\t| CoinbaseToAltRecipientPayload\n\t| PoisonMicroblockPayload\n\t| TenureChangePayload\n\t| NakamotoCoinbasePayload;\n\n// Spending condition\nexport type SingleSigSpendingCondition = {\n\thashMode: typeof AddressHashMode.P2PKH | typeof AddressHashMode.P2WPKH;\n\tsigner: string; // hash160 hex\n\tnonce: bigint;\n\tfee: bigint;\n\tkeyEncoding: PubKeyEncoding;\n\tsignature: string; // 65-byte recoverable sig hex\n};\n\nexport type TransactionAuthField = {\n\tpubKeyEncoding: PubKeyEncoding;\n\ttype: \"publicKey\" | \"signature\";\n\tdata: string; // hex\n};\n\nexport type MultiSigHashMode =\n\t| typeof AddressHashMode.P2SH\n\t| typeof AddressHashMode.P2WSH\n\t| typeof AddressHashMode.P2SH_NonSequential\n\t| typeof AddressHashMode.P2WSH_P2SH_NonSequential;\n\nexport type MultiSigSpendingCondition = {\n\thashMode: MultiSigHashMode;\n\tsigner: string;\n\tnonce: bigint;\n\tfee: bigint;\n\tfields: TransactionAuthField[];\n\tsignaturesRequired: number;\n};\n\nexport type SpendingCondition =\n\t| SingleSigSpendingCondition\n\t| MultiSigSpendingCondition;\n\nexport type StandardAuthorization = {\n\tauthType: typeof AuthType.Standard;\n\tspendingCondition: SpendingCondition;\n};\n\nexport type SponsoredAuthorization = {\n\tauthType: typeof AuthType.Sponsored;\n\tspendingCondition: SpendingCondition;\n\tsponsorSpendingCondition: SpendingCondition;\n};\n\nexport type Authorization = StandardAuthorization | SponsoredAuthorization;\n\n// Full transaction\nexport type StacksTransaction = {\n\tversion: number;\n\tchainId: number;\n\tauth: Authorization;\n\tanchorMode: AnchorMode;\n\tpostConditionMode: PostConditionModeWire;\n\tpostConditions: PostConditionWire[];\n\tpayload: TransactionPayload;\n};\n\n// Wire post condition types\nexport type PostConditionWire =\n\t| StxPostConditionWire\n\t| FtPostConditionWire\n\t| NftPostConditionWire;\n\nexport type StxPostConditionWire = {\n\ttype: \"stx\";\n\tprincipal: PostConditionPrincipalWire;\n\tconditionCode: number;\n\tamount: bigint;\n};\n\nexport type FtPostConditionWire = {\n\ttype: \"ft\";\n\tprincipal: PostConditionPrincipalWire;\n\tasset: AssetInfoWire;\n\tconditionCode: number;\n\tamount: bigint;\n};\n\nexport type NftPostConditionWire = {\n\ttype: \"nft\";\n\tprincipal: PostConditionPrincipalWire;\n\tasset: AssetInfoWire;\n\tconditionCode: number;\n\tassetId: ClarityValue;\n};\n\nexport type PostConditionPrincipalWire =\n\t| { type: \"origin\" }\n\t| { type: \"standard\"; address: string }\n\t| { type: \"contract\"; address: string; contractName: string };\n\nexport type AssetInfoWire = {\n\taddress: string;\n\tcontractName: string;\n\tassetName: string;\n};\n",
6
- "import { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport { c32addressDecode } from \"../../utils/c32.ts\";\nimport {\n\tasciiToBytes,\n\tbytesToHex,\n\tconcatBytes,\n\thexToBytes,\n\tintToBytes,\n\tintToHex,\n\tutf8ToBytes,\n\twriteUInt8,\n\twriteUInt16BE,\n\twriteUInt32BE,\n} from \"../../utils/encoding.ts\";\nimport {\n\ttype AssetInfoWire,\n\tAssetType,\n\tAuthType,\n\ttype Authorization,\n\ttype CoinbasePayload,\n\ttype CoinbaseToAltRecipientPayload,\n\tMEMO_MAX_LENGTH_BYTES,\n\ttype MultiSigSpendingCondition,\n\ttype NakamotoCoinbasePayload,\n\tPayloadType,\n\ttype PoisonMicroblockPayload,\n\tPostConditionPrincipalId,\n\ttype PostConditionPrincipalWire,\n\ttype PostConditionWire,\n\ttype SingleSigSpendingCondition,\n\ttype SpendingCondition,\n\ttype StacksTransaction,\n\ttype TenureChangePayload as TenureChangePayloadType,\n\ttype TransactionAuthField,\n\ttype TransactionPayload,\n} from \"../types.ts\";\n\n// Address serialization: version (1 byte) + hash160 (20 bytes)\nfunction serializeAddress(c32Address: string): Uint8Array {\n\tconst [version, hash160] = c32addressDecode(c32Address);\n\treturn concatBytes(new Uint8Array([version]), hexToBytes(hash160));\n}\n\n// LP string: length prefix (n bytes) + content bytes\nfunction serializeLPString(str: string, prefixBytes = 1): Uint8Array {\n\tconst content = utf8ToBytes(str);\n\tconst prefix = hexToBytes(intToHex(content.byteLength, prefixBytes));\n\treturn concatBytes(prefix, content);\n}\n\n// LP string for code body (4-byte prefix)\nfunction serializeLPStringLong(str: string): Uint8Array {\n\treturn serializeLPString(str, 4);\n}\n\n// Memo: flat 34-byte field (no length prefix) per SIP-005\nfunction serializeMemo(memo: string): Uint8Array {\n\tconst content = asciiToBytes(memo);\n\tconst padded = new Uint8Array(MEMO_MAX_LENGTH_BYTES);\n\tpadded.set(content.slice(0, MEMO_MAX_LENGTH_BYTES));\n\treturn padded;\n}\n\nfunction serializeSpendingCondition(condition: SpendingCondition): Uint8Array {\n\tconst parts: Uint8Array[] = [\n\t\twriteUInt8(condition.hashMode),\n\t\thexToBytes(condition.signer), // 20 bytes\n\t\tintToBytes(condition.nonce, 8),\n\t\tintToBytes(condition.fee, 8),\n\t];\n\n\tif (\"signature\" in condition) {\n\t\t// Single sig\n\t\tconst sc = condition as SingleSigSpendingCondition;\n\t\tparts.push(writeUInt8(sc.keyEncoding));\n\t\tparts.push(hexToBytes(sc.signature)); // 65 bytes\n\t} else {\n\t\t// Multi sig\n\t\tconst mc = condition as MultiSigSpendingCondition;\n\t\t// Fields as LP list\n\t\tparts.push(writeUInt32BE(mc.fields.length));\n\t\tfor (const field of mc.fields) {\n\t\t\tparts.push(serializeAuthField(field));\n\t\t}\n\t\tparts.push(writeUInt16BE(mc.signaturesRequired));\n\t}\n\n\treturn concatBytes(...parts);\n}\n\nfunction serializeAuthField(field: TransactionAuthField): Uint8Array {\n\tif (field.type === \"publicKey\") {\n\t\tconst typeId = field.pubKeyEncoding === 0x00 ? 0x00 : 0x01;\n\t\treturn concatBytes(writeUInt8(typeId), hexToBytes(field.data));\n\t}\n\tconst typeId = field.pubKeyEncoding === 0x00 ? 0x02 : 0x03;\n\treturn concatBytes(writeUInt8(typeId), hexToBytes(field.data));\n}\n\nfunction serializeAuthorization(auth: Authorization): Uint8Array {\n\tconst parts: Uint8Array[] = [writeUInt8(auth.authType)];\n\tparts.push(serializeSpendingCondition(auth.spendingCondition));\n\tif (auth.authType === AuthType.Sponsored) {\n\t\tparts.push(serializeSpendingCondition(auth.sponsorSpendingCondition));\n\t}\n\treturn concatBytes(...parts);\n}\n\nfunction serializePrincipal(principal: PostConditionPrincipalWire): Uint8Array {\n\tswitch (principal.type) {\n\t\tcase \"origin\":\n\t\t\treturn writeUInt8(PostConditionPrincipalId.Origin);\n\t\tcase \"standard\":\n\t\t\treturn concatBytes(\n\t\t\t\twriteUInt8(PostConditionPrincipalId.Standard),\n\t\t\t\tserializeAddress(principal.address),\n\t\t\t);\n\t\tcase \"contract\":\n\t\t\treturn concatBytes(\n\t\t\t\twriteUInt8(PostConditionPrincipalId.Contract),\n\t\t\t\tserializeAddress(principal.address),\n\t\t\t\tserializeLPString(principal.contractName),\n\t\t\t);\n\t}\n}\n\nfunction serializeAssetInfo(asset: AssetInfoWire): Uint8Array {\n\treturn concatBytes(\n\t\tserializeAddress(asset.address),\n\t\tserializeLPString(asset.contractName),\n\t\tserializeLPString(asset.assetName),\n\t);\n}\n\nfunction serializePostCondition(pc: PostConditionWire): Uint8Array {\n\t// Wire order: asset_type first, then principal (per SIP-005)\n\tconst parts: Uint8Array[] = [];\n\n\tswitch (pc.type) {\n\t\tcase \"stx\":\n\t\t\tparts.push(writeUInt8(AssetType.STX));\n\t\t\tparts.push(serializePrincipal(pc.principal));\n\t\t\tparts.push(writeUInt8(pc.conditionCode));\n\t\t\tparts.push(intToBytes(pc.amount, 8));\n\t\t\tbreak;\n\t\tcase \"ft\":\n\t\t\tparts.push(writeUInt8(AssetType.Fungible));\n\t\t\tparts.push(serializePrincipal(pc.principal));\n\t\t\tparts.push(serializeAssetInfo(pc.asset));\n\t\t\tparts.push(writeUInt8(pc.conditionCode));\n\t\t\tparts.push(intToBytes(pc.amount, 8));\n\t\t\tbreak;\n\t\tcase \"nft\":\n\t\t\tparts.push(writeUInt8(AssetType.NonFungible));\n\t\t\tparts.push(serializePrincipal(pc.principal));\n\t\t\tparts.push(serializeAssetInfo(pc.asset));\n\t\t\tparts.push(serializeCVBytes(pc.assetId));\n\t\t\tparts.push(writeUInt8(pc.conditionCode));\n\t\t\tbreak;\n\t}\n\n\treturn concatBytes(...parts);\n}\n\nfunction serializePostConditions(pcs: PostConditionWire[]): Uint8Array {\n\tconst parts: Uint8Array[] = [writeUInt32BE(pcs.length)];\n\tfor (const pc of pcs) {\n\t\tparts.push(serializePostCondition(pc));\n\t}\n\treturn concatBytes(...parts);\n}\n\nexport function serializePayload(payload: TransactionPayload): Uint8Array {\n\tconst parts: Uint8Array[] = [writeUInt8(payload.payloadType)];\n\n\tswitch (payload.payloadType) {\n\t\tcase PayloadType.TokenTransfer:\n\t\t\tparts.push(serializeCVBytes(payload.recipient));\n\t\t\tparts.push(intToBytes(payload.amount, 8));\n\t\t\tparts.push(serializeMemo(payload.memo));\n\t\t\tbreak;\n\n\t\tcase PayloadType.ContractCall:\n\t\t\tparts.push(serializeAddress(payload.contractAddress));\n\t\t\tparts.push(serializeLPString(payload.contractName));\n\t\t\tparts.push(serializeLPString(payload.functionName));\n\t\t\tparts.push(writeUInt32BE(payload.functionArgs.length));\n\t\t\tfor (const arg of payload.functionArgs) {\n\t\t\t\tparts.push(serializeCVBytes(arg));\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase PayloadType.SmartContract:\n\t\t\tparts.push(serializeLPString(payload.contractName));\n\t\t\tparts.push(serializeLPStringLong(payload.codeBody));\n\t\t\tbreak;\n\n\t\tcase PayloadType.VersionedSmartContract:\n\t\t\tparts.push(writeUInt8(payload.clarityVersion ?? 2));\n\t\t\tparts.push(serializeLPString(payload.contractName));\n\t\t\tparts.push(serializeLPStringLong(payload.codeBody));\n\t\t\tbreak;\n\n\t\tcase PayloadType.Coinbase:\n\t\t\tparts.push(hexToBytes((payload as CoinbasePayload).coinbaseBuffer));\n\t\t\tbreak;\n\n\t\tcase PayloadType.CoinbaseToAltRecipient: {\n\t\t\tconst cbAlt = payload as CoinbaseToAltRecipientPayload;\n\t\t\tparts.push(hexToBytes(cbAlt.coinbaseBuffer));\n\t\t\tparts.push(serializeCVBytes(cbAlt.recipient));\n\t\t\tbreak;\n\t\t}\n\n\t\tcase PayloadType.PoisonMicroblock: {\n\t\t\tconst pm = payload as PoisonMicroblockPayload;\n\t\t\tparts.push(hexToBytes(pm.header1));\n\t\t\tparts.push(hexToBytes(pm.header2));\n\t\t\tbreak;\n\t\t}\n\n\t\tcase PayloadType.TenureChange: {\n\t\t\tconst tc = payload as TenureChangePayloadType;\n\t\t\tparts.push(hexToBytes(tc.tenureConsensusHash));\n\t\t\tparts.push(hexToBytes(tc.prevTenureConsensusHash));\n\t\t\tparts.push(hexToBytes(tc.burnViewConsensusHash));\n\t\t\tparts.push(hexToBytes(tc.previousTenureEnd));\n\t\t\tparts.push(writeUInt32BE(tc.previousTenureBlocks));\n\t\t\tparts.push(writeUInt8(tc.cause));\n\t\t\tparts.push(hexToBytes(tc.pubkeyHash));\n\t\t\tbreak;\n\t\t}\n\n\t\tcase PayloadType.NakamotoCoinbase: {\n\t\t\tconst nc = payload as NakamotoCoinbasePayload;\n\t\t\tparts.push(hexToBytes(nc.coinbaseBuffer));\n\t\t\tif (nc.recipient) {\n\t\t\t\tparts.push(serializeCVBytes({ type: \"some\", value: nc.recipient }));\n\t\t\t} else {\n\t\t\t\tparts.push(serializeCVBytes({ type: \"none\" }));\n\t\t\t}\n\t\t\tparts.push(hexToBytes(nc.vrfProof));\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn concatBytes(...parts);\n}\n\nexport function serializeTransaction(tx: StacksTransaction): Uint8Array {\n\treturn concatBytes(\n\t\twriteUInt8(tx.version),\n\t\twriteUInt32BE(tx.chainId),\n\t\tserializeAuthorization(tx.auth),\n\t\twriteUInt8(tx.anchorMode),\n\t\twriteUInt8(tx.postConditionMode),\n\t\tserializePostConditions(tx.postConditions),\n\t\tserializePayload(tx.payload),\n\t);\n}\n\nexport function serializeTransactionHex(tx: StacksTransaction): string {\n\treturn bytesToHex(serializeTransaction(tx));\n}\n",
7
- "import { hmac } from \"@noble/hashes/hmac.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { etc, getPublicKey as nobleGetPublicKey, sign } from \"@noble/secp256k1\";\nimport {\n\tbytesToHex,\n\tconcatBytes,\n\thexToBytes,\n\tintToBytes,\n\tintToHex,\n} from \"../utils/encoding.ts\";\nimport { hashP2PKH, txidFromBytes } from \"../utils/hash.ts\";\nimport {\n\tAddressHashMode,\n\tAuthType,\n\ttype Authorization,\n\tPubKeyEncoding,\n\tRECOVERABLE_ECDSA_SIG_LENGTH_BYTES,\n\ttype SingleSigSpendingCondition,\n\ttype SpendingCondition,\n\ttype SponsoredAuthorization,\n\ttype StandardAuthorization,\n} from \"./types.ts\";\n\n// Ensure sync signing is available\netc.hmacSha256Sync = (key: Uint8Array, ...msgs: Uint8Array[]) => {\n\tconst h = hmac.create(sha256, key);\n\tfor (const msg of msgs) h.update(msg);\n\treturn h.digest();\n};\n\nconst EMPTY_SIG = bytesToHex(\n\tnew Uint8Array(RECOVERABLE_ECDSA_SIG_LENGTH_BYTES),\n);\n\nexport function createSingleSigSpendingCondition(\n\tpublicKey: string,\n\tnonce: bigint,\n\tfee: bigint,\n): SingleSigSpendingCondition {\n\tconst pubKeyBytes = hexToBytes(publicKey);\n\tconst signer = hashP2PKH(pubKeyBytes);\n\tconst isCompressed = pubKeyBytes.length === 33;\n\n\treturn {\n\t\thashMode: AddressHashMode.P2PKH,\n\t\tsigner,\n\t\tnonce,\n\t\tfee,\n\t\tkeyEncoding: isCompressed\n\t\t\t? PubKeyEncoding.Compressed\n\t\t\t: PubKeyEncoding.Uncompressed,\n\t\tsignature: EMPTY_SIG,\n\t};\n}\n\nexport function createStandardAuth(\n\tspendingCondition: SpendingCondition,\n): StandardAuthorization {\n\treturn { authType: AuthType.Standard, spendingCondition };\n}\n\nexport function createSponsoredAuth(\n\tspendingCondition: SpendingCondition,\n\tsponsorSpendingCondition?: SpendingCondition,\n): SponsoredAuthorization {\n\treturn {\n\t\tauthType: AuthType.Sponsored,\n\t\tspendingCondition,\n\t\tsponsorSpendingCondition:\n\t\t\tsponsorSpendingCondition ??\n\t\t\tcreateSingleSigSpendingCondition(\"0\".repeat(66), 0n, 0n),\n\t};\n}\n\nfunction clearCondition(condition: SpendingCondition): SpendingCondition {\n\tif (\"signature\" in condition) {\n\t\treturn {\n\t\t\t...condition,\n\t\t\tnonce: 0n,\n\t\t\tfee: 0n,\n\t\t\tsignature: EMPTY_SIG,\n\t\t};\n\t}\n\treturn {\n\t\t...condition,\n\t\tnonce: 0n,\n\t\tfee: 0n,\n\t\tfields: [],\n\t};\n}\n\n/**\n * The sponsor \"signing sentinel\" used in the initial sighash of a sponsored tx.\n * Its `signer` MUST be 20 zero bytes (an empty address hash160) — NOT the\n * hash160 of a zero public key. Matching the reference (`newInitialSigHash` in\n * @stacks/transactions) is load-bearing: this exact byte layout is folded into\n * the origin's sighash, so any deviation makes the origin signature invalid and\n * the node rejects the tx with `SignatureValidation`.\n */\nfunction sponsorSigningSentinel(): SingleSigSpendingCondition {\n\treturn {\n\t\thashMode: AddressHashMode.P2PKH,\n\t\tsigner: \"00\".repeat(20),\n\t\tnonce: 0n,\n\t\tfee: 0n,\n\t\tkeyEncoding: PubKeyEncoding.Compressed,\n\t\tsignature: EMPTY_SIG,\n\t};\n}\n\nexport function intoInitialSighashAuth(auth: Authorization): Authorization {\n\tif (auth.authType === AuthType.Standard) {\n\t\treturn createStandardAuth(clearCondition(auth.spendingCondition));\n\t}\n\treturn createSponsoredAuth(\n\t\tclearCondition(auth.spendingCondition),\n\t\tsponsorSigningSentinel(),\n\t);\n}\n\n/** Compute pre-sign sighash = sha512/256(prevSigHash + authType + fee + nonce) */\nexport function sigHashPreSign(\n\tcurSigHash: string,\n\tauthType: number,\n\tfee: bigint,\n\tnonce: bigint,\n): string {\n\tconst data = concatBytes(\n\t\thexToBytes(curSigHash),\n\t\tnew Uint8Array([authType]),\n\t\tintToBytes(fee, 8),\n\t\tintToBytes(nonce, 8),\n\t);\n\treturn txidFromBytes(data);\n}\n\n/** Compute post-sign sighash = sha512/256(preSigHash + pubKeyEncoding + signature) */\nexport function sigHashPostSign(\n\tcurSigHash: string,\n\tpubKeyEncoding: number,\n\tsignature: string,\n): string {\n\tconst data = concatBytes(\n\t\thexToBytes(curSigHash),\n\t\tnew Uint8Array([pubKeyEncoding]),\n\t\thexToBytes(signature),\n\t);\n\treturn txidFromBytes(data);\n}\n\n/** Sign with private key and return VRS signature (recoveryId + r + s) */\nfunction signWithKey(privateKey: string, messageHash: string): string {\n\tconst keyBytes = hexToBytes(privateKey).slice(0, 32);\n\tconst sig = sign(messageHash, keyBytes, { lowS: true });\n\tconst recoveryIdHex = intToHex(sig.recovery, 1);\n\treturn recoveryIdHex + sig.toCompactHex();\n}\n\nexport function nextSignature(\n\tcurSigHash: string,\n\tauthType: number,\n\tfee: bigint,\n\tnonce: bigint,\n\tprivateKey: string,\n): { nextSig: string; nextSigHash: string } {\n\tconst sigHashPre = sigHashPreSign(curSigHash, authType, fee, nonce);\n\n\tconst keyBytes = hexToBytes(privateKey).slice(0, 32);\n\tconst pubKey = nobleGetPublicKey(keyBytes, true);\n\tconst isCompressed = pubKey.length === 33;\n\tconst pubKeyEncoding = isCompressed\n\t\t? PubKeyEncoding.Compressed\n\t\t: PubKeyEncoding.Uncompressed;\n\n\tconst nextSig = signWithKey(privateKey, sigHashPre);\n\tconst nextSigHash = sigHashPostSign(sigHashPre, pubKeyEncoding, nextSig);\n\n\treturn { nextSig, nextSigHash };\n}\n",
8
- "import {\n\tgetPublicKey as nobleGetPublicKey,\n\tsign as nobleSign,\n} from \"@noble/secp256k1\";\nimport type { CustomAccount, LocalAccount } from \"../accounts/types.ts\";\nimport type { StacksChain } from \"../chains/types.ts\";\nimport { c32address } from \"../utils/c32.ts\";\nimport {\n\tbytesToHex,\n\tconcatBytes,\n\thexToBytes,\n\tintToHex,\n} from \"../utils/encoding.ts\";\nimport { hash160 } from \"../utils/hash.ts\";\nimport { txidFromBytes } from \"../utils/hash.ts\";\nimport {\n\tintoInitialSighashAuth,\n\tnextSignature,\n\tsigHashPostSign,\n\tsigHashPreSign,\n} from \"./authorization.ts\";\nimport {\n\tAddressHashMode,\n\tAuthType,\n\ttype MultiSigHashMode,\n\ttype MultiSigSpendingCondition,\n\tPubKeyEncoding,\n\ttype StacksTransaction,\n\ttype TransactionAuthField,\n} from \"./types.ts\";\nimport { serializeTransaction } from \"./wire/serialize.ts\";\n\n// OP codes for redeem script\nconst OP_CHECKMULTISIG = 0xae;\n\n/** Check if hash mode is non-sequential (SIP-027) */\nexport function isNonSequential(hashMode: number): boolean {\n\treturn (hashMode & 0x04) !== 0;\n}\n\n/** Build a Bitcoin-style redeem script for m-of-n multi-sig */\nfunction makeRedeemScript(\n\tpublicKeys: string[],\n\tsignaturesRequired: number,\n): Uint8Array {\n\tconst parts: Uint8Array[] = [];\n\tparts.push(new Uint8Array([0x50 + signaturesRequired])); // OP_n\n\tfor (const pk of publicKeys) {\n\t\tconst pkBytes = hexToBytes(pk);\n\t\tparts.push(new Uint8Array([pkBytes.length])); // length prefix (0x21 for compressed)\n\t\tparts.push(pkBytes);\n\t}\n\tparts.push(new Uint8Array([0x50 + publicKeys.length])); // OP_m\n\tparts.push(new Uint8Array([OP_CHECKMULTISIG]));\n\treturn concatBytes(...parts);\n}\n\n/** Derive a multi-sig address from public keys */\nexport function makeMultiSigAddress(\n\tpublicKeys: string[],\n\tsignaturesRequired: number,\n\tchain?: StacksChain,\n): string {\n\tif (signaturesRequired < 1 || signaturesRequired > publicKeys.length) {\n\t\tthrow new Error(\n\t\t\t`signaturesRequired must be between 1 and ${publicKeys.length}`,\n\t\t);\n\t}\n\tconst redeemScript = makeRedeemScript(publicKeys, signaturesRequired);\n\tconst signer = hash160(redeemScript);\n\tconst version = chain?.addressVersion?.multiSig ?? 20; // mainnet default\n\treturn c32address(version, bytesToHex(signer));\n}\n\n/** Create an empty multi-sig spending condition */\nexport function createMultiSigSpendingCondition(\n\tpublicKeys: string[],\n\tsignaturesRequired: number,\n\tnonce: bigint,\n\tfee: bigint,\n\thashMode: MultiSigHashMode = AddressHashMode.P2SH,\n): MultiSigSpendingCondition {\n\tconst redeemScript = makeRedeemScript(publicKeys, signaturesRequired);\n\tconst signer = bytesToHex(hash160(redeemScript));\n\n\treturn {\n\t\thashMode,\n\t\tsigner,\n\t\tnonce,\n\t\tfee,\n\t\tfields: [],\n\t\tsignaturesRequired,\n\t};\n}\n\n/** Compute the initial sighash for a transaction (same as signBegin) */\nfunction initialSigHash(tx: StacksTransaction): string {\n\tconst cleared: StacksTransaction = {\n\t\t...tx,\n\t\tauth: intoInitialSighashAuth(tx.auth),\n\t};\n\treturn txidFromBytes(serializeTransaction(cleared));\n}\n\n/** Compute the presign-sighash used by all non-sequential signers */\nfunction nonSequentialPreSignHash(tx: StacksTransaction): string {\n\tconst condition = tx.auth.spendingCondition as MultiSigSpendingCondition;\n\tconst initHash = initialSigHash(tx);\n\treturn sigHashPreSign(\n\t\tinitHash,\n\t\tAuthType.Standard,\n\t\tcondition.fee,\n\t\tcondition.nonce,\n\t);\n}\n\n/** Replay sighash through existing auth fields of a multi-sig tx */\nexport function replayMultiSigSigHash(tx: StacksTransaction): string {\n\tconst condition = tx.auth.spendingCondition as MultiSigSpendingCondition;\n\n\t// Non-sequential: all signers sign the same presign-sighash, no field chaining\n\tif (isNonSequential(condition.hashMode)) {\n\t\tconst preSign = nonSequentialPreSignHash(tx);\n\t\t// Chain through all fields to get the final sighash\n\t\tlet curSigHash = preSign;\n\t\tfor (const field of condition.fields) {\n\t\t\tcurSigHash = sigHashPostSign(\n\t\t\t\tcurSigHash,\n\t\t\t\tfield.pubKeyEncoding,\n\t\t\t\tfield.data,\n\t\t\t);\n\t\t}\n\t\treturn curSigHash;\n\t}\n\n\t// Sequential: chain through all fields\n\tlet curSigHash = initialSigHash(tx);\n\tfor (const field of condition.fields) {\n\t\tconst preSign = sigHashPreSign(\n\t\t\tcurSigHash,\n\t\t\tAuthType.Standard,\n\t\t\tcondition.fee,\n\t\t\tcondition.nonce,\n\t\t);\n\t\tcurSigHash = sigHashPostSign(preSign, field.pubKeyEncoding, field.data);\n\t}\n\treturn curSigHash;\n}\n\n/** Sign one position of a multi-sig transaction with a private key */\nexport function signMultiSig(\n\ttx: StacksTransaction,\n\tprivateKey: string,\n\tpublicKeys: string[],\n): StacksTransaction {\n\tconst keyBytes = hexToBytes(privateKey).slice(0, 32);\n\tconst signerPubKey = bytesToHex(nobleGetPublicKey(keyBytes, true));\n\n\tconst signerIndex = publicKeys.findIndex((pk) => pk === signerPubKey);\n\tif (signerIndex === -1) {\n\t\tthrow new Error(\n\t\t\t\"Private key does not correspond to any signer in the multi-sig\",\n\t\t);\n\t}\n\n\tconst condition = {\n\t\t...(tx.auth.spendingCondition as MultiSigSpendingCondition),\n\t};\n\n\t// Non-sequential: all signers sign the same presign-sighash independently\n\tif (isNonSequential(condition.hashMode)) {\n\t\treturn signNonSequential(tx, condition, privateKey);\n\t}\n\n\t// Sequential: existing P2SH behavior\n\treturn signSequential(tx, condition, privateKey, publicKeys, signerIndex);\n}\n\n/** Non-sequential signing: compute presign-sighash from initial tx, sign, append */\nfunction signNonSequential(\n\ttx: StacksTransaction,\n\tcondition: MultiSigSpendingCondition,\n\tprivateKey: string,\n): StacksTransaction {\n\tconst fields = [...condition.fields];\n\tconst preSignHash = nonSequentialPreSignHash(tx);\n\n\t// Sign the presign-sighash directly\n\tconst keyBytes = hexToBytes(privateKey).slice(0, 32);\n\tconst sig = nobleSign(preSignHash, keyBytes, { lowS: true });\n\tconst recoveryIdHex = intToHex(sig.recovery, 1);\n\tconst nextSig = recoveryIdHex + sig.toCompactHex();\n\n\tfields.push({\n\t\ttype: \"signature\",\n\t\tpubKeyEncoding: PubKeyEncoding.Compressed,\n\t\tdata: nextSig,\n\t});\n\n\tconst newCondition: MultiSigSpendingCondition = { ...condition, fields };\n\tconst sigCount = fields.filter((f) => f.type === \"signature\").length;\n\n\t// Auto-finalize: non-sequential needs no pubkey gap-filling\n\tif (sigCount >= condition.signaturesRequired) {\n\t\treturn {\n\t\t\t...tx,\n\t\t\tauth: { ...tx.auth, spendingCondition: newCondition },\n\t\t};\n\t}\n\n\treturn {\n\t\t...tx,\n\t\tauth: { ...tx.auth, spendingCondition: newCondition },\n\t};\n}\n\n/** Sequential signing: existing P2SH behavior */\nfunction signSequential(\n\ttx: StacksTransaction,\n\tcondition: MultiSigSpendingCondition,\n\tprivateKey: string,\n\tpublicKeys: string[],\n\tsignerIndex: number,\n): StacksTransaction {\n\tconst fields = [...condition.fields];\n\n\t// Replay sighash through existing fields\n\tlet curSigHash = initialSigHash(tx);\n\tfor (const field of fields) {\n\t\tconst preSign = sigHashPreSign(\n\t\t\tcurSigHash,\n\t\t\tAuthType.Standard,\n\t\t\tcondition.fee,\n\t\t\tcondition.nonce,\n\t\t);\n\t\tcurSigHash = sigHashPostSign(preSign, field.pubKeyEncoding, field.data);\n\t}\n\n\t// Fill intervening positions with pubkey fields\n\tfor (let i = fields.length; i < signerIndex; i++) {\n\t\tconst pubKeyField: TransactionAuthField = {\n\t\t\ttype: \"publicKey\",\n\t\t\tpubKeyEncoding: PubKeyEncoding.Compressed,\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tdata: publicKeys[i]!,\n\t\t};\n\t\tfields.push(pubKeyField);\n\t\tconst preSign = sigHashPreSign(\n\t\t\tcurSigHash,\n\t\t\tAuthType.Standard,\n\t\t\tcondition.fee,\n\t\t\tcondition.nonce,\n\t\t);\n\t\tcurSigHash = sigHashPostSign(\n\t\t\tpreSign,\n\t\t\tpubKeyField.pubKeyEncoding,\n\t\t\tpubKeyField.data,\n\t\t);\n\t}\n\n\t// Sign at signerIndex\n\tconst { nextSig, nextSigHash } = nextSignature(\n\t\tcurSigHash,\n\t\tAuthType.Standard,\n\t\tcondition.fee,\n\t\tcondition.nonce,\n\t\tprivateKey,\n\t);\n\n\tfields.push({\n\t\ttype: \"signature\",\n\t\tpubKeyEncoding: PubKeyEncoding.Compressed,\n\t\tdata: nextSig,\n\t});\n\tcurSigHash = nextSigHash;\n\n\tconst newCondition: MultiSigSpendingCondition = { ...condition, fields };\n\n\t// Count signatures so far\n\tconst sigCount = fields.filter((f) => f.type === \"signature\").length;\n\tlet finalCondition = newCondition;\n\n\t// Auto-finalize if enough signatures collected\n\tif (sigCount >= condition.signaturesRequired) {\n\t\tfinalCondition = finalizeMultiSigCondition(\n\t\t\tnewCondition,\n\t\t\tpublicKeys,\n\t\t\tcurSigHash,\n\t\t);\n\t}\n\n\treturn {\n\t\t...tx,\n\t\tauth: {\n\t\t\t...tx.auth,\n\t\t\tspendingCondition: finalCondition,\n\t\t},\n\t};\n}\n\n/** Sign one position of a multi-sig transaction with an account */\nexport async function signMultiSigWithAccount(\n\ttx: StacksTransaction,\n\taccount: LocalAccount | CustomAccount,\n\tpublicKeys: string[],\n): Promise<StacksTransaction> {\n\tconst signerPubKey = account.publicKey;\n\n\tconst signerIndex = publicKeys.findIndex((pk) => pk === signerPubKey);\n\tif (signerIndex === -1) {\n\t\tthrow new Error(\n\t\t\t\"Account does not correspond to any signer in the multi-sig\",\n\t\t);\n\t}\n\n\tconst condition = {\n\t\t...(tx.auth.spendingCondition as MultiSigSpendingCondition),\n\t};\n\n\t// Non-sequential: all signers sign the same presign-sighash independently\n\tif (isNonSequential(condition.hashMode)) {\n\t\treturn signNonSequentialWithAccount(tx, condition, account);\n\t}\n\n\t// Sequential: existing behavior\n\treturn signSequentialWithAccount(\n\t\ttx,\n\t\tcondition,\n\t\taccount,\n\t\tpublicKeys,\n\t\tsignerIndex,\n\t);\n}\n\n/** Non-sequential signing with account */\nasync function signNonSequentialWithAccount(\n\ttx: StacksTransaction,\n\tcondition: MultiSigSpendingCondition,\n\taccount: LocalAccount | CustomAccount,\n): Promise<StacksTransaction> {\n\tconst fields = [...condition.fields];\n\tconst preSignHash = nonSequentialPreSignHash(tx);\n\n\tconst sigBytes = await account.sign(hexToBytes(preSignHash));\n\tconst nextSig = bytesToHex(sigBytes);\n\n\tfields.push({\n\t\ttype: \"signature\",\n\t\tpubKeyEncoding: PubKeyEncoding.Compressed,\n\t\tdata: nextSig,\n\t});\n\n\tconst newCondition: MultiSigSpendingCondition = { ...condition, fields };\n\n\treturn {\n\t\t...tx,\n\t\tauth: { ...tx.auth, spendingCondition: newCondition },\n\t};\n}\n\n/** Sequential signing with account */\nasync function signSequentialWithAccount(\n\ttx: StacksTransaction,\n\tcondition: MultiSigSpendingCondition,\n\taccount: LocalAccount | CustomAccount,\n\tpublicKeys: string[],\n\tsignerIndex: number,\n): Promise<StacksTransaction> {\n\tconst fields = [...condition.fields];\n\n\t// Replay sighash through existing fields\n\tlet curSigHash = initialSigHash(tx);\n\tfor (const field of fields) {\n\t\tconst preSign = sigHashPreSign(\n\t\t\tcurSigHash,\n\t\t\tAuthType.Standard,\n\t\t\tcondition.fee,\n\t\t\tcondition.nonce,\n\t\t);\n\t\tcurSigHash = sigHashPostSign(preSign, field.pubKeyEncoding, field.data);\n\t}\n\n\t// Fill intervening positions with pubkey fields\n\tfor (let i = fields.length; i < signerIndex; i++) {\n\t\tconst pubKeyField: TransactionAuthField = {\n\t\t\ttype: \"publicKey\",\n\t\t\tpubKeyEncoding: PubKeyEncoding.Compressed,\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tdata: publicKeys[i]!,\n\t\t};\n\t\tfields.push(pubKeyField);\n\t\tconst preSign = sigHashPreSign(\n\t\t\tcurSigHash,\n\t\t\tAuthType.Standard,\n\t\t\tcondition.fee,\n\t\t\tcondition.nonce,\n\t\t);\n\t\tcurSigHash = sigHashPostSign(\n\t\t\tpreSign,\n\t\t\tpubKeyField.pubKeyEncoding,\n\t\t\tpubKeyField.data,\n\t\t);\n\t}\n\n\t// Sign at signerIndex\n\tconst preSign = sigHashPreSign(\n\t\tcurSigHash,\n\t\tAuthType.Standard,\n\t\tcondition.fee,\n\t\tcondition.nonce,\n\t);\n\tconst sigBytes = await account.sign(hexToBytes(preSign));\n\tconst nextSig = bytesToHex(sigBytes);\n\tconst nextSigHash = sigHashPostSign(\n\t\tpreSign,\n\t\tPubKeyEncoding.Compressed,\n\t\tnextSig,\n\t);\n\n\tfields.push({\n\t\ttype: \"signature\",\n\t\tpubKeyEncoding: PubKeyEncoding.Compressed,\n\t\tdata: nextSig,\n\t});\n\tcurSigHash = nextSigHash;\n\n\tconst newCondition: MultiSigSpendingCondition = { ...condition, fields };\n\n\t// Count signatures so far\n\tconst sigCount = fields.filter((f) => f.type === \"signature\").length;\n\tlet finalCondition = newCondition;\n\n\t// Auto-finalize if enough signatures collected\n\tif (sigCount >= condition.signaturesRequired) {\n\t\tfinalCondition = finalizeMultiSigCondition(\n\t\t\tnewCondition,\n\t\t\tpublicKeys,\n\t\t\tcurSigHash,\n\t\t);\n\t}\n\n\treturn {\n\t\t...tx,\n\t\tauth: {\n\t\t\t...tx.auth,\n\t\t\tspendingCondition: finalCondition,\n\t\t},\n\t};\n}\n\n/** Fill remaining slots with pubkey fields after all signatures are collected */\nexport function finalizeMultiSig(\n\ttx: StacksTransaction,\n\tpublicKeys: string[],\n): StacksTransaction {\n\tconst condition = tx.auth.spendingCondition as MultiSigSpendingCondition;\n\n\t// Non-sequential: no pubkey gap-filling needed\n\tif (isNonSequential(condition.hashMode)) {\n\t\treturn tx;\n\t}\n\n\tconst curSigHash = replayMultiSigSigHash(tx);\n\tconst finalCondition = finalizeMultiSigCondition(\n\t\tcondition,\n\t\tpublicKeys,\n\t\tcurSigHash,\n\t);\n\n\treturn {\n\t\t...tx,\n\t\tauth: {\n\t\t\t...tx.auth,\n\t\t\tspendingCondition: finalCondition,\n\t\t},\n\t};\n}\n\n/** Internal: finalize remaining pubkey slots (sequential only) */\nfunction finalizeMultiSigCondition(\n\tcondition: MultiSigSpendingCondition,\n\tpublicKeys: string[],\n\tcurSigHash: string,\n): MultiSigSpendingCondition {\n\tconst fields = [...condition.fields];\n\tlet sigHash = curSigHash;\n\n\t// Fill remaining positions\n\tfor (let i = fields.length; i < publicKeys.length; i++) {\n\t\tconst pubKeyField: TransactionAuthField = {\n\t\t\ttype: \"publicKey\",\n\t\t\tpubKeyEncoding: PubKeyEncoding.Compressed,\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tdata: publicKeys[i]!,\n\t\t};\n\t\tfields.push(pubKeyField);\n\t\tconst preSign = sigHashPreSign(\n\t\t\tsigHash,\n\t\t\tAuthType.Standard,\n\t\t\tcondition.fee,\n\t\t\tcondition.nonce,\n\t\t);\n\t\tsigHash = sigHashPostSign(\n\t\t\tpreSign,\n\t\t\tpubKeyField.pubKeyEncoding,\n\t\t\tpubKeyField.data,\n\t\t);\n\t}\n\n\treturn { ...condition, fields };\n}\n\n/** Combine independently-signed non-sequential multi-sig transactions */\nexport function combineMultiSigSignatures(\n\tbaseTx: StacksTransaction,\n\tsignedTxs: StacksTransaction[],\n): StacksTransaction {\n\tconst condition = baseTx.auth.spendingCondition as MultiSigSpendingCondition;\n\n\tif (!isNonSequential(condition.hashMode)) {\n\t\tthrow new Error(\n\t\t\t\"combineMultiSigSignatures only works with non-sequential hash modes (SIP-027)\",\n\t\t);\n\t}\n\n\t// Collect all signature fields from each signed tx\n\tconst seenSigs = new Set<string>();\n\tconst signatures: TransactionAuthField[] = [];\n\n\tfor (const stx of signedTxs) {\n\t\tconst stxCondition = stx.auth\n\t\t\t.spendingCondition as MultiSigSpendingCondition;\n\t\tfor (const field of stxCondition.fields) {\n\t\t\tif (field.type === \"signature\" && !seenSigs.has(field.data)) {\n\t\t\t\tseenSigs.add(field.data);\n\t\t\t\tsignatures.push(field);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (signatures.length === 0) {\n\t\tthrow new Error(\"No signatures found in the provided transactions\");\n\t}\n\n\tconst newCondition: MultiSigSpendingCondition = {\n\t\t...condition,\n\t\tfields: signatures,\n\t};\n\n\treturn {\n\t\t...baseTx,\n\t\tauth: { ...baseTx.auth, spendingCondition: newCondition },\n\t};\n}\n",
9
- "import type { StacksChain } from \"../chains/types.ts\";\nimport type { ClarityValue } from \"../clarity/types.ts\";\nimport { Cl } from \"../clarity/values.ts\";\nimport type { PostCondition } from \"../postconditions/types.ts\";\nimport { parseContractId } from \"../utils/address.ts\";\nimport { type IntegerType, intToBigInt } from \"../utils/encoding.ts\";\nimport {\n\tcreateSingleSigSpendingCondition,\n\tcreateSponsoredAuth,\n\tcreateStandardAuth,\n} from \"./authorization.ts\";\nimport { createMultiSigSpendingCondition } from \"./multisig.ts\";\nimport type { MultiSigHashMode, SpendingCondition } from \"./types.ts\";\nimport {\n\tAnchorMode,\n\ttype ClarityVersion,\n\tFungibleConditionCode,\n\tNonFungibleConditionCode,\n\tPayloadType,\n\tPostConditionModeWire,\n\ttype PostConditionPrincipalWire,\n\ttype PostConditionWire,\n\ttype StacksTransaction,\n} from \"./types.ts\";\n\ntype MultiSigOptions = {\n\tpublicKeys?: string[];\n\tsignaturesRequired?: number;\n\thashMode?: MultiSigHashMode;\n};\n\nexport type BuildTokenTransferOptions = MultiSigOptions & {\n\trecipient: string;\n\tamount: IntegerType;\n\tmemo?: string;\n\tfee: IntegerType;\n\tnonce: IntegerType;\n\tpublicKey?: string;\n\tchain?: StacksChain;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n\tsponsored?: boolean;\n};\n\nexport type BuildContractCallOptions = MultiSigOptions & {\n\tcontractAddress: string;\n\tcontractName: string;\n\tfunctionName: string;\n\tfunctionArgs: ClarityValue[];\n\tfee: IntegerType;\n\tnonce: IntegerType;\n\tpublicKey?: string;\n\tchain?: StacksChain;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n\tsponsored?: boolean;\n};\n\nexport type BuildContractDeployOptions = MultiSigOptions & {\n\tcontractName: string;\n\tcodeBody: string;\n\tclarityVersion?: ClarityVersion;\n\tfee: IntegerType;\n\tnonce: IntegerType;\n\tpublicKey?: string;\n\tchain?: StacksChain;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n\tsponsored?: boolean;\n};\n\nfunction resolvePcMode(mode?: \"allow\" | \"deny\"): PostConditionModeWire {\n\treturn mode === \"allow\"\n\t\t? PostConditionModeWire.Allow\n\t\t: PostConditionModeWire.Deny;\n}\n\nfunction convertPostConditions(pcs?: PostCondition[]): PostConditionWire[] {\n\tif (!pcs || pcs.length === 0) return [];\n\treturn pcs.map(convertPostCondition);\n}\n\nfunction resolvePrincipal(address: string): PostConditionPrincipalWire {\n\tif (address === \"origin\") return { type: \"origin\" };\n\tconst [addr, name] = address.split(\".\");\n\tif (name) {\n\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\treturn { type: \"contract\", address: addr!, contractName: name };\n\t}\n\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\treturn { type: \"standard\", address: addr! };\n}\n\nconst FUNGIBLE_CODE_MAP: Record<string, number> = {\n\teq: FungibleConditionCode.Equal,\n\tgt: FungibleConditionCode.Greater,\n\tgte: FungibleConditionCode.GreaterEqual,\n\tlt: FungibleConditionCode.Less,\n\tlte: FungibleConditionCode.LessEqual,\n};\n\nfunction convertPostCondition(pc: PostCondition): PostConditionWire {\n\tswitch (pc.type) {\n\t\tcase \"stx-postcondition\":\n\t\t\treturn {\n\t\t\t\ttype: \"stx\",\n\t\t\t\tprincipal: resolvePrincipal(pc.address),\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tconditionCode: FUNGIBLE_CODE_MAP[pc.condition]!,\n\t\t\t\tamount: intToBigInt(pc.amount),\n\t\t\t};\n\t\tcase \"ft-postcondition\": {\n\t\t\tconst [contractId, tokenName] = pc.asset.split(\"::\");\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tconst [addr, name] = parseContractId(contractId!);\n\t\t\treturn {\n\t\t\t\ttype: \"ft\",\n\t\t\t\tprincipal: resolvePrincipal(pc.address),\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tasset: { address: addr, contractName: name, assetName: tokenName! },\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tconditionCode: FUNGIBLE_CODE_MAP[pc.condition]!,\n\t\t\t\tamount: intToBigInt(pc.amount),\n\t\t\t};\n\t\t}\n\t\tcase \"nft-postcondition\": {\n\t\t\tconst [contractId, tokenName] = pc.asset.split(\"::\");\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tconst [addr, name] = parseContractId(contractId!);\n\t\t\treturn {\n\t\t\t\ttype: \"nft\",\n\t\t\t\tprincipal: resolvePrincipal(pc.address),\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tasset: { address: addr, contractName: name, assetName: tokenName! },\n\t\t\t\tconditionCode:\n\t\t\t\t\tpc.condition === \"sent\"\n\t\t\t\t\t\t? NonFungibleConditionCode.Sends\n\t\t\t\t\t\t: NonFungibleConditionCode.DoesNotSend,\n\t\t\t\tassetId: pc.assetId,\n\t\t\t};\n\t\t}\n\t}\n}\n\nimport type { Authorization } from \"./types.ts\";\n\nfunction resolveSpendingCondition(\n\topts: MultiSigOptions & { publicKey?: string },\n\tnonce: bigint,\n\tfee: bigint,\n): SpendingCondition {\n\tif (opts.publicKeys) {\n\t\treturn createMultiSigSpendingCondition(\n\t\t\topts.publicKeys,\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\topts.signaturesRequired!,\n\t\t\tnonce,\n\t\t\tfee,\n\t\t\topts.hashMode,\n\t\t);\n\t}\n\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\treturn createSingleSigSpendingCondition(opts.publicKey!, nonce, fee);\n}\n\nfunction resolveAuth(\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tspendingCondition: any,\n\tsponsored?: boolean,\n): Authorization {\n\treturn sponsored\n\t\t? createSponsoredAuth(spendingCondition)\n\t\t: createStandardAuth(spendingCondition);\n}\n\nfunction resolveVersionAndChainId(chain?: StacksChain): {\n\tversion: number;\n\tchainId: number;\n} {\n\tif (!chain) return { version: 0x00, chainId: 0x00000001 }; // mainnet defaults\n\treturn { version: chain.transactionVersion, chainId: chain.id };\n}\n\nexport function buildTokenTransfer(\n\toptions: BuildTokenTransferOptions,\n): StacksTransaction {\n\tconst { version, chainId } = resolveVersionAndChainId(options.chain);\n\tconst fee = intToBigInt(options.fee);\n\tconst nonce = intToBigInt(options.nonce);\n\n\tconst spendingCondition = resolveSpendingCondition(options, nonce, fee);\n\tconst recipient = Cl.principal(options.recipient);\n\n\tconst tx: StacksTransaction = {\n\t\tversion,\n\t\tchainId,\n\t\tauth: resolveAuth(spendingCondition, options.sponsored),\n\t\tanchorMode: AnchorMode.Any,\n\t\tpostConditionMode: resolvePcMode(options.postConditionMode),\n\t\tpostConditions: convertPostConditions(options.postConditions),\n\t\tpayload: {\n\t\t\tpayloadType: PayloadType.TokenTransfer,\n\t\t\trecipient,\n\t\t\tamount: intToBigInt(options.amount),\n\t\t\tmemo: options.memo ?? \"\",\n\t\t},\n\t};\n\n\tif (options.publicKeys) {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t(tx as any)._multisig = { publicKeys: options.publicKeys };\n\t}\n\treturn tx;\n}\n\nexport function buildContractCall(\n\toptions: BuildContractCallOptions,\n): StacksTransaction {\n\tconst { version, chainId } = resolveVersionAndChainId(options.chain);\n\tconst fee = intToBigInt(options.fee);\n\tconst nonce = intToBigInt(options.nonce);\n\n\tconst spendingCondition = resolveSpendingCondition(options, nonce, fee);\n\n\tconst tx: StacksTransaction = {\n\t\tversion,\n\t\tchainId,\n\t\tauth: resolveAuth(spendingCondition, options.sponsored),\n\t\tanchorMode: AnchorMode.Any,\n\t\tpostConditionMode: resolvePcMode(options.postConditionMode),\n\t\tpostConditions: convertPostConditions(options.postConditions),\n\t\tpayload: {\n\t\t\tpayloadType: PayloadType.ContractCall,\n\t\t\tcontractAddress: options.contractAddress,\n\t\t\tcontractName: options.contractName,\n\t\t\tfunctionName: options.functionName,\n\t\t\tfunctionArgs: options.functionArgs,\n\t\t},\n\t};\n\n\tif (options.publicKeys) {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t(tx as any)._multisig = { publicKeys: options.publicKeys };\n\t}\n\treturn tx;\n}\n\nexport function buildContractDeploy(\n\toptions: BuildContractDeployOptions,\n): StacksTransaction {\n\tconst { version, chainId } = resolveVersionAndChainId(options.chain);\n\tconst fee = intToBigInt(options.fee);\n\tconst nonce = intToBigInt(options.nonce);\n\n\tconst spendingCondition = resolveSpendingCondition(options, nonce, fee);\n\tconst useVersioned = options.clarityVersion !== undefined;\n\n\tconst tx: StacksTransaction = {\n\t\tversion,\n\t\tchainId,\n\t\tauth: resolveAuth(spendingCondition, options.sponsored),\n\t\tanchorMode: AnchorMode.Any,\n\t\tpostConditionMode: resolvePcMode(options.postConditionMode),\n\t\tpostConditions: convertPostConditions(options.postConditions),\n\t\tpayload: {\n\t\t\tpayloadType: useVersioned\n\t\t\t\t? PayloadType.VersionedSmartContract\n\t\t\t\t: PayloadType.SmartContract,\n\t\t\tclarityVersion: options.clarityVersion,\n\t\t\tcontractName: options.contractName,\n\t\t\tcodeBody: options.codeBody,\n\t\t},\n\t};\n\n\tif (options.publicKeys) {\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t(tx as any)._multisig = { publicKeys: options.publicKeys };\n\t}\n\treturn tx;\n}\n",
10
- "import type { CustomAccount, LocalAccount } from \"../accounts/types.ts\";\nimport { bytesToHex, hexToBytes } from \"../utils/encoding.ts\";\nimport { txidFromBytes } from \"../utils/hash.ts\";\nimport {\n\tintoInitialSighashAuth,\n\tnextSignature,\n\tsigHashPostSign,\n\tsigHashPreSign,\n} from \"./authorization.ts\";\nimport { replayMultiSigSigHash } from \"./multisig.ts\";\nimport {\n\tAuthType,\n\ttype SingleSigSpendingCondition,\n\ttype SponsoredAuthorization,\n\ttype StacksTransaction,\n} from \"./types.ts\";\nimport { serializeTransaction } from \"./wire/serialize.ts\";\n\nfunction txid(tx: StacksTransaction): string {\n\treturn txidFromBytes(serializeTransaction(tx));\n}\n\n/** Compute the initial sighash for a transaction */\nexport function signBegin(tx: StacksTransaction): string {\n\tconst cleared: StacksTransaction = {\n\t\t...tx,\n\t\tauth: intoInitialSighashAuth(tx.auth),\n\t};\n\treturn txid(cleared);\n}\n\n/** Sign a single-sig transaction with a private key, returning the signed transaction */\nexport function signTransaction(\n\ttx: StacksTransaction,\n\tprivateKey: string,\n): StacksTransaction {\n\tconst sigHash = signBegin(tx);\n\tconst condition = tx.auth.spendingCondition as SingleSigSpendingCondition;\n\n\t// Origin always signs with AuthType.Standard (even for sponsored txs)\n\tconst { nextSig } = nextSignature(\n\t\tsigHash,\n\t\tAuthType.Standard,\n\t\tcondition.fee,\n\t\tcondition.nonce,\n\t\tprivateKey,\n\t);\n\n\treturn {\n\t\t...tx,\n\t\tauth: {\n\t\t\t...tx.auth,\n\t\t\tspendingCondition: {\n\t\t\t\t...condition,\n\t\t\t\tsignature: nextSig,\n\t\t\t},\n\t\t},\n\t};\n}\n\n/** Sign a single-sig transaction using an account (LocalAccount or CustomAccount) */\nexport async function signTransactionWithAccount(\n\ttx: StacksTransaction,\n\taccount: LocalAccount | CustomAccount,\n): Promise<StacksTransaction> {\n\tconst sigHash = signBegin(tx);\n\tconst condition = tx.auth.spendingCondition as SingleSigSpendingCondition;\n\n\t// Origin always signs with AuthType.Standard (even for sponsored txs)\n\tconst sigHashPre = sigHashPreSign(\n\t\tsigHash,\n\t\tAuthType.Standard,\n\t\tcondition.fee,\n\t\tcondition.nonce,\n\t);\n\n\t// account.sign returns 65-byte VRS (recovery + r + s)\n\tconst sigBytes = await account.sign(hexToBytes(sigHashPre));\n\tconst nextSig = bytesToHex(sigBytes);\n\n\treturn {\n\t\t...tx,\n\t\tauth: {\n\t\t\t...tx.auth,\n\t\t\tspendingCondition: {\n\t\t\t\t...condition,\n\t\t\t\tsignature: nextSig,\n\t\t\t},\n\t\t},\n\t};\n}\n\n/** Get the txid of a transaction */\nexport function getTransactionId(tx: StacksTransaction): string {\n\treturn txid(tx);\n}\n\n/** Reconstruct the sighash after origin signing (needed for sponsor signing) */\nexport function getOriginSigHash(tx: StacksTransaction): string {\n\tconst condition = tx.auth.spendingCondition;\n\n\t// Multi-sig: replay through all fields\n\tif (\"fields\" in condition) {\n\t\treturn replayMultiSigSigHash(tx);\n\t}\n\n\t// Single-sig\n\tconst initialSigHash = signBegin(tx);\n\tconst sc = condition as SingleSigSpendingCondition;\n\tconst preSign = sigHashPreSign(\n\t\tinitialSigHash,\n\t\tAuthType.Standard,\n\t\tsc.fee,\n\t\tsc.nonce,\n\t);\n\treturn sigHashPostSign(preSign, sc.keyEncoding, sc.signature);\n}\n\n/** Sign a sponsored transaction as the sponsor with a private key */\nexport function signSponsor(\n\ttx: StacksTransaction,\n\tprivateKey: string,\n): StacksTransaction {\n\tif (tx.auth.authType !== AuthType.Sponsored) {\n\t\tthrow new Error(\"Transaction must be sponsored\");\n\t}\n\tconst auth = tx.auth as SponsoredAuthorization;\n\tconst sponsorCondition =\n\t\tauth.sponsorSpendingCondition as SingleSigSpendingCondition;\n\tconst originSigHash = getOriginSigHash(tx);\n\n\tconst { nextSig } = nextSignature(\n\t\toriginSigHash,\n\t\tAuthType.Sponsored,\n\t\tsponsorCondition.fee,\n\t\tsponsorCondition.nonce,\n\t\tprivateKey,\n\t);\n\n\treturn {\n\t\t...tx,\n\t\tauth: {\n\t\t\t...auth,\n\t\t\tsponsorSpendingCondition: {\n\t\t\t\t...sponsorCondition,\n\t\t\t\tsignature: nextSig,\n\t\t\t},\n\t\t},\n\t};\n}\n\n/** Sign a sponsored transaction as the sponsor using an account */\nexport async function signSponsorWithAccount(\n\ttx: StacksTransaction,\n\taccount: LocalAccount | CustomAccount,\n): Promise<StacksTransaction> {\n\tif (tx.auth.authType !== AuthType.Sponsored) {\n\t\tthrow new Error(\"Transaction must be sponsored\");\n\t}\n\tconst auth = tx.auth as SponsoredAuthorization;\n\tconst sponsorCondition =\n\t\tauth.sponsorSpendingCondition as SingleSigSpendingCondition;\n\tconst originSigHash = getOriginSigHash(tx);\n\n\tconst sigHashPre = sigHashPreSign(\n\t\toriginSigHash,\n\t\tAuthType.Sponsored,\n\t\tsponsorCondition.fee,\n\t\tsponsorCondition.nonce,\n\t);\n\n\tconst sigBytes = await account.sign(hexToBytes(sigHashPre));\n\tconst nextSig = bytesToHex(sigBytes);\n\n\treturn {\n\t\t...tx,\n\t\tauth: {\n\t\t\t...auth,\n\t\t\tsponsorSpendingCondition: {\n\t\t\t\t...sponsorCondition,\n\t\t\t\tsignature: nextSig,\n\t\t\t},\n\t\t},\n\t};\n}\n"
11
- ],
12
- "mappings": "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",
13
- "debugId": "46B3008E970B42BC64756E2164756E21",
14
- "names": []
15
- }