viem 1.9.5 → 1.10.1

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 (276) hide show
  1. package/dist/cjs/accounts/index.js +19 -19
  2. package/dist/cjs/accounts/index.js.map +1 -1
  3. package/dist/cjs/actions/wallet/signTypedData.js +1 -13
  4. package/dist/cjs/actions/wallet/signTypedData.js.map +1 -1
  5. package/dist/cjs/chains/definitions/base.js +1 -3
  6. package/dist/cjs/chains/definitions/base.js.map +1 -1
  7. package/dist/cjs/chains/definitions/baseGoerli.js +1 -3
  8. package/dist/cjs/chains/definitions/baseGoerli.js.map +1 -1
  9. package/dist/cjs/chains/definitions/meter.js +22 -0
  10. package/dist/cjs/chains/definitions/meter.js.map +1 -0
  11. package/dist/cjs/chains/definitions/meterTestnet.js +25 -0
  12. package/dist/cjs/chains/definitions/meterTestnet.js.map +1 -0
  13. package/dist/cjs/chains/definitions/opBNB.js +28 -0
  14. package/dist/cjs/chains/definitions/opBNB.js.map +1 -0
  15. package/dist/cjs/chains/definitions/opBNBTestnet.js +29 -0
  16. package/dist/cjs/chains/definitions/opBNBTestnet.js.map +1 -0
  17. package/dist/cjs/chains/definitions/optimism.js +0 -2
  18. package/dist/cjs/chains/definitions/optimism.js.map +1 -1
  19. package/dist/cjs/chains/definitions/optimismGoerli.js +0 -2
  20. package/dist/cjs/chains/definitions/optimismGoerli.js.map +1 -1
  21. package/dist/cjs/chains/definitions/plinga.js +31 -0
  22. package/dist/cjs/chains/definitions/plinga.js.map +1 -0
  23. package/dist/cjs/chains/definitions/scrollSepolia.js +6 -0
  24. package/dist/cjs/chains/definitions/scrollSepolia.js.map +1 -1
  25. package/dist/cjs/chains/definitions/zora.js +0 -2
  26. package/dist/cjs/chains/definitions/zora.js.map +1 -1
  27. package/dist/cjs/chains/definitions/zoraTestnet.js +0 -2
  28. package/dist/cjs/chains/definitions/zoraTestnet.js.map +1 -1
  29. package/dist/cjs/chains/index.js +12 -2
  30. package/dist/cjs/chains/index.js.map +1 -1
  31. package/dist/cjs/errors/node.js +1 -1
  32. package/dist/cjs/errors/node.js.map +1 -1
  33. package/dist/cjs/errors/version.js +1 -1
  34. package/dist/cjs/errors/version.js.map +1 -1
  35. package/dist/cjs/index.js +2 -1
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/utils/buildRequest.js +2 -0
  38. package/dist/cjs/utils/buildRequest.js.map +1 -1
  39. package/dist/cjs/utils/errors/getCallError.js +4 -3
  40. package/dist/cjs/utils/errors/getCallError.js.map +1 -1
  41. package/dist/cjs/utils/errors/getContractError.js +2 -1
  42. package/dist/cjs/utils/errors/getContractError.js.map +1 -1
  43. package/dist/cjs/utils/errors/getEstimateGasError.js +4 -3
  44. package/dist/cjs/utils/errors/getEstimateGasError.js.map +1 -1
  45. package/dist/cjs/utils/errors/getNodeError.js +16 -10
  46. package/dist/cjs/utils/errors/getNodeError.js.map +1 -1
  47. package/dist/cjs/utils/errors/getTransactionError.js +4 -3
  48. package/dist/cjs/utils/errors/getTransactionError.js.map +1 -1
  49. package/dist/cjs/utils/rpc.js +10 -16
  50. package/dist/cjs/utils/rpc.js.map +1 -1
  51. package/dist/cjs/utils/signature/hashTypedData.js +3 -14
  52. package/dist/cjs/utils/signature/hashTypedData.js.map +1 -1
  53. package/dist/cjs/utils/typedData.js +27 -1
  54. package/dist/cjs/utils/typedData.js.map +1 -1
  55. package/dist/esm/accounts/index.js +9 -9
  56. package/dist/esm/accounts/index.js.map +1 -1
  57. package/dist/esm/actions/wallet/signTypedData.js +2 -14
  58. package/dist/esm/actions/wallet/signTypedData.js.map +1 -1
  59. package/dist/esm/chains/definitions/base.js +1 -3
  60. package/dist/esm/chains/definitions/base.js.map +1 -1
  61. package/dist/esm/chains/definitions/baseGoerli.js +1 -3
  62. package/dist/esm/chains/definitions/baseGoerli.js.map +1 -1
  63. package/dist/esm/chains/definitions/meter.js +19 -0
  64. package/dist/esm/chains/definitions/meter.js.map +1 -0
  65. package/dist/esm/chains/definitions/meterTestnet.js +22 -0
  66. package/dist/esm/chains/definitions/meterTestnet.js.map +1 -0
  67. package/dist/esm/chains/definitions/opBNB.js +25 -0
  68. package/dist/esm/chains/definitions/opBNB.js.map +1 -0
  69. package/dist/esm/chains/definitions/opBNBTestnet.js +26 -0
  70. package/dist/esm/chains/definitions/opBNBTestnet.js.map +1 -0
  71. package/dist/esm/chains/definitions/optimism.js +0 -2
  72. package/dist/esm/chains/definitions/optimism.js.map +1 -1
  73. package/dist/esm/chains/definitions/optimismGoerli.js +0 -2
  74. package/dist/esm/chains/definitions/optimismGoerli.js.map +1 -1
  75. package/dist/esm/chains/definitions/plinga.js +28 -0
  76. package/dist/esm/chains/definitions/plinga.js.map +1 -0
  77. package/dist/esm/chains/definitions/scrollSepolia.js +6 -0
  78. package/dist/esm/chains/definitions/scrollSepolia.js.map +1 -1
  79. package/dist/esm/chains/definitions/zora.js +0 -2
  80. package/dist/esm/chains/definitions/zora.js.map +1 -1
  81. package/dist/esm/chains/definitions/zoraTestnet.js +0 -2
  82. package/dist/esm/chains/definitions/zoraTestnet.js.map +1 -1
  83. package/dist/esm/chains/index.js +5 -0
  84. package/dist/esm/chains/index.js.map +1 -1
  85. package/dist/esm/errors/node.js +1 -1
  86. package/dist/esm/errors/node.js.map +1 -1
  87. package/dist/esm/errors/version.js +1 -1
  88. package/dist/esm/errors/version.js.map +1 -1
  89. package/dist/esm/index.js +1 -1
  90. package/dist/esm/index.js.map +1 -1
  91. package/dist/esm/utils/buildRequest.js +4 -0
  92. package/dist/esm/utils/buildRequest.js.map +1 -1
  93. package/dist/esm/utils/errors/getCallError.js +5 -4
  94. package/dist/esm/utils/errors/getCallError.js.map +1 -1
  95. package/dist/esm/utils/errors/getContractError.js +2 -1
  96. package/dist/esm/utils/errors/getContractError.js.map +1 -1
  97. package/dist/esm/utils/errors/getEstimateGasError.js +5 -4
  98. package/dist/esm/utils/errors/getEstimateGasError.js.map +1 -1
  99. package/dist/esm/utils/errors/getNodeError.js +16 -10
  100. package/dist/esm/utils/errors/getNodeError.js.map +1 -1
  101. package/dist/esm/utils/errors/getTransactionError.js +5 -4
  102. package/dist/esm/utils/errors/getTransactionError.js.map +1 -1
  103. package/dist/esm/utils/rpc.js +7 -16
  104. package/dist/esm/utils/rpc.js.map +1 -1
  105. package/dist/esm/utils/signature/hashTypedData.js +3 -15
  106. package/dist/esm/utils/signature/hashTypedData.js.map +1 -1
  107. package/dist/esm/utils/typedData.js +24 -0
  108. package/dist/esm/utils/typedData.js.map +1 -1
  109. package/dist/types/accounts/index.d.ts +9 -9
  110. package/dist/types/accounts/index.d.ts.map +1 -1
  111. package/dist/types/actions/wallet/signTypedData.d.ts.map +1 -1
  112. package/dist/types/chains/definitions/base.d.ts +1 -1
  113. package/dist/types/chains/definitions/base.d.ts.map +1 -1
  114. package/dist/types/chains/definitions/baseGoerli.d.ts +1 -1
  115. package/dist/types/chains/definitions/baseGoerli.d.ts.map +1 -1
  116. package/dist/types/chains/definitions/meter.d.ts +25 -0
  117. package/dist/types/chains/definitions/meter.d.ts.map +1 -0
  118. package/dist/types/chains/definitions/meterTestnet.d.ts +25 -0
  119. package/dist/types/chains/definitions/meterTestnet.d.ts.map +1 -0
  120. package/dist/types/chains/definitions/opBNB.d.ts +31 -0
  121. package/dist/types/chains/definitions/opBNB.d.ts.map +1 -0
  122. package/dist/types/chains/definitions/opBNBTestnet.d.ts +32 -0
  123. package/dist/types/chains/definitions/opBNBTestnet.d.ts.map +1 -0
  124. package/dist/types/chains/definitions/optimism.d.ts.map +1 -1
  125. package/dist/types/chains/definitions/optimismGoerli.d.ts.map +1 -1
  126. package/dist/types/chains/definitions/plinga.d.ts +31 -0
  127. package/dist/types/chains/definitions/plinga.d.ts.map +1 -0
  128. package/dist/types/chains/definitions/scrollSepolia.d.ts +6 -0
  129. package/dist/types/chains/definitions/scrollSepolia.d.ts.map +1 -1
  130. package/dist/types/chains/definitions/zora.d.ts.map +1 -1
  131. package/dist/types/chains/definitions/zoraTestnet.d.ts.map +1 -1
  132. package/dist/types/chains/index.d.ts +5 -0
  133. package/dist/types/chains/index.d.ts.map +1 -1
  134. package/dist/types/errors/version.d.ts +1 -1
  135. package/dist/types/errors/version.d.ts.map +1 -1
  136. package/dist/types/index.d.ts +1 -1
  137. package/dist/types/index.d.ts.map +1 -1
  138. package/dist/types/types/chain.d.ts +4 -0
  139. package/dist/types/types/chain.d.ts.map +1 -1
  140. package/dist/types/utils/buildRequest.d.ts.map +1 -1
  141. package/dist/types/utils/errors/getCallError.d.ts.map +1 -1
  142. package/dist/types/utils/errors/getContractError.d.ts.map +1 -1
  143. package/dist/types/utils/errors/getEstimateGasError.d.ts.map +1 -1
  144. package/dist/types/utils/errors/getNodeError.d.ts +1 -1
  145. package/dist/types/utils/errors/getNodeError.d.ts.map +1 -1
  146. package/dist/types/utils/errors/getTransactionError.d.ts.map +1 -1
  147. package/dist/types/utils/rpc.d.ts +3 -1
  148. package/dist/types/utils/rpc.d.ts.map +1 -1
  149. package/dist/types/utils/signature/hashTypedData.d.ts +10 -1
  150. package/dist/types/utils/signature/hashTypedData.d.ts.map +1 -1
  151. package/dist/types/utils/signature/verifyMessage.d.ts +2 -2
  152. package/dist/types/utils/signature/verifyMessage.d.ts.map +1 -1
  153. package/dist/types/utils/typedData.d.ts +8 -1
  154. package/dist/types/utils/typedData.d.ts.map +1 -1
  155. package/package.json +9 -9
  156. package/src/accounts/index.ts +10 -9
  157. package/src/actions/wallet/signTypedData.ts +5 -14
  158. package/src/chains/definitions/base.ts +1 -3
  159. package/src/chains/definitions/baseGoerli.ts +1 -3
  160. package/src/chains/definitions/meter.ts +19 -0
  161. package/src/chains/definitions/meterTestnet.ts +22 -0
  162. package/src/chains/definitions/opBNB.ts +26 -0
  163. package/src/chains/definitions/opBNBTestnet.ts +26 -0
  164. package/src/chains/definitions/optimism.ts +0 -2
  165. package/src/chains/definitions/optimismGoerli.ts +0 -2
  166. package/src/chains/definitions/plinga.ts +28 -0
  167. package/src/chains/definitions/scrollSepolia.ts +6 -0
  168. package/src/chains/definitions/zora.ts +0 -2
  169. package/src/chains/definitions/zoraTestnet.ts +0 -2
  170. package/src/chains/index.ts +5 -0
  171. package/src/errors/node.ts +1 -1
  172. package/src/errors/version.ts +1 -1
  173. package/src/index.ts +1 -1
  174. package/src/types/chain.ts +2 -0
  175. package/src/utils/buildRequest.ts +4 -0
  176. package/src/utils/errors/getCallError.ts +4 -8
  177. package/src/utils/errors/getContractError.ts +2 -1
  178. package/src/utils/errors/getEstimateGasError.ts +4 -8
  179. package/src/utils/errors/getNodeError.ts +18 -13
  180. package/src/utils/errors/getTransactionError.ts +4 -8
  181. package/src/utils/rpc.ts +9 -20
  182. package/src/utils/signature/hashTypedData.ts +3 -15
  183. package/src/utils/signature/verifyMessage.ts +2 -2
  184. package/src/utils/typedData.ts +34 -1
  185. package/chains/dist/cjs/celo/formatters.js +0 -57
  186. package/chains/dist/cjs/celo/formatters.js.map +0 -1
  187. package/chains/dist/cjs/celo/parsers.js +0 -72
  188. package/chains/dist/cjs/celo/parsers.js.map +0 -1
  189. package/chains/dist/cjs/celo/serializers.js +0 -75
  190. package/chains/dist/cjs/celo/serializers.js.map +0 -1
  191. package/chains/dist/cjs/celo/types.js +0 -3
  192. package/chains/dist/cjs/celo/types.js.map +0 -1
  193. package/chains/dist/cjs/index.js +0 -135
  194. package/chains/dist/cjs/index.js.map +0 -1
  195. package/chains/dist/cjs/optimism/fees.js +0 -7
  196. package/chains/dist/cjs/optimism/fees.js.map +0 -1
  197. package/chains/dist/cjs/optimism/formatters.js +0 -51
  198. package/chains/dist/cjs/optimism/formatters.js.map +0 -1
  199. package/chains/dist/cjs/optimism/types.js +0 -3
  200. package/chains/dist/cjs/optimism/types.js.map +0 -1
  201. package/chains/dist/cjs/types.js +0 -3
  202. package/chains/dist/cjs/types.js.map +0 -1
  203. package/chains/dist/cjs/utils.js +0 -23
  204. package/chains/dist/cjs/utils.js.map +0 -1
  205. package/chains/dist/tsconfig.build.tsbuildinfo +0 -1
  206. package/chains/tsconfig.tsbuildinfo +0 -1
  207. package/dist/cjs/accounts/wordlists/czech.js +0 -6
  208. package/dist/cjs/accounts/wordlists/czech.js.map +0 -1
  209. package/dist/cjs/accounts/wordlists/english.js +0 -6
  210. package/dist/cjs/accounts/wordlists/english.js.map +0 -1
  211. package/dist/cjs/accounts/wordlists/french.js +0 -6
  212. package/dist/cjs/accounts/wordlists/french.js.map +0 -1
  213. package/dist/cjs/accounts/wordlists/italian.js +0 -6
  214. package/dist/cjs/accounts/wordlists/italian.js.map +0 -1
  215. package/dist/cjs/accounts/wordlists/japanese.js +0 -6
  216. package/dist/cjs/accounts/wordlists/japanese.js.map +0 -1
  217. package/dist/cjs/accounts/wordlists/korean.js +0 -6
  218. package/dist/cjs/accounts/wordlists/korean.js.map +0 -1
  219. package/dist/cjs/accounts/wordlists/simplifiedChinese.js +0 -6
  220. package/dist/cjs/accounts/wordlists/simplifiedChinese.js.map +0 -1
  221. package/dist/cjs/accounts/wordlists/spanish.js +0 -6
  222. package/dist/cjs/accounts/wordlists/spanish.js.map +0 -1
  223. package/dist/cjs/accounts/wordlists/traditionalChinese.js +0 -6
  224. package/dist/cjs/accounts/wordlists/traditionalChinese.js.map +0 -1
  225. package/dist/cjs/chains/optimism/fees.js +0 -7
  226. package/dist/cjs/chains/optimism/fees.js.map +0 -1
  227. package/dist/esm/accounts/wordlists/czech.js +0 -2
  228. package/dist/esm/accounts/wordlists/czech.js.map +0 -1
  229. package/dist/esm/accounts/wordlists/english.js +0 -2
  230. package/dist/esm/accounts/wordlists/english.js.map +0 -1
  231. package/dist/esm/accounts/wordlists/french.js +0 -2
  232. package/dist/esm/accounts/wordlists/french.js.map +0 -1
  233. package/dist/esm/accounts/wordlists/italian.js +0 -2
  234. package/dist/esm/accounts/wordlists/italian.js.map +0 -1
  235. package/dist/esm/accounts/wordlists/japanese.js +0 -2
  236. package/dist/esm/accounts/wordlists/japanese.js.map +0 -1
  237. package/dist/esm/accounts/wordlists/korean.js +0 -2
  238. package/dist/esm/accounts/wordlists/korean.js.map +0 -1
  239. package/dist/esm/accounts/wordlists/simplifiedChinese.js +0 -2
  240. package/dist/esm/accounts/wordlists/simplifiedChinese.js.map +0 -1
  241. package/dist/esm/accounts/wordlists/spanish.js +0 -2
  242. package/dist/esm/accounts/wordlists/spanish.js.map +0 -1
  243. package/dist/esm/accounts/wordlists/traditionalChinese.js +0 -2
  244. package/dist/esm/accounts/wordlists/traditionalChinese.js.map +0 -1
  245. package/dist/esm/chains/optimism/fees.js +0 -4
  246. package/dist/esm/chains/optimism/fees.js.map +0 -1
  247. package/dist/types/accounts/wordlists/czech.d.ts +0 -2
  248. package/dist/types/accounts/wordlists/czech.d.ts.map +0 -1
  249. package/dist/types/accounts/wordlists/english.d.ts +0 -2
  250. package/dist/types/accounts/wordlists/english.d.ts.map +0 -1
  251. package/dist/types/accounts/wordlists/french.d.ts +0 -2
  252. package/dist/types/accounts/wordlists/french.d.ts.map +0 -1
  253. package/dist/types/accounts/wordlists/italian.d.ts +0 -2
  254. package/dist/types/accounts/wordlists/italian.d.ts.map +0 -1
  255. package/dist/types/accounts/wordlists/japanese.d.ts +0 -2
  256. package/dist/types/accounts/wordlists/japanese.d.ts.map +0 -1
  257. package/dist/types/accounts/wordlists/korean.d.ts +0 -2
  258. package/dist/types/accounts/wordlists/korean.d.ts.map +0 -1
  259. package/dist/types/accounts/wordlists/simplifiedChinese.d.ts +0 -2
  260. package/dist/types/accounts/wordlists/simplifiedChinese.d.ts.map +0 -1
  261. package/dist/types/accounts/wordlists/spanish.d.ts +0 -2
  262. package/dist/types/accounts/wordlists/spanish.d.ts.map +0 -1
  263. package/dist/types/accounts/wordlists/traditionalChinese.d.ts +0 -2
  264. package/dist/types/accounts/wordlists/traditionalChinese.d.ts.map +0 -1
  265. package/dist/types/chains/optimism/fees.d.ts +0 -4
  266. package/dist/types/chains/optimism/fees.d.ts.map +0 -1
  267. package/src/accounts/wordlists/czech.ts +0 -1
  268. package/src/accounts/wordlists/english.ts +0 -1
  269. package/src/accounts/wordlists/french.ts +0 -1
  270. package/src/accounts/wordlists/italian.ts +0 -1
  271. package/src/accounts/wordlists/japanese.ts +0 -1
  272. package/src/accounts/wordlists/korean.ts +0 -1
  273. package/src/accounts/wordlists/simplifiedChinese.ts +0 -1
  274. package/src/accounts/wordlists/spanish.ts +0 -1
  275. package/src/accounts/wordlists/traditionalChinese.ts +0 -1
  276. package/src/chains/optimism/fees.ts +0 -5
