viem 2.51.3 → 2.52.2

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 (155) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/_cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
  3. package/_cjs/chains/definitions/citrate.js +17 -0
  4. package/_cjs/chains/definitions/citrate.js.map +1 -0
  5. package/_cjs/chains/definitions/grav.js +24 -0
  6. package/_cjs/chains/definitions/grav.js.map +1 -0
  7. package/_cjs/chains/definitions/ladyChain.js +22 -0
  8. package/_cjs/chains/definitions/ladyChain.js.map +1 -0
  9. package/_cjs/chains/definitions/tempoModerato.js +1 -0
  10. package/_cjs/chains/definitions/tempoModerato.js.map +1 -1
  11. package/_cjs/chains/definitions/valygoNft.js +37 -0
  12. package/_cjs/chains/definitions/valygoNft.js.map +1 -0
  13. package/_cjs/chains/definitions/valygoSmartchain.js +37 -0
  14. package/_cjs/chains/definitions/valygoSmartchain.js.map +1 -0
  15. package/_cjs/chains/index.js +23 -13
  16. package/_cjs/chains/index.js.map +1 -1
  17. package/_cjs/errors/version.js +1 -1
  18. package/_cjs/tempo/Abis.js +189 -1
  19. package/_cjs/tempo/Abis.js.map +1 -1
  20. package/_cjs/tempo/Account.js +62 -23
  21. package/_cjs/tempo/Account.js.map +1 -1
  22. package/_cjs/tempo/Addresses.js +3 -1
  23. package/_cjs/tempo/Addresses.js.map +1 -1
  24. package/_cjs/tempo/Decorator.js +23 -0
  25. package/_cjs/tempo/Decorator.js.map +1 -1
  26. package/_cjs/tempo/Formatters.js +2 -1
  27. package/_cjs/tempo/Formatters.js.map +1 -1
  28. package/_cjs/tempo/Hardfork.js +3 -0
  29. package/_cjs/tempo/Hardfork.js.map +1 -1
  30. package/_cjs/tempo/Transaction.js +22 -0
  31. package/_cjs/tempo/Transaction.js.map +1 -1
  32. package/_cjs/tempo/actions/accessKey.js +238 -72
  33. package/_cjs/tempo/actions/accessKey.js.map +1 -1
  34. package/_cjs/tempo/actions/index.js +2 -1
  35. package/_cjs/tempo/actions/index.js.map +1 -1
  36. package/_cjs/tempo/actions/receivePolicy.js +363 -0
  37. package/_cjs/tempo/actions/receivePolicy.js.map +1 -0
  38. package/_cjs/tempo/chainConfig.js +10 -0
  39. package/_cjs/tempo/chainConfig.js.map +1 -1
  40. package/_cjs/tempo/index.js +3 -1
  41. package/_cjs/tempo/index.js.map +1 -1
  42. package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  43. package/_esm/chains/definitions/citrate.js +14 -0
  44. package/_esm/chains/definitions/citrate.js.map +1 -0
  45. package/_esm/chains/definitions/grav.js +21 -0
  46. package/_esm/chains/definitions/grav.js.map +1 -0
  47. package/_esm/chains/definitions/ladyChain.js +19 -0
  48. package/_esm/chains/definitions/ladyChain.js.map +1 -0
  49. package/_esm/chains/definitions/tempoModerato.js +1 -0
  50. package/_esm/chains/definitions/tempoModerato.js.map +1 -1
  51. package/_esm/chains/definitions/valygoNft.js +34 -0
  52. package/_esm/chains/definitions/valygoNft.js.map +1 -0
  53. package/_esm/chains/definitions/valygoSmartchain.js +34 -0
  54. package/_esm/chains/definitions/valygoSmartchain.js.map +1 -0
  55. package/_esm/chains/index.js +5 -0
  56. package/_esm/chains/index.js.map +1 -1
  57. package/_esm/errors/version.js +1 -1
  58. package/_esm/tempo/Abis.js +188 -0
  59. package/_esm/tempo/Abis.js.map +1 -1
  60. package/_esm/tempo/Account.js +116 -24
  61. package/_esm/tempo/Account.js.map +1 -1
  62. package/_esm/tempo/Addresses.js +2 -0
  63. package/_esm/tempo/Addresses.js.map +1 -1
  64. package/_esm/tempo/Decorator.js +23 -0
  65. package/_esm/tempo/Decorator.js.map +1 -1
  66. package/_esm/tempo/Formatters.js +5 -1
  67. package/_esm/tempo/Formatters.js.map +1 -1
  68. package/_esm/tempo/Hardfork.js +3 -0
  69. package/_esm/tempo/Hardfork.js.map +1 -1
  70. package/_esm/tempo/Transaction.js +34 -0
  71. package/_esm/tempo/Transaction.js.map +1 -1
  72. package/_esm/tempo/actions/accessKey.js +562 -128
  73. package/_esm/tempo/actions/accessKey.js.map +1 -1
  74. package/_esm/tempo/actions/index.js +1 -0
  75. package/_esm/tempo/actions/index.js.map +1 -1
  76. package/_esm/tempo/actions/receivePolicy.js +753 -0
  77. package/_esm/tempo/actions/receivePolicy.js.map +1 -0
  78. package/_esm/tempo/chainConfig.js +24 -1
  79. package/_esm/tempo/chainConfig.js.map +1 -1
  80. package/_esm/tempo/index.js +1 -1
  81. package/_esm/tempo/index.js.map +1 -1
  82. package/_types/actions/wallet/prepareTransactionRequest.d.ts +12 -1
  83. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  84. package/_types/chains/definitions/citrate.d.ts +57 -0
  85. package/_types/chains/definitions/citrate.d.ts.map +1 -0
  86. package/_types/chains/definitions/grav.d.ts +43 -0
  87. package/_types/chains/definitions/grav.d.ts.map +1 -0
  88. package/_types/chains/definitions/ladyChain.d.ts +50 -0
  89. package/_types/chains/definitions/ladyChain.d.ts.map +1 -0
  90. package/_types/chains/definitions/tempo.d.ts +36 -0
  91. package/_types/chains/definitions/tempo.d.ts.map +1 -1
  92. package/_types/chains/definitions/tempoDevnet.d.ts +36 -0
  93. package/_types/chains/definitions/tempoDevnet.d.ts.map +1 -1
  94. package/_types/chains/definitions/tempoLocalnet.d.ts +36 -0
  95. package/_types/chains/definitions/tempoLocalnet.d.ts.map +1 -1
  96. package/_types/chains/definitions/tempoModerato.d.ts +38 -0
  97. package/_types/chains/definitions/tempoModerato.d.ts.map +1 -1
  98. package/_types/chains/definitions/valygoNft.d.ts +48 -0
  99. package/_types/chains/definitions/valygoNft.d.ts.map +1 -0
  100. package/_types/chains/definitions/valygoSmartchain.d.ts +48 -0
  101. package/_types/chains/definitions/valygoSmartchain.d.ts.map +1 -0
  102. package/_types/chains/index.d.ts +5 -0
  103. package/_types/chains/index.d.ts.map +1 -1
  104. package/_types/errors/version.d.ts +1 -1
  105. package/_types/tempo/Abis.d.ts +671 -4
  106. package/_types/tempo/Abis.d.ts.map +1 -1
  107. package/_types/tempo/Account.d.ts +61 -3
  108. package/_types/tempo/Account.d.ts.map +1 -1
  109. package/_types/tempo/Addresses.d.ts +2 -0
  110. package/_types/tempo/Addresses.d.ts.map +1 -1
  111. package/_types/tempo/Decorator.d.ts +501 -0
  112. package/_types/tempo/Decorator.d.ts.map +1 -1
  113. package/_types/tempo/Formatters.d.ts.map +1 -1
  114. package/_types/tempo/Hardfork.d.ts +1 -1
  115. package/_types/tempo/Hardfork.d.ts.map +1 -1
  116. package/_types/tempo/Transaction.d.ts +5 -1
  117. package/_types/tempo/Transaction.d.ts.map +1 -1
  118. package/_types/tempo/actions/accessKey.d.ts +1520 -304
  119. package/_types/tempo/actions/accessKey.d.ts.map +1 -1
  120. package/_types/tempo/actions/dex.d.ts +75 -0
  121. package/_types/tempo/actions/dex.d.ts.map +1 -1
  122. package/_types/tempo/actions/index.d.ts +1 -0
  123. package/_types/tempo/actions/index.d.ts.map +1 -1
  124. package/_types/tempo/actions/policy.d.ts +352 -0
  125. package/_types/tempo/actions/policy.d.ts.map +1 -1
  126. package/_types/tempo/actions/receivePolicy.d.ts +1511 -0
  127. package/_types/tempo/actions/receivePolicy.d.ts.map +1 -0
  128. package/_types/tempo/chainConfig.d.ts +34 -15
  129. package/_types/tempo/chainConfig.d.ts.map +1 -1
  130. package/_types/tempo/index.d.ts +1 -1
  131. package/_types/tempo/index.d.ts.map +1 -1
  132. package/_types/tempo/zones/zone.d.ts +108 -0
  133. package/_types/tempo/zones/zone.d.ts.map +1 -1
  134. package/actions/wallet/prepareTransactionRequest.ts +40 -5
  135. package/chains/definitions/citrate.ts +14 -0
  136. package/chains/definitions/grav.ts +21 -0
  137. package/chains/definitions/ladyChain.ts +19 -0
  138. package/chains/definitions/tempoModerato.ts +1 -0
  139. package/chains/definitions/valygoNft.ts +34 -0
  140. package/chains/definitions/valygoSmartchain.ts +34 -0
  141. package/chains/index.ts +5 -0
  142. package/errors/version.ts +1 -1
  143. package/package.json +3 -4
  144. package/tempo/Abis.ts +189 -0
  145. package/tempo/Account.ts +153 -31
  146. package/tempo/Addresses.ts +2 -0
  147. package/tempo/Decorator.ts +578 -0
  148. package/tempo/Formatters.ts +12 -1
  149. package/tempo/Hardfork.ts +3 -0
  150. package/tempo/Transaction.ts +42 -0
  151. package/tempo/actions/accessKey.ts +1002 -279
  152. package/tempo/actions/index.ts +1 -0
  153. package/tempo/actions/receivePolicy.ts +1266 -0
  154. package/tempo/chainConfig.ts +32 -3
  155. package/tempo/index.ts +2 -0
