ox 0.8.9 → 0.9.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 (247) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/_cjs/core/AbiEvent.js +1 -1
  3. package/_cjs/core/AbiEvent.js.map +1 -1
  4. package/_cjs/core/AbiItem.js +1 -1
  5. package/_cjs/core/AbiItem.js.map +1 -1
  6. package/_cjs/core/AbiParameters.js +4 -4
  7. package/_cjs/core/AbiParameters.js.map +1 -1
  8. package/_cjs/core/Authorization.js.map +1 -1
  9. package/_cjs/core/Blobs.js +1 -1
  10. package/_cjs/core/Blobs.js.map +1 -1
  11. package/_cjs/core/Block.js.map +1 -1
  12. package/_cjs/core/Bytes.js +1 -1
  13. package/_cjs/core/Bytes.js.map +1 -1
  14. package/_cjs/core/ContractAddress.js.map +1 -1
  15. package/_cjs/core/HdKey.js.map +1 -1
  16. package/_cjs/core/Hex.js +1 -1
  17. package/_cjs/core/Hex.js.map +1 -1
  18. package/_cjs/core/Keystore.js.map +1 -1
  19. package/_cjs/core/Mnemonic.js +2 -2
  20. package/_cjs/core/Mnemonic.js.map +1 -1
  21. package/_cjs/core/P256.js +1 -1
  22. package/_cjs/core/P256.js.map +1 -1
  23. package/_cjs/core/Provider.js.map +1 -1
  24. package/_cjs/core/PublicKey.js +1 -1
  25. package/_cjs/core/PublicKey.js.map +1 -1
  26. package/_cjs/core/RpcTransport.js +1 -1
  27. package/_cjs/core/RpcTransport.js.map +1 -1
  28. package/_cjs/core/Secp256k1.js +1 -1
  29. package/_cjs/core/Secp256k1.js.map +1 -1
  30. package/_cjs/core/Signature.js.map +1 -1
  31. package/_cjs/core/Siwe.js +4 -4
  32. package/_cjs/core/Siwe.js.map +1 -1
  33. package/_cjs/core/Transaction.js.map +1 -1
  34. package/_cjs/core/TransactionEnvelope.js.map +1 -1
  35. package/_cjs/core/TransactionEnvelopeEip1559.js.map +1 -1
  36. package/_cjs/core/TransactionEnvelopeEip2930.js.map +1 -1
  37. package/_cjs/core/TransactionEnvelopeEip4844.js.map +1 -1
  38. package/_cjs/core/TransactionEnvelopeEip7702.js.map +1 -1
  39. package/_cjs/core/TransactionEnvelopeLegacy.js.map +1 -1
  40. package/_cjs/core/TransactionReceipt.js.map +1 -1
  41. package/_cjs/core/TypedData.js +3 -3
  42. package/_cjs/core/TypedData.js.map +1 -1
  43. package/_cjs/core/WebAuthnP256.js +1 -1
  44. package/_cjs/core/WebAuthnP256.js.map +1 -1
  45. package/_cjs/core/WebCryptoP256.js.map +1 -1
  46. package/_cjs/core/internal/abiParameters.js +4 -4
  47. package/_cjs/core/internal/abiParameters.js.map +1 -1
  48. package/_cjs/core/internal/promise.js.map +1 -1
  49. package/_cjs/erc4337/UserOperation.js.map +1 -1
  50. package/_cjs/erc6492/{WrappedSignature.js → SignatureErc6492.js} +9 -11
  51. package/_cjs/erc6492/SignatureErc6492.js.map +1 -0
  52. package/_cjs/erc6492/index.js +2 -2
  53. package/_cjs/erc8010/SignatureErc8010.js +93 -0
  54. package/_cjs/erc8010/SignatureErc8010.js.map +1 -0
  55. package/_cjs/erc8010/index.js +5 -0
  56. package/_cjs/erc8010/index.js.map +1 -0
  57. package/_cjs/index.docs.js +1 -0
  58. package/_cjs/index.docs.js.map +1 -1
  59. package/_cjs/index.js +6 -6
  60. package/_cjs/index.js.map +1 -1
  61. package/_cjs/trusted-setups/internal/paths.js.map +1 -1
  62. package/_cjs/version.js +1 -1
  63. package/_esm/core/AbiEvent.js +1 -1
  64. package/_esm/core/AbiEvent.js.map +1 -1
  65. package/_esm/core/AbiItem.js +1 -1
  66. package/_esm/core/AbiItem.js.map +1 -1
  67. package/_esm/core/AbiParameters.js +4 -4
  68. package/_esm/core/AbiParameters.js.map +1 -1
  69. package/_esm/core/Authorization.js.map +1 -1
  70. package/_esm/core/Blobs.js +1 -1
  71. package/_esm/core/Blobs.js.map +1 -1
  72. package/_esm/core/Block.js.map +1 -1
  73. package/_esm/core/Bytes.js +1 -1
  74. package/_esm/core/Bytes.js.map +1 -1
  75. package/_esm/core/ContractAddress.js.map +1 -1
  76. package/_esm/core/HdKey.js.map +1 -1
  77. package/_esm/core/Hex.js +1 -1
  78. package/_esm/core/Hex.js.map +1 -1
  79. package/_esm/core/Keystore.js +3 -2
  80. package/_esm/core/Keystore.js.map +1 -1
  81. package/_esm/core/Mnemonic.js +1 -1
  82. package/_esm/core/Mnemonic.js.map +1 -1
  83. package/_esm/core/P256.js +1 -1
  84. package/_esm/core/P256.js.map +1 -1
  85. package/_esm/core/Provider.js.map +1 -1
  86. package/_esm/core/PublicKey.js +1 -1
  87. package/_esm/core/PublicKey.js.map +1 -1
  88. package/_esm/core/RpcTransport.js +1 -1
  89. package/_esm/core/RpcTransport.js.map +1 -1
  90. package/_esm/core/Secp256k1.js +1 -1
  91. package/_esm/core/Secp256k1.js.map +1 -1
  92. package/_esm/core/Signature.js.map +1 -1
  93. package/_esm/core/Siwe.js +4 -4
  94. package/_esm/core/Siwe.js.map +1 -1
  95. package/_esm/core/Transaction.js.map +1 -1
  96. package/_esm/core/TransactionEnvelope.js.map +1 -1
  97. package/_esm/core/TransactionEnvelopeEip1559.js.map +1 -1
  98. package/_esm/core/TransactionEnvelopeEip2930.js.map +1 -1
  99. package/_esm/core/TransactionEnvelopeEip4844.js.map +1 -1
  100. package/_esm/core/TransactionEnvelopeEip7702.js.map +1 -1
  101. package/_esm/core/TransactionEnvelopeLegacy.js.map +1 -1
  102. package/_esm/core/TransactionReceipt.js.map +1 -1
  103. package/_esm/core/TypedData.js +3 -3
  104. package/_esm/core/TypedData.js.map +1 -1
  105. package/_esm/core/WebAuthnP256.js +1 -1
  106. package/_esm/core/WebAuthnP256.js.map +1 -1
  107. package/_esm/core/WebCryptoP256.js.map +1 -1
  108. package/_esm/core/internal/abiParameters.js +4 -4
  109. package/_esm/core/internal/abiParameters.js.map +1 -1
  110. package/_esm/core/internal/promise.js.map +1 -1
  111. package/_esm/erc4337/UserOperation.js.map +1 -1
  112. package/_esm/erc6492/{WrappedSignature.js → SignatureErc6492.js} +18 -20
  113. package/_esm/erc6492/SignatureErc6492.js.map +1 -0
  114. package/_esm/erc6492/index.js +3 -3
  115. package/_esm/erc8010/SignatureErc8010.js +182 -0
  116. package/_esm/erc8010/SignatureErc8010.js.map +1 -0
  117. package/_esm/erc8010/index.js +40 -0
  118. package/_esm/erc8010/index.js.map +1 -0
  119. package/_esm/index.docs.js +2 -0
  120. package/_esm/index.docs.js.map +1 -1
  121. package/_esm/index.js +236 -236
  122. package/_esm/index.js.map +1 -1
  123. package/_esm/trusted-setups/internal/paths.js +1 -0
  124. package/_esm/trusted-setups/internal/paths.js.map +1 -1
  125. package/_esm/version.js +1 -1
  126. package/_types/core/AbiEvent.d.ts +1 -2
  127. package/_types/core/AbiEvent.d.ts.map +1 -1
  128. package/_types/core/AbiParameters.d.ts.map +1 -1
  129. package/_types/core/Authorization.d.ts +1 -1
  130. package/_types/core/Authorization.d.ts.map +1 -1
  131. package/_types/core/Blobs.d.ts +1 -1
  132. package/_types/core/Blobs.d.ts.map +1 -1
  133. package/_types/core/Block.d.ts +1 -1
  134. package/_types/core/Block.d.ts.map +1 -1
  135. package/_types/core/Bytes.d.ts.map +1 -1
  136. package/_types/core/ContractAddress.d.ts +1 -1
  137. package/_types/core/ContractAddress.d.ts.map +1 -1
  138. package/_types/core/HdKey.d.ts +1 -1
  139. package/_types/core/HdKey.d.ts.map +1 -1
  140. package/_types/core/Hex.d.ts.map +1 -1
  141. package/_types/core/Keystore.d.ts.map +1 -1
  142. package/_types/core/Mnemonic.d.ts +1 -1
  143. package/_types/core/Mnemonic.d.ts.map +1 -1
  144. package/_types/core/P256.d.ts.map +1 -1
  145. package/_types/core/Provider.d.ts +2 -2
  146. package/_types/core/Provider.d.ts.map +1 -1
  147. package/_types/core/PublicKey.d.ts.map +1 -1
  148. package/_types/core/RpcRequest.d.ts +1 -1
  149. package/_types/core/RpcRequest.d.ts.map +1 -1
  150. package/_types/core/RpcTransport.d.ts +2 -2
  151. package/_types/core/RpcTransport.d.ts.map +1 -1
  152. package/_types/core/Secp256k1.d.ts +1 -1
  153. package/_types/core/Secp256k1.d.ts.map +1 -1
  154. package/_types/core/Signature.d.ts.map +1 -1
  155. package/_types/core/Siwe.d.ts.map +1 -1
  156. package/_types/core/Transaction.d.ts +1 -2
  157. package/_types/core/Transaction.d.ts.map +1 -1
  158. package/_types/core/TransactionEnvelope.d.ts.map +1 -1
  159. package/_types/core/TransactionEnvelopeEip1559.d.ts +1 -1
  160. package/_types/core/TransactionEnvelopeEip1559.d.ts.map +1 -1
  161. package/_types/core/TransactionEnvelopeEip2930.d.ts +1 -1
  162. package/_types/core/TransactionEnvelopeEip2930.d.ts.map +1 -1
  163. package/_types/core/TransactionEnvelopeEip4844.d.ts +1 -1
  164. package/_types/core/TransactionEnvelopeEip4844.d.ts.map +1 -1
  165. package/_types/core/TransactionEnvelopeEip7702.d.ts +1 -3
  166. package/_types/core/TransactionEnvelopeEip7702.d.ts.map +1 -1
  167. package/_types/core/TransactionEnvelopeLegacy.d.ts +1 -1
  168. package/_types/core/TransactionEnvelopeLegacy.d.ts.map +1 -1
  169. package/_types/core/TransactionReceipt.d.ts +1 -1
  170. package/_types/core/TransactionReceipt.d.ts.map +1 -1
  171. package/_types/core/TypedData.d.ts +1 -1
  172. package/_types/core/TypedData.d.ts.map +1 -1
  173. package/_types/core/WebAuthnP256.d.ts +2 -2
  174. package/_types/core/WebAuthnP256.d.ts.map +1 -1
  175. package/_types/core/WebCryptoP256.d.ts +1 -1
  176. package/_types/core/WebCryptoP256.d.ts.map +1 -1
  177. package/_types/core/internal/abiParameters.d.ts +1 -1
  178. package/_types/core/internal/abiParameters.d.ts.map +1 -1
  179. package/_types/core/internal/promise.d.ts.map +1 -1
  180. package/_types/core/internal/register.d.ts +1 -2
  181. package/_types/core/internal/register.d.ts.map +1 -1
  182. package/_types/erc4337/UserOperation.d.ts +1 -1
  183. package/_types/erc4337/UserOperation.d.ts.map +1 -1
  184. package/_types/erc6492/{WrappedSignature.d.ts → SignatureErc6492.d.ts} +28 -26
  185. package/_types/erc6492/SignatureErc6492.d.ts.map +1 -0
  186. package/_types/erc6492/index.d.ts +3 -3
  187. package/_types/erc8010/SignatureErc8010.d.ts +138 -0
  188. package/_types/erc8010/SignatureErc8010.d.ts.map +1 -0
  189. package/_types/erc8010/index.d.ts +42 -0
  190. package/_types/erc8010/index.d.ts.map +1 -0
  191. package/_types/index.d.ts +237 -237
  192. package/_types/index.d.ts.map +1 -1
  193. package/_types/index.docs.d.ts +1 -0
  194. package/_types/index.docs.d.ts.map +1 -1
  195. package/_types/trusted-setups/internal/paths.d.ts.map +1 -1
  196. package/_types/version.d.ts +1 -1
  197. package/core/AbiEvent.ts +3 -4
  198. package/core/AbiItem.ts +1 -1
  199. package/core/AbiParameters.ts +4 -4
  200. package/core/Authorization.ts +1 -1
  201. package/core/Blobs.ts +1 -1
  202. package/core/Block.ts +1 -1
  203. package/core/Bytes.ts +1 -1
  204. package/core/ContractAddress.ts +1 -1
  205. package/core/HdKey.ts +1 -1
  206. package/core/Hex.ts +1 -1
  207. package/core/Keystore.ts +3 -2
  208. package/core/Mnemonic.ts +1 -1
  209. package/core/P256.ts +1 -1
  210. package/core/Provider.ts +2 -2
  211. package/core/PublicKey.ts +2 -2
  212. package/core/RpcRequest.ts +1 -1
  213. package/core/RpcTransport.ts +3 -3
  214. package/core/Secp256k1.ts +2 -2
  215. package/core/Signature.ts +1 -1
  216. package/core/Siwe.ts +4 -5
  217. package/core/Transaction.ts +1 -2
  218. package/core/TransactionEnvelope.ts +1 -1
  219. package/core/TransactionEnvelopeEip1559.ts +3 -3
  220. package/core/TransactionEnvelopeEip2930.ts +3 -3
  221. package/core/TransactionEnvelopeEip4844.ts +5 -5
  222. package/core/TransactionEnvelopeEip7702.ts +6 -5
  223. package/core/TransactionEnvelopeLegacy.ts +3 -3
  224. package/core/TransactionReceipt.ts +1 -1
  225. package/core/TypedData.ts +4 -4
  226. package/core/WebAuthnP256.ts +2 -2
  227. package/core/WebCryptoP256.ts +1 -1
  228. package/core/internal/abiParameters.ts +5 -5
  229. package/core/internal/promise.ts +3 -1
  230. package/core/internal/register.ts +1 -2
  231. package/erc4337/UserOperation.ts +1 -1
  232. package/erc6492/SignatureErc6492/package.json +6 -0
  233. package/erc6492/{WrappedSignature.ts → SignatureErc6492.ts} +31 -30
  234. package/erc6492/index.ts +3 -3
  235. package/erc8010/SignatureErc8010/package.json +6 -0
  236. package/erc8010/SignatureErc8010.ts +227 -0
  237. package/erc8010/index.ts +43 -0
  238. package/erc8010/package.json +6 -0
  239. package/index.docs.ts +2 -0
  240. package/index.ts +237 -261
  241. package/package.json +15 -5
  242. package/trusted-setups/internal/paths.ts +1 -0
  243. package/version.ts +1 -1
  244. package/_cjs/erc6492/WrappedSignature.js.map +0 -1
  245. package/_esm/erc6492/WrappedSignature.js.map +0 -1
  246. package/_types/erc6492/WrappedSignature.d.ts.map +0 -1
  247. package/erc6492/WrappedSignature/package.json +0 -6
