ox 0.9.16 → 0.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 (216) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +4 -4
  3. package/TxEnvelope/package.json +6 -0
  4. package/TxEnvelopeEip1559/package.json +6 -0
  5. package/TxEnvelopeEip2930/package.json +6 -0
  6. package/TxEnvelopeEip4844/package.json +6 -0
  7. package/TxEnvelopeEip7702/package.json +6 -0
  8. package/TxEnvelopeLegacy/package.json +6 -0
  9. package/_cjs/core/{TransactionEnvelope.js → TxEnvelope.js} +1 -1
  10. package/_cjs/core/TxEnvelope.js.map +1 -0
  11. package/_cjs/core/{TransactionEnvelopeEip1559.js → TxEnvelopeEip1559.js} +2 -2
  12. package/_cjs/core/TxEnvelopeEip1559.js.map +1 -0
  13. package/_cjs/core/{TransactionEnvelopeEip2930.js → TxEnvelopeEip2930.js} +2 -2
  14. package/_cjs/core/TxEnvelopeEip2930.js.map +1 -0
  15. package/_cjs/core/{TransactionEnvelopeEip4844.js → TxEnvelopeEip4844.js} +4 -4
  16. package/_cjs/core/TxEnvelopeEip4844.js.map +1 -0
  17. package/_cjs/core/{TransactionEnvelopeEip7702.js → TxEnvelopeEip7702.js} +4 -4
  18. package/_cjs/core/TxEnvelopeEip7702.js.map +1 -0
  19. package/_cjs/core/{TransactionEnvelopeLegacy.js → TxEnvelopeLegacy.js} +2 -2
  20. package/_cjs/core/TxEnvelopeLegacy.js.map +1 -0
  21. package/_cjs/core/WebAuthnP256.js +1 -1
  22. package/_cjs/core/WebAuthnP256.js.map +1 -1
  23. package/_cjs/erc8021/Attribution.js +36 -6
  24. package/_cjs/erc8021/Attribution.js.map +1 -1
  25. package/_cjs/index.docs.js +1 -0
  26. package/_cjs/index.docs.js.map +1 -1
  27. package/_cjs/index.js +7 -7
  28. package/_cjs/index.js.map +1 -1
  29. package/_cjs/tempo/AuthorizationTempo.js +101 -0
  30. package/_cjs/tempo/AuthorizationTempo.js.map +1 -0
  31. package/_cjs/tempo/KeyAuthorization.js +123 -0
  32. package/_cjs/tempo/KeyAuthorization.js.map +1 -0
  33. package/_cjs/tempo/PoolId.js +10 -0
  34. package/_cjs/tempo/PoolId.js.map +1 -0
  35. package/_cjs/tempo/SignatureEnvelope.js +394 -0
  36. package/_cjs/tempo/SignatureEnvelope.js.map +1 -0
  37. package/_cjs/tempo/Tick.js +77 -0
  38. package/_cjs/tempo/Tick.js.map +1 -0
  39. package/_cjs/tempo/TokenId.js +28 -0
  40. package/_cjs/tempo/TokenId.js.map +1 -0
  41. package/_cjs/tempo/TokenRole.js +26 -0
  42. package/_cjs/tempo/TokenRole.js.map +1 -0
  43. package/_cjs/tempo/Transaction.js +80 -0
  44. package/_cjs/tempo/Transaction.js.map +1 -0
  45. package/_cjs/tempo/TransactionReceipt.js +26 -0
  46. package/_cjs/tempo/TransactionReceipt.js.map +1 -0
  47. package/_cjs/tempo/TransactionRequest.js +53 -0
  48. package/_cjs/tempo/TransactionRequest.js.map +1 -0
  49. package/_cjs/tempo/TxEnvelopeTempo.js +267 -0
  50. package/_cjs/tempo/TxEnvelopeTempo.js.map +1 -0
  51. package/_cjs/tempo/index.js +15 -0
  52. package/_cjs/tempo/index.js.map +1 -0
  53. package/_cjs/version.js +1 -1
  54. package/_esm/core/Blobs.js +8 -8
  55. package/_esm/core/{TransactionEnvelope.js → TxEnvelope.js} +11 -11
  56. package/_esm/core/TxEnvelope.js.map +1 -0
  57. package/_esm/core/{TransactionEnvelopeEip1559.js → TxEnvelopeEip1559.js} +42 -42
  58. package/_esm/core/TxEnvelopeEip1559.js.map +1 -0
  59. package/_esm/core/{TransactionEnvelopeEip2930.js → TxEnvelopeEip2930.js} +43 -43
  60. package/_esm/core/TxEnvelopeEip2930.js.map +1 -0
  61. package/_esm/core/{TransactionEnvelopeEip4844.js → TxEnvelopeEip4844.js} +42 -42
  62. package/_esm/core/TxEnvelopeEip4844.js.map +1 -0
  63. package/_esm/core/{TransactionEnvelopeEip7702.js → TxEnvelopeEip7702.js} +40 -40
  64. package/_esm/core/TxEnvelopeEip7702.js.map +1 -0
  65. package/_esm/core/{TransactionEnvelopeLegacy.js → TxEnvelopeLegacy.js} +42 -42
  66. package/_esm/core/TxEnvelopeLegacy.js.map +1 -0
  67. package/_esm/core/WebAuthnP256.js +1 -1
  68. package/_esm/core/WebAuthnP256.js.map +1 -1
  69. package/_esm/erc8021/Attribution.js +58 -13
  70. package/_esm/erc8021/Attribution.js.map +1 -1
  71. package/_esm/index.docs.js +1 -0
  72. package/_esm/index.docs.js.map +1 -1
  73. package/_esm/index.js +192 -192
  74. package/_esm/index.js.map +1 -1
  75. package/_esm/tempo/AuthorizationTempo.js +664 -0
  76. package/_esm/tempo/AuthorizationTempo.js.map +1 -0
  77. package/_esm/tempo/KeyAuthorization.js +426 -0
  78. package/_esm/tempo/KeyAuthorization.js.map +1 -0
  79. package/_esm/tempo/PoolId.js +28 -0
  80. package/_esm/tempo/PoolId.js.map +1 -0
  81. package/_esm/tempo/SignatureEnvelope.js +660 -0
  82. package/_esm/tempo/SignatureEnvelope.js.map +1 -0
  83. package/_esm/tempo/Tick.js +147 -0
  84. package/_esm/tempo/Tick.js.map +1 -0
  85. package/_esm/tempo/TokenId.js +71 -0
  86. package/_esm/tempo/TokenId.js.map +1 -0
  87. package/_esm/tempo/TokenRole.js +40 -0
  88. package/_esm/tempo/TokenRole.js.map +1 -0
  89. package/_esm/tempo/Transaction.js +167 -0
  90. package/_esm/tempo/Transaction.js.map +1 -0
  91. package/_esm/tempo/TransactionReceipt.js +138 -0
  92. package/_esm/tempo/TransactionReceipt.js.map +1 -0
  93. package/_esm/tempo/TransactionRequest.js +99 -0
  94. package/_esm/tempo/TransactionRequest.js.map +1 -0
  95. package/_esm/tempo/TxEnvelopeTempo.js +607 -0
  96. package/_esm/tempo/TxEnvelopeTempo.js.map +1 -0
  97. package/_esm/tempo/index.js +298 -0
  98. package/_esm/tempo/index.js.map +1 -0
  99. package/_esm/version.js +1 -1
  100. package/_types/core/Blobs.d.ts +8 -8
  101. package/_types/core/{TransactionEnvelope.d.ts → TxEnvelope.d.ts} +11 -11
  102. package/_types/core/TxEnvelope.d.ts.map +1 -0
  103. package/_types/core/{TransactionEnvelopeEip1559.d.ts → TxEnvelopeEip1559.d.ts} +54 -54
  104. package/_types/core/TxEnvelopeEip1559.d.ts.map +1 -0
  105. package/_types/core/{TransactionEnvelopeEip2930.d.ts → TxEnvelopeEip2930.d.ts} +55 -55
  106. package/_types/core/TxEnvelopeEip2930.d.ts.map +1 -0
  107. package/_types/core/{TransactionEnvelopeEip4844.d.ts → TxEnvelopeEip4844.d.ts} +54 -54
  108. package/_types/core/TxEnvelopeEip4844.d.ts.map +1 -0
  109. package/_types/core/{TransactionEnvelopeEip7702.d.ts → TxEnvelopeEip7702.d.ts} +49 -49
  110. package/_types/core/TxEnvelopeEip7702.d.ts.map +1 -0
  111. package/_types/core/{TransactionEnvelopeLegacy.d.ts → TxEnvelopeLegacy.d.ts} +54 -54
  112. package/_types/core/TxEnvelopeLegacy.d.ts.map +1 -0
  113. package/_types/core/WebAuthnP256.d.ts +1 -1
  114. package/_types/core/WebAuthnP256.d.ts.map +1 -1
  115. package/_types/erc8021/Attribution.d.ts +20 -6
  116. package/_types/erc8021/Attribution.d.ts.map +1 -1
  117. package/_types/index.d.ts +192 -192
  118. package/_types/index.d.ts.map +1 -1
  119. package/_types/index.docs.d.ts +1 -0
  120. package/_types/index.docs.d.ts.map +1 -1
  121. package/_types/tempo/AuthorizationTempo.d.ts +688 -0
  122. package/_types/tempo/AuthorizationTempo.d.ts.map +1 -0
  123. package/_types/tempo/KeyAuthorization.d.ts +437 -0
  124. package/_types/tempo/KeyAuthorization.d.ts.map +1 -0
  125. package/_types/tempo/PoolId.d.ts +33 -0
  126. package/_types/tempo/PoolId.d.ts.map +1 -0
  127. package/_types/tempo/SignatureEnvelope.d.ts +438 -0
  128. package/_types/tempo/SignatureEnvelope.d.ts.map +1 -0
  129. package/_types/tempo/Tick.d.ts +120 -0
  130. package/_types/tempo/Tick.d.ts.map +1 -0
  131. package/_types/tempo/TokenId.d.ts +55 -0
  132. package/_types/tempo/TokenId.d.ts.map +1 -0
  133. package/_types/tempo/TokenRole.d.ts +29 -0
  134. package/_types/tempo/TokenRole.d.ts.map +1 -0
  135. package/_types/tempo/Transaction.d.ts +208 -0
  136. package/_types/tempo/Transaction.d.ts.map +1 -0
  137. package/_types/tempo/TransactionReceipt.d.ts +165 -0
  138. package/_types/tempo/TransactionReceipt.d.ts.map +1 -0
  139. package/_types/tempo/TransactionRequest.d.ts +89 -0
  140. package/_types/tempo/TransactionRequest.d.ts.map +1 -0
  141. package/_types/tempo/TxEnvelopeTempo.d.ts +551 -0
  142. package/_types/tempo/TxEnvelopeTempo.d.ts.map +1 -0
  143. package/_types/tempo/index.d.ts +300 -0
  144. package/_types/tempo/index.d.ts.map +1 -0
  145. package/_types/version.d.ts +1 -1
  146. package/core/Blobs.ts +8 -8
  147. package/core/{TransactionEnvelope.ts → TxEnvelope.ts} +10 -10
  148. package/core/{TransactionEnvelopeEip1559.ts → TxEnvelopeEip1559.ts} +60 -69
  149. package/core/{TransactionEnvelopeEip2930.ts → TxEnvelopeEip2930.ts} +61 -72
  150. package/core/{TransactionEnvelopeEip4844.ts → TxEnvelopeEip4844.ts} +62 -71
  151. package/core/{TransactionEnvelopeEip7702.ts → TxEnvelopeEip7702.ts} +58 -67
  152. package/core/{TransactionEnvelopeLegacy.ts → TxEnvelopeLegacy.ts} +59 -68
  153. package/core/WebAuthnP256.ts +3 -1
  154. package/erc8021/Attribution.ts +77 -15
  155. package/index.docs.ts +1 -0
  156. package/index.ts +192 -195
  157. package/package.json +91 -31
  158. package/tempo/AuthorizationTempo/package.json +6 -0
  159. package/tempo/AuthorizationTempo.test.ts +1293 -0
  160. package/tempo/AuthorizationTempo.ts +884 -0
  161. package/tempo/KeyAuthorization/package.json +6 -0
  162. package/tempo/KeyAuthorization.test.ts +1373 -0
  163. package/tempo/KeyAuthorization.ts +622 -0
  164. package/tempo/PoolId/package.json +6 -0
  165. package/tempo/PoolId.test.ts +33 -0
  166. package/tempo/PoolId.ts +42 -0
  167. package/tempo/SignatureEnvelope/package.json +6 -0
  168. package/tempo/SignatureEnvelope.test.ts +1877 -0
  169. package/tempo/SignatureEnvelope.ts +973 -0
  170. package/tempo/Tick/package.json +6 -0
  171. package/tempo/Tick.test.ts +281 -0
  172. package/tempo/Tick.ts +186 -0
  173. package/tempo/TokenId/package.json +6 -0
  174. package/tempo/TokenId.test.ts +40 -0
  175. package/tempo/TokenId.ts +80 -0
  176. package/tempo/TokenRole/package.json +6 -0
  177. package/tempo/TokenRole.test.ts +16 -0
  178. package/tempo/TokenRole.ts +45 -0
  179. package/tempo/Transaction/package.json +6 -0
  180. package/tempo/Transaction.test.ts +523 -0
  181. package/tempo/Transaction.ts +339 -0
  182. package/tempo/TransactionReceipt/package.json +6 -0
  183. package/tempo/TransactionReceipt.ts +200 -0
  184. package/tempo/TransactionRequest/package.json +6 -0
  185. package/tempo/TransactionRequest.ts +160 -0
  186. package/tempo/TxEnvelopeTempo/package.json +6 -0
  187. package/tempo/TxEnvelopeTempo.test.ts +1371 -0
  188. package/tempo/TxEnvelopeTempo.ts +972 -0
  189. package/tempo/e2e.test.ts +1387 -0
  190. package/tempo/index.ts +308 -0
  191. package/tempo/package.json +6 -0
  192. package/version.ts +1 -1
  193. package/TransactionEnvelope/package.json +0 -6
  194. package/TransactionEnvelopeEip1559/package.json +0 -6
  195. package/TransactionEnvelopeEip2930/package.json +0 -6
  196. package/TransactionEnvelopeEip4844/package.json +0 -6
  197. package/TransactionEnvelopeEip7702/package.json +0 -6
  198. package/TransactionEnvelopeLegacy/package.json +0 -6
  199. package/_cjs/core/TransactionEnvelope.js.map +0 -1
  200. package/_cjs/core/TransactionEnvelopeEip1559.js.map +0 -1
  201. package/_cjs/core/TransactionEnvelopeEip2930.js.map +0 -1
  202. package/_cjs/core/TransactionEnvelopeEip4844.js.map +0 -1
  203. package/_cjs/core/TransactionEnvelopeEip7702.js.map +0 -1
  204. package/_cjs/core/TransactionEnvelopeLegacy.js.map +0 -1
  205. package/_esm/core/TransactionEnvelope.js.map +0 -1
  206. package/_esm/core/TransactionEnvelopeEip1559.js.map +0 -1
  207. package/_esm/core/TransactionEnvelopeEip2930.js.map +0 -1
  208. package/_esm/core/TransactionEnvelopeEip4844.js.map +0 -1
  209. package/_esm/core/TransactionEnvelopeEip7702.js.map +0 -1
  210. package/_esm/core/TransactionEnvelopeLegacy.js.map +0 -1
  211. package/_types/core/TransactionEnvelope.d.ts.map +0 -1
  212. package/_types/core/TransactionEnvelopeEip1559.d.ts.map +0 -1
  213. package/_types/core/TransactionEnvelopeEip2930.d.ts.map +0 -1
  214. package/_types/core/TransactionEnvelopeEip4844.d.ts.map +0 -1
  215. package/_types/core/TransactionEnvelopeEip7702.d.ts.map +0 -1
  216. package/_types/core/TransactionEnvelopeLegacy.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthorizationTempo.js","sourceRoot":"","sources":["../../tempo/AuthorizationTempo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,426 @@