@@ -7,6 +7,7 @@ import * as Signature from 'ox/Signature'
7
7
  import {
8
8
  type AuthorizationTempo,
9
9
  type KeyAuthorization,
10
+ type MultisigConfig,
10
11
  type TransactionReceipt as ox_TransactionReceipt,
11
12
  SignatureEnvelope,
12
13
  type TempoAddress,
@@ -124,7 +125,9 @@ export type TransactionRequestTempo<
124
125
  feePayer?: Account | true | undefined
125
126
  feeToken?: TempoAddress.Address | bigint | undefined
126
127
  keyAuthorization?: KeyAuthorization.Signed<quantity, index> | undefined
128
+ multisig?: MultisigConfig.Config<index> | undefined
127
129
  nonceKey?: 'expiring' | quantity | undefined
130
+ signatures?: readonly SignatureEnvelope.Serialized[] | undefined
128
131
  validBefore?: index | undefined
129
132
  validAfter?: index | undefined
130
133
  }
@@ -145,8 +148,10 @@ export type TransactionSerializableTempo<
145
148
  feePayerSignature?: viem_Signature | null | undefined
146
149
  from?: Address | undefined
147
150
  keyAuthorization?: KeyAuthorization.Signed<quantity, index> | undefined
151
+ multisig?: MultisigConfig.Config<index> | undefined
148
152
  nonceKey?: quantity | undefined