@@ -1,7 +1,6 @@
1
1
  import * as AbiParameters from '../core/AbiParameters.js';
2
2
  import * as Errors from '../core/Errors.js';
3
3
  import * as Hex from '../core/Hex.js';
4
- import * as Signature from '../core/Signature.js';
5
4
  /**
6
5
  * Magic bytes used to identify ERC-6492 wrapped signatures.
7
6
  */
@@ -64,9 +63,9 @@ export const universalSignatureValidatorAbi = [
64
63
  *
65
64
  * @example
66
65
  * ```ts twoslash
67
- * import { WrappedSignature } from 'ox/erc6492'
66
+ * import { SignatureErc6492 } from 'ox/erc6492'
68
67
  *
69
- * WrappedSignature.assert('0xdeadbeef')
68
+ * SignatureErc6492.assert('0xdeadbeef')
70
69
  * // @error: InvalidWrappedSignatureError: Value `0xdeadbeef` is an invalid ERC-6492 wrapped signature.
71
70
  * ```
72
71
  *
@@ -83,7 +82,7 @@ export function assert(wrapped) {
83
82
  * ```ts twoslash
84
83
  * // @noErrors
85
84
  * import { Secp256k1 } from 'ox'
86
- * import { WrappedSignature } from 'ox/erc6492' // [!code focus]
85
+ * import { SignatureErc6492 } from 'ox/erc6492' // [!code focus]
87
86
  *
88
87
  * const signature = Secp256k1.sign({
89
88
  * payload: '0x...',
@@ -91,11 +90,11 @@ export function assert(wrapped) {
91
90
  * })
92
91
  *
93
92
  * // Instantiate from serialized format. // [!code focus]
94
- * const wrapped = WrappedSignature.from('0x...') // [!code focus]
93
+ * const wrapped = SignatureErc6492.from('0x...') // [!code focus]
95
94
  * // @log: { data: '0x...', signature: { ... }, to: '0x...', } // [!code focus]
96
95
  *
97
96
  * // Instantiate from constituent parts. // [!code focus]
98
- * const wrapped = WrappedSignature.from({ // [!code focus]
97
+ * const wrapped = SignatureErc6492.from({ // [!code focus]
99
98
  * data: '0x...', // [!code focus]
100
99
  * signature, // [!code focus]
101
100
  * to: '0x...', // [!code focus]
@@ -108,7 +107,7 @@ export function assert(wrapped) {
108
107
  */
109
108
  export function from(wrapped) {
110
109
  if (typeof wrapped === 'string')
111
- return fromHex(wrapped);
110
+ return unwrap(wrapped);
112
111
  return wrapped;
113
112
  }
114
113
  /**
@@ -116,18 +115,17 @@ export function from(wrapped) {
116
115
  *
117
116
  * @example
118
117
  * ```ts twoslash
119
- * import { WrappedSignature } from 'ox/erc6492'
118
+ * import { SignatureErc6492 } from 'ox/erc6492'
120
119
  *
121
- * const { data, signature, to } = WrappedSignature.fromHex('0x...')
120
+ * const { data, signature, to } = SignatureErc6492.unwrap('0x...')
122
121
  * ```
123
122
  *
124
123
  * @param wrapped - Wrapped signature to parse.
125
124
  * @returns Wrapped signature.
126
125
  */
127
- export function fromHex(wrapped) {
126
+ export function unwrap(wrapped) {
128
127
  assert(wrapped);
129
- const [to, data, signature_hex] = AbiParameters.decode(AbiParameters.from('address, bytes, bytes'), wrapped);
130
- const signature = Signature.fromHex(signature_hex);
128
+ const [to, data, signature] = AbiParameters.decode(AbiParameters.from('address, bytes, bytes'), wrapped);
131
129
  return { data, signature, to };
132
130
  }
133
131
  /**
@@ -136,14 +134,14 @@ export function fromHex(wrapped) {
136
134
  * @example
137
135
  * ```ts twoslash
138
136
  * import { Secp256k1 } from 'ox'
139
- * import { WrappedSignature } from 'ox/erc6492' // [!code focus]
137
+ * import { SignatureErc6492 } from 'ox/erc6492' // [!code focus]
140
138
  *
141
139
  * const signature = Secp256k1.sign({
142
140
  * payload: '0x...',
143
141
  * privateKey: '0x...',
144
142
  * })
145
143
  *
146
- * const wrapped = WrappedSignature.toHex({ // [!code focus]
144
+ * const wrapped = SignatureErc6492.wrap({ // [!code focus]
147
145
  * data: '0xdeadbeef', // [!code focus]
148
146
  * signature, // [!code focus]
149
147
  * to: '0x00000000219ab540356cBB839Cbe05303d7705Fa', // [!code focus]
@@ -153,12 +151,12 @@ export function fromHex(wrapped) {
153
151
  * @param value - Wrapped signature to serialize.
154
152
  * @returns Serialized wrapped signature.
155
153
  */
156
- export function toHex(value) {
154
+ export function wrap(value) {
157
155
  const { data, signature, to } = value;
158
156
  return Hex.concat(AbiParameters.encode(AbiParameters.from('address, bytes, bytes'), [
159
157
  to,
160
158
  data,
161
- Signature.toHex(signature),
159
+ signature,
162
160
  ]), magicBytes);
163
161
  }
164
162
  /**
@@ -166,9 +164,9 @@ export function toHex(value) {
166
164
  *
167
165
  * @example
168
166
  * ```ts twoslash
169
- * import { WrappedSignature } from 'ox/erc6492'
167
+ * import { SignatureErc6492 } from 'ox/erc6492'
170
168
  *
171
- * const valid = WrappedSignature.validate('0xdeadbeef')
169
+ * const valid = SignatureErc6492.validate('0xdeadbeef')
172
170
  * // @log: false
173
171
  * ```
174
172
  *
@@ -192,8 +190,8 @@ export class InvalidWrappedSignatureError extends Errors.BaseError {
192
190
  enumerable: true,
193
191
  configurable: true,
194
192
  writable: true,
195
- value: 'WrappedSignature.InvalidWrappedSignatureError'
193
+ value: 'SignatureErc6492.InvalidWrappedSignatureError'
196
194
  });
197
195
  }
198
196
  }
199
- //# sourceMappingURL=WrappedSignature.js.map
197
+ //# sourceMappingURL=SignatureErc6492.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignatureErc6492.js","sourceRoot":"","sources":["../../erc6492/SignatureErc6492.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,14 @@
4
4
  * @example
5
5
  * ```ts twoslash
6
6
  * import { Secp256k1, PersonalMessage } from 'ox'
7
- * import { WrappedSignature } from 'ox/erc6492' // [!code focus]
7
+ * import { SignatureErc6492 } from 'ox/erc6492' // [!code focus]
8
8
  *
9
9
  * const signature = Secp256k1.sign({
10
10
  * payload: PersonalMessage.getSignPayload('0xdeadbeef'),
11
11
  * privateKey: '0x...',
12
12
  * })
13
13
  *
14
- * const wrapped = WrappedSignature.toHex({ // [!code focus]
14
+ * const wrapped = SignatureErc6492.wrap({ // [!code focus]
15
15
  * data: '0xcafebabe', // [!code focus]
16
16
  * signature, // [!code focus]
17
17
  * to: '0xcafebabecafebabecafebabecafebabecafebabe', // [!code focus]
@@ -21,5 +21,5 @@
21
21
  *
22
22
  * @category ERC-6492
23
23
  */
24
- export * as WrappedSignature from './WrappedSignature.js';
24
+ export * as SignatureErc6492 from './SignatureErc6492.js';
25
25
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,182 @@
1
+ import * as AbiParameters from '../core/AbiParameters.js';
2
+ import * as Authorization from '../core/Authorization.js';
3
+ import * as Errors from '../core/Errors.js';
4
+ import * as Hex from '../core/Hex.js';
5
+ import * as Signature from '../core/Signature.js';
6
+ /**
7
+ * Magic bytes used to identify ERC-8010 wrapped signatures.
8
+ */
9
+ export const magicBytes = '0x8010801080108010801080108010801080108010801080108010801080108010';
10
+ /**
11
+ * Asserts that the wrapped signature is valid.
12
+ *
13
+ * @example
14
+ * ```ts twoslash
15
+ * import { SignatureErc8010 } from 'ox/erc8010'
16
+ *
17
+ * SignatureErc8010.assert('0xdeadbeef')
18
+ * // @error: InvalidWrappedSignatureError: Value `0xdeadbeef` is an invalid ERC-8010 wrapped signature.
19
+ * ```
20
+ *
21
+ * @param value - The value to assert.
22
+ */
23
+ export function assert(value) {
24
+ if (typeof value === 'string') {
25
+ if (Hex.slice(value, -32) !== magicBytes)
26
+ throw new InvalidWrappedSignatureError(value);
27
+ }
28
+ else
29
+ Signature.assert(value.authorization);
30
+ }
31
+ /**
32
+ * Parses an [ERC-8010 wrapped signature](https://github.com/jxom/ERCs/blob/16f7e3891fff2e1e9c25dea0485497739db8a816/ERCS/erc-8010.md) into its constituent parts.
33
+ *
34
+ * @example
35
+ * ```ts twoslash
36
+ * // @noErrors
37
+ * import { Secp256k1 } from 'ox'
38
+ * import { SignatureErc8010 } from 'ox/erc8010' // [!code focus]
39
+ *
40
+ * const signature = Secp256k1.sign({
41
+ * payload: '0x...',
42
+ * privateKey: '0x...',
43
+ * })
44
+ *
45
+ * // Instantiate from serialized format. // [!code focus]
46
+ * const wrapped = SignatureErc8010.from('0x...') // [!code focus]
47
+ * // @log: { authorization: { ... }, data: '0x...', signature: { ... } } // [!code focus]
48
+ *
49
+ * // Instantiate from constituent parts. // [!code focus]
50
+ * const wrapped = SignatureErc8010.from({ // [!code focus]
51
+ * authorization: { ... }, // [!code focus]
52
+ * data: '0x...', // [!code focus]
53
+ * signature, // [!code focus]
54
+ * })
55
+ * // @log: { authorization: { ... }, data: '0x...', signature: { ... } }
56
+ * ```
57
+ *
58
+ * @param value - Value to parse.
59
+ * @returns Parsed value.
60
+ */
61
+ export function from(value) {
62
+ if (typeof value === 'string')
63
+ return unwrap(value);
64
+ return value;
65
+ }
66
+ /**
67
+ * Unwraps an [ERC-8010 wrapped signature](https://github.com/jxom/ERCs/blob/16f7e3891fff2e1e9c25dea0485497739db8a816/ERCS/erc-8010.md) into its constituent parts.
68
+ *
69
+ * @example
70
+ * ```ts twoslash
71
+ * import { SignatureErc8010 } from 'ox/erc8010'
72
+ *
73
+ * const { authorization, data, signature } = SignatureErc8010.unwrap('0x...')
74
+ * ```
75
+ *
76
+ * @param wrapped - Wrapped signature to unwrap.
77
+ * @returns Unwrapped signature.
78
+ */
79
+ export function unwrap(wrapped) {
80
+ assert(wrapped);
81
+ const suffixLength = Hex.toNumber(Hex.slice(wrapped, -64, -32));
82
+ const suffix = Hex.slice(wrapped, -suffixLength - 64, -64);
83
+ const signature = Hex.slice(wrapped, 0, -suffixLength - 64);
84
+ const chainId = Hex.toNumber(Hex.slice(suffix, 0, 32));
85
+ const delegation = Hex.slice(suffix, 32, 52);
86
+ const nonce = Hex.toBigInt(Hex.slice(suffix, 52, 84));
87
+ const yParity = Hex.toNumber(Hex.slice(suffix, 84, 85));
88
+ const r = Hex.toBigInt(Hex.slice(suffix, 85, 117));
89
+ const s = Hex.toBigInt(Hex.slice(suffix, 117, 149));
90
+ const authorization = Authorization.from({
91
+ address: delegation,
92
+ chainId,
93
+ nonce,
94
+ yParity,
95
+ r,
96
+ s,
97
+ });
98
+ const data = (() => {
99
+ try {
100
+ return Hex.slice(suffix, 149);
101
+ }
102
+ catch {
103
+ return undefined;
104
+ }
105
+ })();
106
+ return { authorization, data, signature };
107
+ }
108
+ /**
109
+ * Wraps a signature into [ERC-8010 format](https://github.com/jxom/ERCs/blob/16f7e3891fff2e1e9c25dea0485497739db8a816/ERCS/erc-8010.md).
110
+ *
111
+ * @example
112
+ * ```ts twoslash
113
+ * // @noErrors
114
+ * import { Secp256k1 } from 'ox'
115
+ * import { SignatureErc8010 } from 'ox/erc8010' // [!code focus]
116
+ *
117
+ * const signature = Secp256k1.sign({
118
+ * payload: '0x...',
119
+ * privateKey: '0x...',
120
+ * })
121
+ *
122
+ * const wrapped = SignatureErc8010.wrap({ // [!code focus]
123
+ * authorization: { ... }, // [!code focus]
124
+ * data: '0xdeadbeef', // [!code focus]
125
+ * signature, // [!code focus]
126
+ * }) // [!code focus]
127
+ * ```
128
+ *
129
+ * @param value - Values to wrap.
130
+ * @returns Wrapped signature.
131
+ */
132
+ export function wrap(value) {
133
+ assert(value);
134
+ const { data, signature } = value;
135
+ const authorization = AbiParameters.encodePacked(['uint256', 'address', 'uint256', 'uint8', 'uint256', 'uint256'], [
136
+ BigInt(value.authorization.chainId),
137
+ value.authorization.address,
138
+ BigInt(value.authorization.nonce),
139
+ value.authorization.yParity,
140
+ value.authorization.r,
141
+ value.authorization.s,
142
+ ]);
143
+ const suffix = AbiParameters.encodePacked(['bytes', 'bytes'], [authorization, data ?? '0x']);
144
+ const suffixLength = Hex.fromNumber(Hex.size(suffix), { size: 32 });
145
+ return Hex.concat(signature, suffix, suffixLength, magicBytes);
146
+ }
147
+ /**
148
+ * Validates a wrapped signature. Returns `true` if the wrapped signature is valid, `false` otherwise.
149
+ *
150
+ * @example
151
+ * ```ts twoslash
152
+ * import { SignatureErc8010 } from 'ox/erc8010'
153
+ *
154
+ * const valid = SignatureErc8010.validate('0xdeadbeef')
155
+ * // @log: false
156
+ * ```
157
+ *
158
+ * @param value - The value to validate.
159
+ * @returns `true` if the value is valid, `false` otherwise.
160
+ */
161
+ export function validate(value) {
162
+ try {
163
+ assert(value);
164
+ return true;
165
+ }
166
+ catch {
167
+ return false;
168
+ }
169
+ }
170
+ /** Thrown when the ERC-8010 wrapped signature is invalid. */
171
+ export class InvalidWrappedSignatureError extends Errors.BaseError {
172
+ constructor(wrapped) {
173
+ super(`Value \`${wrapped}\` is an invalid ERC-8010 wrapped signature.`);
174
+ Object.defineProperty(this, "name", {
175
+ enumerable: true,
176
+ configurable: true,
177
+ writable: true,
178
+ value: 'SignatureErc8010.InvalidWrappedSignatureError'
179
+ });
180
+ }
181
+ }
182
+ //# sourceMappingURL=SignatureErc8010.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignatureErc8010.js","sourceRoot":"","sources":["../../erc8010/SignatureErc8010.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Utility functions for working with [ERC-8010 wrapped signatures](https://eips.ethereum.org/EIPS/eip-8010#specification).
3
+ *
4
+ * @example
5
+ * ```ts twoslash
6
+ * import { Authorization, Secp256k1, PersonalMessage } from 'ox'
7
+ * import { SignatureErc8010 } from 'ox/erc8010' // [!code focus]
8
+ *
9
+ * const authorization = Authorization.from({
10
+ * address: '0x1234567890abcdef1234567890abcdef12345678',
11
+ * chainId: 1,
12
+ * nonce: 69n,
13
+ * })
14
+ *
15
+ * const authorizationSignature = Secp256k1.sign({
16
+ * payload: Authorization.getSignPayload(authorization),
17
+ * privateKey: '0x...',
18
+ * })
19
+ *
20
+ * const authorizationSigned = Authorization.from(authorization, {
21
+ * signature: authorizationSignature,
22
+ * })
23
+ *
24
+ * const signature = Secp256k1.sign({
25
+ * payload: PersonalMessage.getSignPayload('0xdeadbeef'),
26
+ * privateKey: '0x...',
27
+ * })
28
+ *
29
+ * const wrapped = SignatureErc8010.wrap({ // [!code focus]
30
+ * authorization: authorizationSigned, // [!code focus]
31
+ * data: '0xcafebabe', // [!code focus]
32
+ * signature, // [!code focus]
33
+ * }) // [!code focus]
34
+ * // @log: '0x000000000000000000000000cafebabecafebabecafebabecafebabecafebabe000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004deadbeef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041fa78c5905fb0b9d6066ef531f962a62bc6ef0d5eb59ecb134056d206f75aaed7780926ff2601a935c2c79707d9e1799948c9f19dcdde1e090e903b19a07923d01c000000000000000000000000000000000000000000000000000000000000008010801080108010801080108010801080108010801080108010801080108010'
35
+ * ```
36
+ *
37
+ * @category ERC-8010
38
+ */
39
+ export * as SignatureErc8010 from './SignatureErc8010.js';
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../erc8010/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA"}
@@ -1,6 +1,8 @@
1
1
  // @ts-nocheck
2
2
  /** Used by api-extractor for docgen. https://github.com/microsoft/rushstack/issues/3557 */
3
+ // biome-ignore assist/source/organizeImports: _
3
4
  export * from './index.js';
4
5
  export * from './erc4337/index.js';
5
6
  export * from './erc6492/index.js';
7
+ export * from './erc8010/index.js';
6
8
  //# sourceMappingURL=index.docs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.docs.js","sourceRoot":"","sources":["../index.docs.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,2FAA2F;AAC3F,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.docs.js","sourceRoot":"","sources":["../index.docs.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,2FAA2F;AAC3F,gDAAgD;AAChD,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}