@@ -65,6 +65,8 @@ export { localhost } from './definitions/localhost.js'
65
65
  export { mainnet } from './definitions/mainnet.js'
66
66
  export { mantle } from './definitions/mantle.js'
67
67
  export { mantleTestnet } from './definitions/mantleTestnet.js'
68
+ export { meter } from './definitions/meter.js'
69
+ export { meterTestnet } from './definitions/meterTestnet.js'
68
70
  export { metis } from './definitions/metis.js'
69
71
  export { metisGoerli } from './definitions/metisGoerli.js'
70
72
  export { mev } from './definitions/mev.js'
@@ -80,6 +82,9 @@ export { oasys } from './definitions/oasys.js'
80
82
  export { okc } from './definitions/okc.js'
81
83
  export { optimism } from './definitions/optimism.js'
82
84
  export { optimismGoerli } from './definitions/optimismGoerli.js'
85
+ export { opBNB } from './definitions/opBNB.js'
86
+ export { opBNBTestnet } from './definitions/opBNBTestnet.js'
87
+ export { plinga } from './definitions/plinga.js'
83
88
  export { polygon } from './definitions/polygon.js'
84
89
  export { polygonMumbai } from './definitions/polygonMumbai.js'
85
90
  export { polygonZkEvmTestnet } from './definitions/polygonZkEvmTestnet.js'