149
153
  signature?: SignatureEnvelope.SignatureEnvelope<quantity, index> | undefined
154
+ signatures?: readonly SignatureEnvelope.Serialized[] | undefined
150
155
  validBefore?: index | undefined
151
156
  validAfter?: index | undefined
152
157
  type?: 'tempo' | undefined
@@ -170,12 +175,16 @@ export function getType(
170
175
  if (
171
176
  (account?.keyType && account.keyType !== 'secp256k1') ||
172
177
  account?.source === 'accessKey' ||
178
+ account?.source === 'multisig' ||
173
179
  typeof transaction.calls !== 'undefined' ||
174
180
  typeof transaction.feePayer !== 'undefined' ||
181
+ typeof transaction.feePayerSignature !== 'undefined' ||
175
182
  typeof transaction.feeToken !== 'undefined' ||
176
183
  typeof transaction.keyAuthorization !== 'undefined' ||
184
+ typeof transaction.multisig !== 'undefined' ||
177
185
  typeof transaction.nonceKey !== 'undefined' ||
178
186
  typeof transaction.signature !== 'undefined' ||
187
+ typeof transaction.signatures !== 'undefined' ||
179
188
  typeof transaction.validBefore !== 'undefined' ||
180
189
  typeof transaction.validAfter !== 'undefined'
181
190
  )
@@ -337,6 +346,39 @@ async function serializeTempo(
337
346
  // the fee payer.
338
347
  if (shouldStripFeeTokenForSponsorship) delete transaction_ox.feeToken
339
348
 
349
+ // Native multisig (TIP-1061): combine the collected owner approvals into the
350
+ // multisig signature envelope and serialize the broadcast transaction. The
351
+ // approvals are recovered against the multisig owner digest and ordered into
352
+ // the strictly-ascending owner address order the node requires.
353
+ //
354
+ // Bootstrap (`init`) is auto-detected from the nonce: the protocol requires
355
+ // (and consumes) nonce `0` for the first transaction from a derived account,
356
+ // so `nonce == 0` uniquely identifies a bootstrap. This matches the serialized
357
+ // nonce above (a falsy `nonce` serializes as `0`). The owner approval digest
358
+ // doesn't commit to `init`, so attaching it here (rather than at owner-signing)
359
+ // is safe.
360
+ // NOTE: fee-payer + multisig is handled in a later phase.
361
+ if (transaction.multisig && transaction.signatures && !feePayer) {
362
+ const payload = TxTempo.getSignPayload(TxTempo.from(transaction_ox))
363
+ const signatures = transaction.signatures.map((approval) =>
364
+ SignatureEnvelope.from(approval),
365
+ )
366
+ const sorted = SignatureEnvelope.sortMultisigApprovals({
367
+ payload,
368
+ signatures,
369
+ genesisConfig: transaction.multisig,
370
+ })
371
+ const signature = SignatureEnvelope.from({
372
+ genesisConfig: transaction.multisig,
373
+ signatures: sorted,
374
+ ...(nonce ? {} : { init: true }),
375
+ })
376
+ return TxTempo.serialize(transaction_ox, {
377
+ feePayerSignature: undefined,
378
+ signature,
379
+ })
380
+ }
381
+
340
382
  if (signature && typeof transaction.feePayer === 'object') {
341
383
  const tx = TxTempo.from(transaction_ox, {
342
384
  signature,