1
+ import * as Hash from '../core/Hash.js';
2
+ import * as Hex from '../core/Hex.js';
3
+ import * as Rlp from '../core/Rlp.js';
4
+ import * as SignatureEnvelope from './SignatureEnvelope.js';
5
+ /**
6
+ * Converts a Key Authorization object into a typed {@link ox#KeyAuthorization.KeyAuthorization}.
7
+ *
8
+ * Use this to create an unsigned key authorization, then sign it with the root key using
9
+ * {@link ox#KeyAuthorization.(getSignPayload:function)} and attach the signature. The signed authorization
10
+ * can be included in a {@link ox#TxEnvelopeTempo.TxEnvelopeTempo} via the
11
+ * `keyAuthorization` field to provision the access key on-chain.
12
+ *
13
+ * [Access Keys Specification](https://docs.tempo.xyz/protocol/transactions/spec-tempo-transaction#access-keys)
14
+ *
15
+ * @example
16
+ * ### Secp256k1 Key
17
+ *
18
+ * Standard Ethereum ECDSA key using the secp256k1 curve.
19
+ *
20
+ * ```ts twoslash
21
+ * import { Address, Secp256k1, Value } from 'ox'
22
+ * import { KeyAuthorization } from 'ox/tempo'
23
+ *
24
+ * const privateKey = Secp256k1.randomPrivateKey()
25
+ * const address = Address.fromPublicKey(Secp256k1.getPublicKey({ privateKey }))
26
+ *
27
+ * const authorization = KeyAuthorization.from({
28
+ * address,
29
+ * expiry: 1234567890,
30
+ * type: 'secp256k1',
31
+ * limits: [{
32
+ * token: '0x20c0000000000000000000000000000000000001',
33
+ * limit: Value.from('10', 6),
34
+ * }],
35
+ * })
36
+ * ```
37
+ *
38
+ * @example
39
+ * ### WebCryptoP256 Key
40
+ *
41
+ * ```ts twoslash
42
+ * import { Address, WebCryptoP256, Value } from 'ox'
43
+ * import { KeyAuthorization } from 'ox/tempo'
44
+ *
45
+ * const keyPair = await WebCryptoP256.createKeyPair()
46
+ * const address = Address.fromPublicKey(keyPair.publicKey)
47
+ *
48
+ * const authorization = KeyAuthorization.from({
49
+ * address,
50
+ * expiry: 1234567890,
51
+ * type: 'p256',
52
+ * limits: [{
53
+ * token: '0x20c0000000000000000000000000000000000001',
54
+ * limit: Value.from('10', 6),
55
+ * }],
56
+ * })
57
+ * ```
58
+ *
59
+ * @example
60
+ * ### Attaching Signatures (Secp256k1)
61
+ *
62
+ * Attach a signature to a Key Authorization using a Secp256k1 private key to
63
+ * authorize another Secp256k1 key on the account.
64
+ *
65
+ * ```ts twoslash
66
+ * import { Address, Secp256k1, Value } from 'ox'
67
+ * import { KeyAuthorization } from 'ox/tempo'
68
+ *
69
+ * const privateKey = '0x...'
70
+ * const address = Address.fromPublicKey(Secp256k1.getPublicKey({ privateKey }))
71
+ *
72
+ * const authorization = KeyAuthorization.from({
73
+ * address,
74
+ * expiry: 1234567890,
75
+ * type: 'secp256k1',
76
+ * limits: [{
77
+ * token: '0x20c0000000000000000000000000000000000001',
78
+ * limit: Value.from('10', 6),
79
+ * }],
80
+ * })
81
+ *
82
+ * const rootPrivateKey = '0x...'
83
+ * const signature = Secp256k1.sign({
84
+ * payload: KeyAuthorization.getSignPayload(authorization),
85
+ * privateKey: rootPrivateKey,
86
+ * })
87
+ *
88
+ * const authorization_signed = KeyAuthorization.from(authorization, { signature })
89
+ * ```
90
+ *
91
+ * @example
92
+ * ### Attaching Signatures (WebAuthn)
93
+ *
94
+ * Attach a signature to a Key Authorization using a WebAuthn credential to
95
+ * authorize a new WebCryptoP256 key on the account.
96
+ *
97
+ * ```ts twoslash
98
+ * // @noErrors
99
+ * import { Address, Value, WebCryptoP256, WebAuthnP256 } from 'ox'
100
+ * import { KeyAuthorization, SignatureEnvelope } from 'ox/tempo'
101
+ *
102
+ * const keyPair = await WebCryptoP256.createKeyPair()
103
+ * const address = Address.fromPublicKey(keyPair.publicKey)
104
+ *
105
+ * const authorization = KeyAuthorization.from({
106
+ * address,
107
+ * expiry: 1234567890,
108
+ * type: 'p256',
109
+ * limits: [{
110
+ * token: '0x20c0000000000000000000000000000000000001',
111
+ * limit: Value.from('10', 6),
112
+ * }],
113
+ * })
114
+ *
115
+ * const credential = await WebAuthnP256.createCredential({ name: 'Example' })
116
+ *
117
+ * const { metadata, signature } = await WebAuthnP256.sign({
118
+ * challenge: KeyAuthorization.getSignPayload(authorization),
119
+ * credentialId: credential.id,
120
+ * })
121
+ *
122
+ * const signatureEnvelope = SignatureEnvelope.from({ // [!code focus]
123
+ * signature, // [!code focus]
124
+ * publicKey: credential.publicKey, // [!code focus]
125
+ * metadata, // [!code focus]
126
+ * })
127
+ * const authorization_signed = KeyAuthorization.from(
128
+ * authorization,
129
+ * { signature: signatureEnvelope }, // [!code focus]
130
+ * )
131
+ * ```
132
+ *
133
+ * @param authorization - A Key Authorization tuple in object format.
134
+ * @param options - Key Authorization options.
135
+ * @returns The {@link ox#KeyAuthorization.KeyAuthorization}.
136
+ */
137
+ export function from(authorization, options = {}) {
138
+ if (typeof authorization.expiry === 'string')
139
+ return fromRpc(authorization);
140
+ if (options.signature)
141
+ return {
142
+ ...authorization,
143
+ signature: SignatureEnvelope.from(options.signature),
144
+ };
145
+ return authorization;
146
+ }
147
+ /**
148
+ * Converts an {@link ox#AuthorizationTempo.Rpc} to an {@link ox#AuthorizationTempo.AuthorizationTempo}.
149
+ *
150
+ * @example
151
+ * ```ts twoslash
152
+ * import { KeyAuthorization } from 'ox/tempo'
153
+ *
154
+ * const keyAuthorization = KeyAuthorization.fromRpc({
155
+ * expiry: '0x174876e800',
156
+ * keyId: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
157
+ * keyType: 'secp256k1',
158
+ * limits: [{ token: '0x20c0000000000000000000000000000000000001', limit: '0xf4240' }],
159
+ * signature: {
160
+ * type: 'secp256k1',
161
+ * r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',
162
+ * s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',
163
+ * yParity: '0x0'
164
+ * },
165
+ * })
166
+ * ```
167
+ *
168
+ * @param authorization - The RPC-formatted Key Authorization.
169
+ * @returns A signed {@link ox#AuthorizationTempo.AuthorizationTempo}.
170
+ */
171
+ export function fromRpc(authorization) {
172
+ const { chainId = '0x0', keyId, expiry = 0, limits, keyType } = authorization;
173
+ const signature = SignatureEnvelope.fromRpc(authorization.signature);
174
+ return {
175
+ address: keyId,
176
+ chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
177
+ expiry: Number(expiry),
178
+ limits: limits?.map((limit) => ({
179
+ token: limit.token,
180
+ limit: BigInt(limit.limit),
181
+ })),
182
+ signature,
183
+ type: keyType,
184
+ };
185
+ }
186
+ /**
187
+ * Converts an {@link ox#KeyAuthorization.Tuple} to an {@link ox#KeyAuthorization.KeyAuthorization}.
188
+ *
189
+ * @example
190
+ * ```ts twoslash
191
+ * import { KeyAuthorization } from 'ox/tempo'
192
+ *
193
+ * const authorization = KeyAuthorization.fromTuple([
194
+ * [
195
+ * '0x',
196
+ * '0x00',
197
+ * '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
198
+ * '0x174876e800',
199
+ * [['0x20c0000000000000000000000000000000000001', '0xf4240']],
200
+ * ],
201
+ * '0x01a068a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b907e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064',
202
+ * ])
203
+ * ```
204
+ *
205
+ * @example
206
+ * Unsigned Key Authorization tuple (no signature):
207
+ *
208
+ * ```ts twoslash
209
+ * import { KeyAuthorization } from 'ox/tempo'
210
+ *
211
+ * const authorization = KeyAuthorization.fromTuple([
212
+ * [
213
+ * '0x',
214
+ * '0x00',
215
+ * '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
216
+ * '0x174876e800',
217
+ * [['0x20c0000000000000000000000000000000000001', '0xf4240']],
218
+ * ],
219
+ * ])
220
+ * ```
221
+ *
222
+ * @param tuple - The Key Authorization tuple.
223
+ * @returns The {@link ox#KeyAuthorization.KeyAuthorization}.
224
+ */
225
+ export function fromTuple(tuple) {
226
+ const [authorization, signatureSerialized] = tuple;
227
+ const [chainId, keyType_hex, keyId, expiry, limits] = authorization;
228
+ const keyType = (() => {
229
+ switch (keyType_hex) {
230
+ case '0x':
231
+ case '0x00':
232
+ return 'secp256k1';
233
+ case '0x01':
234
+ return 'p256';
235
+ case '0x02':
236
+ return 'webAuthn';
237
+ default:
238
+ throw new Error(`Invalid key type: ${keyType_hex}`);
239
+ }
240
+ })();
241
+ const args = {
242
+ address: keyId,
243
+ expiry: typeof expiry !== 'undefined' ? Hex.toNumber(expiry) : undefined,
244
+ type: keyType,
245
+ ...(chainId !== '0x' ? { chainId: Hex.toBigInt(chainId) } : {}),
246
+ ...(typeof expiry !== 'undefined' ? { expiry: Hex.toNumber(expiry) } : {}),
247
+ ...(typeof limits !== 'undefined'
248
+ ? {
249
+ limits: limits.map(([token, limit]) => ({
250
+ token,
251
+ limit: BigInt(limit),
252
+ })),
253
+ }
254
+ : {}),
255
+ };
256
+ if (signatureSerialized)
257
+ args.signature = SignatureEnvelope.deserialize(signatureSerialized);
258
+ return from(args);
259
+ }
260
+ /**
261
+ * Computes the sign payload for an {@link ox#KeyAuthorization.KeyAuthorization}.
262
+ *
263
+ * The root key must sign this payload to authorize the access key. The resulting signature
264
+ * is attached to the key authorization via {@link ox#KeyAuthorization.(from:function)} with the
265
+ * `signature` option.
266
+ *
267
+ * [Access Keys Specification](https://docs.tempo.xyz/protocol/transactions/spec-tempo-transaction#access-keys)
268
+ *
269
+ * @example
270
+ * ```ts twoslash
271
+ * import { Address, Secp256k1, Value } from 'ox'
272
+ * import { KeyAuthorization } from 'ox/tempo'
273
+ *
274
+ * const privateKey = '0x...'
275
+ * const address = Address.fromPublicKey(Secp256k1.getPublicKey({ privateKey }))
276
+ *
277
+ * const authorization = KeyAuthorization.from({
278
+ * address,
279
+ * expiry: 1234567890,
280
+ * type: 'secp256k1',
281
+ * limits: [{
282
+ * token: '0x20c0000000000000000000000000000000000001',
283
+ * limit: Value.from('10', 6),
284
+ * }],
285
+ * })
286
+ *
287
+ * const payload = KeyAuthorization.getSignPayload(authorization) // [!code focus]
288
+ * ```
289
+ *
290
+ * @param authorization - The {@link ox#KeyAuthorization.KeyAuthorization}.
291
+ * @returns The sign payload.
292
+ */
293
+ export function getSignPayload(authorization) {
294
+ return hash(authorization);
295
+ }
296
+ /**
297
+ * Computes the hash for an {@link ox#KeyAuthorization.KeyAuthorization}.
298
+ *
299
+ * @example
300
+ * ```ts twoslash
301
+ * import { KeyAuthorization } from 'ox/tempo'
302
+ * import { Value } from 'ox'
303
+ *
304
+ * const authorization = KeyAuthorization.from({
305
+ * expiry: 1234567890,
306
+ * address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
307
+ * type: 'secp256k1',
308
+ * limits: [{
309
+ * token: '0x20c0000000000000000000000000000000000001',
310
+ * limit: Value.from('10', 6)
311
+ * }],
312
+ * })
313
+ *
314
+ * const hash = KeyAuthorization.hash(authorization) // [!code focus]
315
+ * ```
316
+ *
317
+ * @param authorization - The {@link ox#KeyAuthorization.KeyAuthorization}.
318
+ * @returns The hash.
319
+ */
320
+ export function hash(authorization) {
321
+ const [authorizationTuple] = toTuple(authorization);
322
+ const serialized = Rlp.fromHex(authorizationTuple);
323
+ return Hash.keccak256(serialized);
324
+ }
325
+ /**
326
+ * Converts an {@link ox#KeyAuthorization.KeyAuthorization} to an {@link ox#KeyAuthorization.Rpc}.
327
+ *
328
+ * @example
329
+ * ```ts twoslash
330
+ * import { KeyAuthorization } from 'ox/tempo'
331
+ * import { Value } from 'ox'
332
+ *
333
+ * const authorization = KeyAuthorization.toRpc({
334
+ * expiry: 1234567890,
335
+ * address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
336
+ * type: 'secp256k1',
337
+ * limits: [{
338
+ * token: '0x20c0000000000000000000000000000000000001',
339
+ * limit: Value.from('10', 6)
340
+ * }],
341
+ * signature: {
342
+ * type: 'secp256k1',
343
+ * signature: {
344
+ * r: 44944627813007772897391531230081695102703289123332187696115181104739239197517n,
345
+ * s: 36528503505192438307355164441104001310566505351980369085208178712678799181120n,
346
+ * yParity: 0,
347
+ * },
348
+ * },
349
+ * })
350
+ * ```
351
+ *
352
+ * @param authorization - A Key Authorization.
353
+ * @returns An RPC-formatted Key Authorization.
354
+ */
355
+ export function toRpc(authorization) {
356
+ const { address, chainId = 0n, expiry, limits, type, signature, } = authorization;
357
+ return {
358
+ chainId: chainId === 0n ? '0x' : Hex.fromNumber(chainId),
359
+ expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) : undefined,
360
+ limits: limits?.map(({ token, limit }) => ({
361
+ token,
362
+ limit: Hex.fromNumber(limit),
363
+ })),
364
+ keyId: address,
365
+ signature: SignatureEnvelope.toRpc(signature),
366
+ keyType: type,
367
+ };
368
+ }
369
+ /**
370
+ * Converts an {@link ox#KeyAuthorization.KeyAuthorization} to an {@link ox#KeyAuthorization.Tuple}.
371
+ *
372
+ * @example
373
+ * ```ts twoslash
374
+ * import { KeyAuthorization } from 'ox/tempo'
375
+ * import { Value } from 'ox'
376
+ *
377
+ * const authorization = KeyAuthorization.from({
378
+ * expiry: 1234567890,
379
+ * address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
380
+ * type: 'secp256k1',
381
+ * limits: [{
382
+ * token: '0x20c0000000000000000000000000000000000001',
383
+ * limit: Value.from('10', 6)
384
+ * }],
385
+ * })
386
+ *
387
+ * const tuple = KeyAuthorization.toTuple(authorization) // [!code focus]
388
+ * // @log: [
389
+ * // @log: '0x174876e800',
390
+ * // @log: [['0x20c0000000000000000000000000000000000001', '0xf4240']],
391
+ * // @log: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',
392
+ * // @log: 'secp256k1',
393
+ * // @log: ]
394
+ * ```
395
+ *
396
+ * @param authorization - The {@link ox#KeyAuthorization.KeyAuthorization}.
397
+ * @returns A Tempo Key Authorization tuple.
398
+ */
399
+ export function toTuple(authorization) {
400
+ const { address, chainId = 0n, expiry, limits } = authorization;
401
+ const signature = authorization.signature
402
+ ? SignatureEnvelope.serialize(authorization.signature)
403
+ : undefined;
404
+ const type = (() => {
405
+ switch (authorization.type) {
406
+ case 'secp256k1':
407
+ return '0x';
408
+ case 'p256':
409
+ return '0x01';
410
+ case 'webAuthn':
411
+ return '0x02';
412
+ default:
413
+ throw new Error(`Invalid key type: ${authorization.type}`);
414
+ }
415
+ })();
416
+ const authorizationTuple = [
417
+ chainId === 0n ? '0x' : Hex.fromNumber(chainId),
418
+ type,
419
+ address,
420
+ typeof expiry === 'number' ? Hex.fromNumber(expiry) : undefined,
421
+ limits?.map((limit) => [limit.token, Hex.fromNumber(limit.limit)]) ??
422
+ undefined,
423
+ ].filter(Boolean);
424
+ return [authorizationTuple, ...(signature ? [signature] : [])];
425
+ }
426
+ //# sourceMappingURL=KeyAuthorization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import * as Hash from '../core/Hash.js';
2
+ import * as Hex from '../core/Hex.js';
3
+ import * as TokenId from './TokenId.js';
4
+ /**
5
+ * Converts a user token and validator token to a pool ID.
6
+ *
7
+ * Pool IDs are deterministic keys derived from two token addresses (order-independent)
8
+ * used to identify trading pairs on Tempo's enshrined stablecoin DEX.
9
+ *
10
+ * [Stablecoin DEX Specification](https://docs.tempo.xyz/protocol/exchange/spec)
11
+ *
12
+ * @example
13
+ * ```ts twoslash
14
+ * import { PoolId } from 'ox/tempo'
15
+ *
16
+ * const poolId = PoolId.from({
17
+ * userToken: 1n,
18
+ * validatorToken: 2n,
19
+ * })
20
+ * ```
21
+ *
22
+ * @param value - User token and validator token.
23
+ * @returns The pool ID.
24
+ */
25
+ export function from(value) {
26
+ return Hash.keccak256(Hex.concat(Hex.padLeft(TokenId.toAddress(value.userToken), 32), Hex.padLeft(TokenId.toAddress(value.validatorToken), 32)));
27
+ }
28
+ //# sourceMappingURL=PoolId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolId.js","sourceRoot":"","sources":["../../tempo/PoolId.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,IAAI,CAAC,KAAiB;IACpC,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,CAAC,MAAM,CACR,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EACnD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CACzD,CACF,CAAA;AACH,CAAC"}