@@ -216,7 +216,7 @@ export class UnknownNodeError extends BaseError {
216
216
  override name = 'UnknownNodeError'
217
217
 
218
218
  constructor({ cause }: { cause?: BaseError }) {
219
- super(`An error occurred while executing: ${cause?.message}`, {
219
+ super(`An error occurred while executing: ${cause?.shortMessage}`, {
220
220
  cause,
221
221
  })
222
222
  }
@@ -1 +1 @@
1
- export const version = '1.9.5'
1
+ export const version = '1.10.1'
package/src/index.ts CHANGED
@@ -878,4 +878,4 @@ export { size } from './utils/data/size.js'
878
878
  export { slice, sliceBytes, sliceHex } from './utils/data/slice.js'
879
879
  export { stringify } from './utils/stringify.js'
880
880
  export { trim } from './utils/data/trim.js'
881
- export { validateTypedData } from './utils/typedData.js'
881
+ export { validateTypedData, domainSeparator } from './utils/typedData.js'
@@ -34,6 +34,8 @@ export type ChainConstants = {
34
34
  }
35
35
  /** Collection of contracts */
36
36
  contracts?: {
37
+ [key: string]: ChainContract | { [chainId: number]: ChainContract }
38
+ } & {
37
39
  ensRegistry?: ChainContract
38
40
  ensUniversalResolver?: ChainContract
39
41
  multicall3?: ChainContract
@@ -126,6 +126,10 @@ export function buildRequest<TRequest extends (args: any) => Promise<any>>(
126
126
  // 4902
127
127
  case SwitchChainError.code:
128
128
  throw new SwitchChainError(err)
129
+ // CAIP-25: User Rejected Error
130
+ // https://docs.walletconnect.com/2.0/specs/clients/sign/error-codes#rejected-caip-25
131
+ case 5000:
132
+ throw new UserRejectedRequestError(err)
129
133
  default:
130
134
  if (err_ instanceof BaseError) throw err_
131
135
  throw new UnknownRpcError(err as Error)
@@ -1,13 +1,10 @@
1
1
  import type { CallParameters } from '../../actions/public/call.js'
2
2
  import type { BaseError } from '../../errors/base.js'
3
3
  import { CallExecutionError } from '../../errors/contract.js'
4
+ import { UnknownNodeError } from '../../errors/node.js'
4
5
  import type { Chain } from '../../types/chain.js'
5
6
 
6
- import {
7
- type GetNodeErrorParameters,
8
- containsNodeError,
9
- getNodeError,
10
- } from './getNodeError.js'
7
+ import { type GetNodeErrorParameters, getNodeError } from './getNodeError.js'
11
8
 
12
9
  export function getCallError(
13
10
  err: BaseError,
@@ -19,9 +16,8 @@ export function getCallError(
19
16
  docsPath?: string
20
17
  },
21
18
  ) {
22
- let cause = err
23
- if (containsNodeError(err))
24
- cause = getNodeError(err, args as GetNodeErrorParameters)
19
+ let cause = getNodeError(err, args as GetNodeErrorParameters)
20
+ if (cause instanceof UnknownNodeError) cause = err
25
21
  return new CallExecutionError(cause, {
26
22
  docsPath,
27
23
  ...args,
@@ -8,6 +8,7 @@ import {
8
8
  ContractFunctionZeroDataError,
9
9
  RawContractError,
10
10
  } from '../../errors/contract.js'
11
+ import { InternalRpcError } from '../../errors/rpc.js'
11
12
 
12
13
  const EXECUTION_REVERTED_ERROR_CODE = 3
13
14
 
@@ -41,7 +42,7 @@ export function getContractError(
41
42
  if (err instanceof AbiDecodingZeroDataError) {
42
43
  cause = new ContractFunctionZeroDataError({ functionName })
43
44
  } else if (
44
- code === EXECUTION_REVERTED_ERROR_CODE &&
45
+ [EXECUTION_REVERTED_ERROR_CODE, InternalRpcError.code].includes(code) &&
45
46
  (data || message || shortMessage)
46
47
  ) {
47
48
  cause = new ContractFunctionRevertedError({
@@ -2,13 +2,10 @@ import type { Account } from '../../accounts/types.js'
2
2
  import type { EstimateGasParameters } from '../../actions/public/estimateGas.js'
3
3
  import type { BaseError } from '../../errors/base.js'
4
4
  import { EstimateGasExecutionError } from '../../errors/estimateGas.js'
5
+ import { UnknownNodeError } from '../../errors/node.js'
5
6
  import type { Chain } from '../../types/chain.js'
6
7
 
7
- import {
8
- type GetNodeErrorParameters,
9
- containsNodeError,
10
- getNodeError,
11
- } from './getNodeError.js'
8
+ import { type GetNodeErrorParameters, getNodeError } from './getNodeError.js'
12
9
 
13
10
  export function getEstimateGasError(
14
11
  err: BaseError,
@@ -21,9 +18,8 @@ export function getEstimateGasError(
21
18
  docsPath?: string
22
19
  },
23
20
  ) {
24
- let cause = err
25
- if (containsNodeError(err))
26
- cause = getNodeError(err, args as GetNodeErrorParameters)
21
+ let cause = getNodeError(err, args as GetNodeErrorParameters)
22
+ if (cause instanceof UnknownNodeError) cause = err
27
23
  return new EstimateGasExecutionError(cause, {
28
24
  docsPath,
29
25
  ...args,
@@ -1,5 +1,5 @@
1
1
  import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'
2
- import type { BaseError } from '../../errors/base.js'
2
+ import { BaseError } from '../../errors/base.js'
3
3
  import {
4
4
  ExecutionRevertedError,
5
5
  FeeCapTooHighError,
@@ -31,8 +31,22 @@ export function containsNodeError(err: BaseError) {
31
31
  export type GetNodeErrorParameters = Partial<SendTransactionParameters<any>>
32
32
 
33
33
  export function getNodeError(err: BaseError, args: GetNodeErrorParameters) {
34
- const message = err.details.toLowerCase()
35
- if (FeeCapTooHighError.nodeMessage.test(message))
34
+ const message = (err.details || '').toLowerCase()
35
+
36
+ const executionRevertedError = err.walk(
37
+ (e) => (e as { code: number }).code === ExecutionRevertedError.code,
38
+ )
39
+ if (executionRevertedError instanceof BaseError) {
40
+ return new ExecutionRevertedError({
41
+ cause: err,
42
+ message: executionRevertedError.details,
43
+ })
44
+ } else if (ExecutionRevertedError.nodeMessage.test(message))
45
+ return new ExecutionRevertedError({
46
+ cause: err,
47
+ message: err.details,
48
+ })
49
+ else if (FeeCapTooHighError.nodeMessage.test(message))
36
50
  return new FeeCapTooHighError({
37
51
  cause: err,
38
52
  maxFeePerGas: args?.maxFeePerGas,
@@ -62,16 +76,7 @@ export function getNodeError(err: BaseError, args: GetNodeErrorParameters) {
62
76
  maxFeePerGas: args?.maxFeePerGas,
63
77
  maxPriorityFeePerGas: args?.maxPriorityFeePerGas,
64
78
  })
65
- else if (
66
- message.match(ExecutionRevertedError.nodeMessage) ||
67
- ('code' in (err.cause as BaseError) &&
68
- (err.cause as { code: number })?.code === ExecutionRevertedError.code)
69
- )
70
- return new ExecutionRevertedError({
71
- cause: err,
72
- message: (err.cause as BaseError).details || err.details,
73
- })
74
79
  return new UnknownNodeError({
75
- cause: (err.cause as BaseError).cause as BaseError,
80
+ cause: err,
76
81
  })
77
82
  }
@@ -1,14 +1,11 @@
1
1
  import type { Account } from '../../accounts/types.js'
2
2
  import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'
3
3
  import type { BaseError } from '../../errors/base.js'
4
+ import { UnknownNodeError } from '../../errors/node.js'
4
5
  import { TransactionExecutionError } from '../../errors/transaction.js'
5
6
  import type { Chain } from '../../types/chain.js'
6
7
 
7
- import {
8
- type GetNodeErrorParameters,
9
- containsNodeError,
10
- getNodeError,
11
- } from './getNodeError.js'
8
+ import { type GetNodeErrorParameters, getNodeError } from './getNodeError.js'
12
9
 
13
10
  export type GetTransactionErrorParameters = Omit<
14
11
  SendTransactionParameters,
@@ -23,9 +20,8 @@ export function getTransactionError(
23
20
  err: BaseError,
24
21
  { docsPath, ...args }: GetTransactionErrorParameters,
25
22
  ) {
26
- let cause = err
27
- if (containsNodeError(err))
28
- cause = getNodeError(err, args as GetNodeErrorParameters)
23
+ let cause = getNodeError(err, args as GetNodeErrorParameters)
24
+ if (cause instanceof UnknownNodeError) cause = err
29
25
  return new TransactionExecutionError(cause, {
30
26
  docsPath,
31
27
  ...args,
package/src/utils/rpc.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { MessageEvent, WebSocket } from 'isomorphic-ws'
1
+ import WebSocket from 'isomorphic-ws'
2
+ import type { MessageEvent } from 'isomorphic-ws'
2
3
 
3
4
  import {
4
5
  HttpRequestError,
@@ -40,7 +41,7 @@ type Subscription<TResult, TError> = {
40
41
  )
41
42
  }
42
43
 
43
- export type RpcRequest = { method: string; params?: any }
44
+ export type RpcRequest = { method: string; params?: any; id?: number }
44
45
 
45
46
  export type RpcResponse<TResult = any, TError = any> = {
46
47
  jsonrpc: `${number}`
@@ -82,11 +83,11 @@ async function http<TBody extends RpcRequest | RpcRequest[]>(
82
83
  ? stringify(
83
84
  body.map((body) => ({
84
85
  jsonrpc: '2.0',
85
- id: id++,
86
+ id: body.id ?? id++,
86
87
  ...body,
87
88
  })),
88
89
  )
89
- : stringify({ jsonrpc: '2.0', id: id++, ...body }),
90
+ : stringify({ jsonrpc: '2.0', id: body.id ?? id++, ...body }),
90
91
  headers: {
91
92
  ...headers,
92
93
  'Content-Type': 'application/json',
@@ -144,10 +145,10 @@ export type Socket = WebSocket & {
144
145
  subscriptions: CallbackMap
145
146
  }
146
147
 
147
- const sockets = /*#__PURE__*/ new Map<string, Socket>()
148
+ export const socketsCache = /*#__PURE__*/ new Map<string, Socket>()
148
149
 
149
150
  export async function getSocket(url: string) {
150
- let socket = sockets.get(url)
151
+ let socket = socketsCache.get(url)
151
152
 
152
153
  // If the socket already exists, return it.
153
154
  if (socket) return socket
@@ -155,18 +156,6 @@ export async function getSocket(url: string) {
155
156
  const { schedule } = createBatchScheduler<undefined, [Socket]>({
156
157
  id: url,
157
158
  fn: async () => {
158
- let WebSocket = await import('isomorphic-ws')
159
- // Workaround for Vite.
160
- // https://github.com/vitejs/vite/issues/9703
161
- // TODO: Remove when issue is resolved.
162
- if (
163
- (WebSocket as unknown as { default?: typeof WebSocket }).default
164
- ?.constructor
165
- )
166
- WebSocket = (WebSocket as unknown as { default: typeof WebSocket })
167
- .default
168
- else WebSocket = WebSocket.WebSocket
169
-
170
159
  const webSocket = new WebSocket(url)
171
160
 
172
161
  // Set up a cache for incoming "synchronous" requests.
@@ -185,7 +174,7 @@ export async function getSocket(url: string) {
185
174
  if (!isSubscription) cache.delete(id)
186
175
  }
187
176
  const onClose = () => {
188
- sockets.delete(url)
177
+ socketsCache.delete(url)
189
178
  webSocket.removeEventListener('close', onClose)
190
179
  webSocket.removeEventListener('message', onMessage)
191
180
  }
@@ -208,7 +197,7 @@ export async function getSocket(url: string) {
208
197
  requests,
209
198
  subscriptions,
210
199
  })
211
- sockets.set(url, socket)
200
+ socketsCache.set(url, socket)
212
201
 
213
202
  return [socket]
214
203
  },
@@ -8,7 +8,7 @@ import { encodeAbiParameters } from '../abi/encodeAbiParameters.js'
8
8
  import { concat } from '../data/concat.js'
9
9
  import { toHex } from '../encoding/toHex.js'
10
10
  import { keccak256 } from '../hash/keccak256.js'
11
- import { validateTypedData } from '../typedData.js'
11
+ import { getTypesForEIP712Domain, validateTypedData } from '../typedData.js'
12
12
 
13
13
  type MessageTypeProperty = {
14
14
  name: string
@@ -33,19 +33,7 @@ export function hashTypedData<
33
33
  }: HashTypedDataParameters<TTypedData, TPrimaryType>): HashTypedDataReturnType {
34
34
  const domain: TypedDataDomain = typeof domain_ === 'undefined' ? {} : domain_
35
35
  const types = {
36
- EIP712Domain: [
37
- typeof domain?.name === 'string' && { name: 'name', type: 'string' },
38
- domain?.version && { name: 'version', type: 'string' },
39
- typeof domain?.chainId === 'number' && {
40
- name: 'chainId',
41
- type: 'uint256',
42
- },
43
- domain?.verifyingContract && {
44
- name: 'verifyingContract',
45
- type: 'address',
46
- },
47
- domain?.salt && { name: 'salt', type: 'bytes32' },
48
- ].filter(Boolean),
36
+ EIP712Domain: getTypesForEIP712Domain({ domain }),
49
37
  ...(types_ as TTypedData),
50
38
  }
51
39
 
@@ -80,7 +68,7 @@ export function hashTypedData<
80
68
  return keccak256(concat(parts))
81
69
  }
82
70
 
83
- function hashDomain({
71
+ export function hashDomain({
84
72
  domain,
85
73
  types,
86
74
  }: {
@@ -1,6 +1,6 @@
1
1
  import type { Address } from 'abitype'
2
2
 
3
- import type { ByteArray, Hex } from '../../types/misc.js'
3
+ import type { ByteArray, Hex, SignableMessage } from '../../types/misc.js'
4
4
  import { getAddress } from '../address/getAddress.js'
5
5
  import { isAddressEqual } from '../address/isAddressEqual.js'
6
6
 
@@ -10,7 +10,7 @@ export type VerifyMessageParameters = {
10
10
  /** The address that signed the original message. */
11
11
  address: Address
12
12
  /** The message to be verified. */
13
- message: string
13
+ message: SignableMessage
14
14
  /** The signature that was generated by signing the message with the address's private key. */
15
15
  signature: Hex | ByteArray
16
16
  }
@@ -1,4 +1,9 @@
1
- import type { TypedData, TypedDataParameter, TypedDataType } from 'abitype'
1
+ import type {
2
+ TypedData,
3
+ TypedDataDomain,
4
+ TypedDataParameter,
5
+ TypedDataType,
6
+ } from 'abitype'
2
7
 
3
8
  import { BytesSizeMismatchError } from '../errors/abi.js'
4
9
  import { InvalidAddressError } from '../errors/address.js'
@@ -9,6 +14,7 @@ import { isAddress } from './address/isAddress.js'
9
14
  import { size } from './data/size.js'
10
15
  import { numberToHex } from './encoding/toHex.js'
11
16
  import { bytesRegex, integerRegex } from './regex.js'
17
+ import { hashDomain } from './signature/hashTypedData.js'
12
18
 
13
19
  export function validateTypedData<
14
20
  const TTypedData extends TypedData | { [key: string]: unknown },
@@ -71,3 +77,30 @@ export function validateTypedData<
71
77
  validateData(type, message as Record<string, unknown>)
72
78
  }
73
79
  }
80
+
81
+ export function getTypesForEIP712Domain({
82
+ domain,
83
+ }: { domain?: TypedDataDomain }): TypedDataParameter[] {
84
+ return [
85
+ typeof domain?.name === 'string' && { name: 'name', type: 'string' },
86
+ domain?.version && { name: 'version', type: 'string' },
87
+ typeof domain?.chainId === 'number' && {
88
+ name: 'chainId',
89
+ type: 'uint256',
90
+ },
91
+ domain?.verifyingContract && {
92
+ name: 'verifyingContract',
93
+ type: 'address',
94
+ },
95
+ domain?.salt && { name: 'salt', type: 'bytes32' },
96
+ ].filter(Boolean) as TypedDataParameter[]
97
+ }
98
+
99
+ export function domainSeparator({ domain }: { domain: TypedDataDomain }): Hex {
100
+ return hashDomain({
101
+ domain,
102
+ types: {
103
+ EIP712Domain: getTypesForEIP712Domain({ domain }),
104
+ },
105
+ })
106
+ }
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formattersCelo = void 0;
4
- const viem_1 = require("viem");
5
- exports.formattersCelo = {
6
- block: (0, viem_1.defineBlock)({
7
- exclude: ['difficulty', 'gasLimit', 'mixHash', 'nonce', 'uncles'],
8
- format(args) {
9
- const transactions = args.transactions?.map((transaction) => {
10
- if (typeof transaction === 'string')
11
- return transaction;
12
- return {
13
- ...(0, viem_1.formatTransaction)(transaction),
14
- feeCurrency: transaction.feeCurrency,
15
- gatewayFee: transaction.gatewayFee
16
- ? (0, viem_1.hexToBigInt)(transaction.gatewayFee)
17
- : null,
18
- gatewayFeeRecipient: transaction.gatewayFeeRecipient,
19
- };
20
- });
21
- return {
22
- randomness: args.randomness,
23
- transactions,
24
- };
25
- },
26
- }),
27
- transaction: (0, viem_1.defineTransaction)({
28
- format(args) {
29
- return {
30
- feeCurrency: args.feeCurrency,
31
- gatewayFee: args.gatewayFee ? (0, viem_1.hexToBigInt)(args.gatewayFee) : null,
32
- gatewayFeeRecipient: args.gatewayFeeRecipient,
33
- };
34
- },
35
- }),
36
- transactionReceipt: (0, viem_1.defineTransactionReceipt)({
37
- format(args) {
38
- return {
39
- feeCurrency: args.feeCurrency,
40
- gatewayFee: args.gatewayFee ? (0, viem_1.hexToBigInt)(args.gatewayFee) : null,
41
- gatewayFeeRecipient: args.gatewayFeeRecipient,
42
- };
43
- },
44
- }),
45
- transactionRequest: (0, viem_1.defineTransactionRequest)({
46
- format(args) {
47
- return {
48
- feeCurrency: args.feeCurrency,
49
- gatewayFee: typeof args.gatewayFee !== 'undefined'
50
- ? (0, viem_1.numberToHex)(args.gatewayFee)
51
- : undefined,
52
- gatewayFeeRecipient: args.gatewayFeeRecipient,
53
- };
54
- },
55
- }),
56
- };
57
- //# sourceMappingURL=formatters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/celo/formatters.ts"],"names":[],"mappings":";;;AAAA,+BAUa;AAcA,QAAA,cAAc,GAAG;IAC5B,KAAK,EAAgB,IAAA,kBAAW,EAAC;QAC/B,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC;QACjE,MAAM,CACJ,IAEC;YAID,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC1D,IAAI,OAAO,WAAW,KAAK,QAAQ;oBAAE,OAAO,WAAW,CAAA;gBACvD,OAAO;oBACL,GAAG,IAAA,wBAAiB,EAAC,WAAW,CAAC;oBACjC,WAAW,EAAE,WAAW,CAAC,WAAW;oBACpC,UAAU,EAAE,WAAW,CAAC,UAAU;wBAChC,CAAC,CAAC,IAAA,kBAAW,EAAC,WAAW,CAAC,UAAU,CAAC;wBACrC,CAAC,CAAC,IAAI;oBACR,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;iBACrD,CAAA;YACH,CAAC,CAA+B,CAAA;YAChC,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,YAAY;aACb,CAAA;QACH,CAAC;KACF,CAAC;IACF,WAAW,EAAgB,IAAA,wBAAiB,EAAC;QAC3C,MAAM,CAAC,IAAiC;YACtC,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;gBACjE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAA;QACH,CAAC;KACF,CAAC;IACF,kBAAkB,EAAgB,IAAA,+BAAwB,EAAC;QACzD,MAAM,CACJ,IAAwC;YAExC,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;gBACjE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAA;QACH,CAAC;KACF,CAAC;IACF,kBAAkB,EAAgB,IAAA,+BAAwB,EAAC;QACzD,MAAM,CACJ,IAAqC;YAErC,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EACR,OAAO,IAAI,CAAC,UAAU,KAAK,WAAW;oBACpC,CAAC,CAAC,IAAA,kBAAW,EAAC,IAAI,CAAC,UAAU,CAAC;oBAC9B,CAAC,CAAC,SAAS;gBACf,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;aAC9C,CAAA;QACH,CAAC;KACF,CAAC;CACgC,CAAA"}
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseTransactionCelo = void 0;
4
- const viem_1 = require("viem");
5
- const serializers_js_1 = require("./serializers.js");
6
- function parseTransactionCelo(serializedTransaction) {
7
- const serializedType = (0, viem_1.sliceHex)(serializedTransaction, 0, 1);
8
- if (serializedType === '0x7c')
9
- return parseTransactionCIP42(serializedTransaction);
10
- return (0, viem_1.parseTransaction)(serializedTransaction);
11
- }
12
- exports.parseTransactionCelo = parseTransactionCelo;
13
- function parseTransactionCIP42(serializedTransaction) {
14
- const transactionArray = (0, viem_1.toTransactionArray)(serializedTransaction);
15
- const [chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gas, feeCurrency, gatewayFeeRecipient, gatewayFee, to, value, data, accessList, v, r, s,] = transactionArray;
16
- if (transactionArray.length !== 15 && transactionArray.length !== 12) {
17
- throw new viem_1.InvalidSerializedTransactionError({
18
- attributes: {
19
- chainId,
20
- nonce,
21
- maxPriorityFeePerGas,
22
- maxFeePerGas,
23
- gas,
24
- feeCurrency,
25
- to,
26
- gatewayFeeRecipient,
27
- gatewayFee,
28
- value,
29
- data,
30
- accessList,
31
- ...(transactionArray.length > 12
32
- ? {
33
- v,
34
- r,
35
- s,
36
- }
37
- : {}),
38
- },
39
- serializedTransaction,
40
- type: 'cip42',
41
- });
42
- }
43
- const transaction = {
44
- chainId: (0, viem_1.hexToNumber)(chainId),
45
- type: 'cip42',
46
- };
47
- if ((0, viem_1.isHex)(to) && to !== '0x')
48
- transaction.to = to;
49
- if ((0, viem_1.isHex)(gas) && gas !== '0x')
50
- transaction.gas = (0, viem_1.hexToBigInt)(gas);
51
- if ((0, viem_1.isHex)(data) && data !== '0x')
52
- transaction.data = data;
53
- if ((0, viem_1.isHex)(nonce) && nonce !== '0x')
54
- transaction.nonce = (0, viem_1.hexToNumber)(nonce);
55
- if ((0, viem_1.isHex)(value) && value !== '0x')
56
- transaction.value = (0, viem_1.hexToBigInt)(value);
57
- if ((0, viem_1.isHex)(feeCurrency) && feeCurrency !== '0x')
58
- transaction.feeCurrency = feeCurrency;
59
- if ((0, viem_1.isHex)(gatewayFeeRecipient) && gatewayFeeRecipient !== '0x')
60
- transaction.gatewayFeeRecipient = gatewayFeeRecipient;
61
- if ((0, viem_1.isHex)(gatewayFee) && gatewayFee !== '0x')
62
- transaction.gatewayFee = (0, viem_1.hexToBigInt)(gatewayFee);
63
- if ((0, viem_1.isHex)(maxFeePerGas) && maxFeePerGas !== '0x')
64
- transaction.maxFeePerGas = (0, viem_1.hexToBigInt)(maxFeePerGas);
65
- if ((0, viem_1.isHex)(maxPriorityFeePerGas) && maxPriorityFeePerGas !== '0x')
66
- transaction.maxPriorityFeePerGas = (0, viem_1.hexToBigInt)(maxPriorityFeePerGas);
67
- if (accessList.length !== 0 && accessList !== '0x')
68
- transaction.accessList = (0, viem_1.parseAccessList)(accessList);
69
- (0, serializers_js_1.assertTransactionCIP42)(transaction);
70
- return transaction;
71
- }
72
- //# sourceMappingURL=parsers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/celo/parsers.ts"],"names":[],"mappings":"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"}
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertTransactionCIP42 = exports.serializersCelo = exports.serializeTransactionCelo = void 0;
4
- const viem_1 = require("viem");
5
- const serializeTransactionCelo = (tx, signature) => {
6
- if (isCIP42(tx))
7
- return serializeTransactionCIP42(tx, signature);
8
- return (0, viem_1.serializeTransaction)(tx, signature);
9
- };
10
- exports.serializeTransactionCelo = serializeTransactionCelo;
11
- exports.serializersCelo = {
12
- transaction: exports.serializeTransactionCelo,
13
- };
14
- function serializeTransactionCIP42(transaction, signature) {
15
- assertTransactionCIP42(transaction);
16
- const { chainId, gas, nonce, to, value, maxFeePerGas, maxPriorityFeePerGas, accessList, feeCurrency, gatewayFeeRecipient, gatewayFee, data, } = transaction;
17
- const serializedTransaction = [
18
- (0, viem_1.toHex)(chainId),
19
- nonce ? (0, viem_1.toHex)(nonce) : '0x',
20
- maxPriorityFeePerGas ? (0, viem_1.toHex)(maxPriorityFeePerGas) : '0x',
21
- maxFeePerGas ? (0, viem_1.toHex)(maxFeePerGas) : '0x',
22
- gas ? (0, viem_1.toHex)(gas) : '0x',
23
- feeCurrency ?? '0x',
24
- gatewayFeeRecipient ?? '0x',
25
- gatewayFee ? (0, viem_1.toHex)(gatewayFee) : '0x',
26
- to ?? '0x',
27
- value ? (0, viem_1.toHex)(value) : '0x',
28
- data ?? '0x',
29
- (0, viem_1.serializeAccessList)(accessList),
30
- ];
31
- if (signature) {
32
- serializedTransaction.push(signature.v === 27n ? '0x' : (0, viem_1.toHex)(1), (0, viem_1.trim)(signature.r), (0, viem_1.trim)(signature.s));
33
- }
34
- return (0, viem_1.concatHex)([
35
- '0x7c',
36
- (0, viem_1.toRlp)(serializedTransaction),
37
- ]);
38
- }
39
- function isCIP42(transaction) {
40
- if ('maxFeePerGas' in transaction &&
41
- 'maxPriorityFeePerGas' in transaction &&
42
- ('feeCurrency' in transaction ||
43
- 'gatewayFee' in transaction ||
44
- 'gatewayFeeRecipient' in transaction))
45
- return true;
46
- return false;
47
- }
48
- const MAX_MAX_FEE_PER_GAS = 115792089237316195423570985008687907853269984665640564039457584007913129639935n;
49
- function assertTransactionCIP42(transaction) {
50
- const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to, feeCurrency, gatewayFee, gatewayFeeRecipient, } = transaction;
51
- if (chainId <= 0)
52
- throw new viem_1.InvalidChainIdError({ chainId });
53
- if (to && !(0, viem_1.isAddress)(to))
54
- throw new viem_1.InvalidAddressError({ address: to });
55
- if (gasPrice)
56
- throw new viem_1.BaseError('`gasPrice` is not a valid CIP-42 Transaction attribute.');
57
- if (maxFeePerGas && maxFeePerGas > MAX_MAX_FEE_PER_GAS)
58
- throw new viem_1.FeeCapTooHighError({ maxFeePerGas });
59
- if (maxPriorityFeePerGas &&
60
- maxFeePerGas &&
61
- maxPriorityFeePerGas > maxFeePerGas)
62
- throw new viem_1.TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas });
63
- if ((gatewayFee && !gatewayFeeRecipient) ||
64
- (gatewayFeeRecipient && !gatewayFee)) {
65
- throw new viem_1.BaseError('`gatewayFee` and `gatewayFeeRecipient` must be provided together.');
66
- }
67
- if (feeCurrency && !feeCurrency?.startsWith('0x')) {
68
- throw new viem_1.BaseError('`feeCurrency` MUST be a token address for CIP-42 transactions.');
69
- }
70
- if (!feeCurrency && !gatewayFeeRecipient) {
71
- throw new viem_1.BaseError('Either `feeCurrency` or `gatewayFeeRecipient` must be provided for CIP-42 transactions.');
72
- }
73
- }
74
- exports.assertTransactionCIP42 = assertTransactionCIP42;
75
- //# sourceMappingURL=serializers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializers.js","sourceRoot":"","sources":["../../../src/celo/serializers.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/celo/types.ts"],"names":[],"mappings":""}