tempo.ts 0.6.1 → 0.7.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 (113) hide show
  1. package/CHANGELOG.md +134 -0
  2. package/README.md +6 -2
  3. package/dist/ox/Transaction.js +1 -1
  4. package/dist/ox/Transaction.js.map +1 -1
  5. package/dist/server/Handler.d.ts +346 -0
  6. package/dist/server/Handler.d.ts.map +1 -0
  7. package/dist/server/Handler.js +441 -0
  8. package/dist/server/Handler.js.map +1 -0
  9. package/dist/server/Kv.d.ts +16 -0
  10. package/dist/server/Kv.d.ts.map +1 -0
  11. package/dist/server/Kv.js +25 -0
  12. package/dist/server/Kv.js.map +1 -0
  13. package/dist/server/index.d.ts +3 -0
  14. package/dist/server/index.d.ts.map +1 -0
  15. package/dist/server/index.js +3 -0
  16. package/dist/server/index.js.map +1 -0
  17. package/dist/server/internal/requestListener.d.ts +124 -0
  18. package/dist/server/internal/requestListener.d.ts.map +1 -0
  19. package/dist/server/internal/requestListener.js +174 -0
  20. package/dist/server/internal/requestListener.js.map +1 -0
  21. package/dist/viem/Actions/account.d.ts +40 -0
  22. package/dist/viem/Actions/account.d.ts.map +1 -0
  23. package/dist/viem/Actions/account.js +87 -0
  24. package/dist/viem/Actions/account.js.map +1 -0
  25. package/dist/viem/Actions/amm.d.ts +51 -1245
  26. package/dist/viem/Actions/amm.d.ts.map +1 -1
  27. package/dist/viem/Actions/amm.js +15 -478
  28. package/dist/viem/Actions/amm.js.map +1 -1
  29. package/dist/viem/Actions/index.d.ts +1 -0
  30. package/dist/viem/Actions/index.d.ts.map +1 -1
  31. package/dist/viem/Actions/index.js +1 -0
  32. package/dist/viem/Actions/index.js.map +1 -1
  33. package/dist/viem/Actions/reward.d.ts +0 -1067
  34. package/dist/viem/Actions/reward.d.ts.map +1 -1
  35. package/dist/viem/Actions/reward.js +4 -212
  36. package/dist/viem/Actions/reward.js.map +1 -1
  37. package/dist/viem/Decorator.d.ts +28 -263
  38. package/dist/viem/Decorator.d.ts.map +1 -1
  39. package/dist/viem/Decorator.js +2 -10
  40. package/dist/viem/Decorator.js.map +1 -1
  41. package/dist/viem/Storage.d.ts +23 -0
  42. package/dist/viem/Storage.d.ts.map +1 -0
  43. package/dist/viem/Storage.js +47 -0
  44. package/dist/viem/Storage.js.map +1 -0
  45. package/dist/viem/Transport.d.ts +10 -1
  46. package/dist/viem/Transport.d.ts.map +1 -1
  47. package/dist/viem/Transport.js +22 -3
  48. package/dist/viem/Transport.js.map +1 -1
  49. package/dist/viem/internal/utils.d.ts +6 -0
  50. package/dist/viem/internal/utils.d.ts.map +1 -1
  51. package/dist/viem/internal/utils.js +24 -0
  52. package/dist/viem/internal/utils.js.map +1 -1
  53. package/dist/wagmi/Actions/amm.d.ts +0 -225
  54. package/dist/wagmi/Actions/amm.d.ts.map +1 -1
  55. package/dist/wagmi/Actions/amm.js +0 -248
  56. package/dist/wagmi/Actions/amm.js.map +1 -1
  57. package/dist/wagmi/Actions/reward.d.ts +0 -110
  58. package/dist/wagmi/Actions/reward.d.ts.map +1 -1
  59. package/dist/wagmi/Actions/reward.js +0 -121
  60. package/dist/wagmi/Actions/reward.js.map +1 -1
  61. package/dist/wagmi/Connector.d.ts +6 -17
  62. package/dist/wagmi/Connector.d.ts.map +1 -1
  63. package/dist/wagmi/Connector.js +17 -43
  64. package/dist/wagmi/Connector.js.map +1 -1
  65. package/dist/wagmi/Hooks/amm.d.ts +0 -236
  66. package/dist/wagmi/Hooks/amm.d.ts.map +1 -1
  67. package/dist/wagmi/Hooks/amm.js +0 -285
  68. package/dist/wagmi/Hooks/amm.js.map +1 -1
  69. package/dist/wagmi/Hooks/reward.d.ts +0 -88
  70. package/dist/wagmi/Hooks/reward.d.ts.map +1 -1
  71. package/dist/wagmi/Hooks/reward.js +0 -103
  72. package/dist/wagmi/Hooks/reward.js.map +1 -1
  73. package/dist/wagmi/KeyManager.d.ts +57 -0
  74. package/dist/wagmi/KeyManager.d.ts.map +1 -0
  75. package/dist/wagmi/KeyManager.js +101 -0
  76. package/dist/wagmi/KeyManager.js.map +1 -0
  77. package/dist/wagmi/index.d.ts +1 -0
  78. package/dist/wagmi/index.d.ts.map +1 -1
  79. package/dist/wagmi/index.js +1 -0
  80. package/dist/wagmi/index.js.map +1 -1
  81. package/package.json +8 -2
  82. package/src/ox/Transaction.ts +1 -1
  83. package/src/ox/e2e.test.ts +7 -0
  84. package/src/server/Handler.test.ts +566 -0
  85. package/src/server/Handler.ts +577 -0
  86. package/src/server/Kv.ts +40 -0
  87. package/src/server/index.ts +2 -0
  88. package/src/server/internal/requestListener.ts +285 -0
  89. package/src/viem/Actions/account.test.ts +414 -0
  90. package/src/viem/Actions/account.ts +108 -0
  91. package/src/viem/Actions/amm.test.ts +10 -284
  92. package/src/viem/Actions/amm.ts +88 -768
  93. package/src/viem/Actions/index.ts +1 -0
  94. package/src/viem/Actions/reward.test.ts +4 -212
  95. package/src/viem/Actions/reward.ts +4 -291
  96. package/src/viem/Decorator.test.ts +1 -0
  97. package/src/viem/Decorator.ts +32 -294
  98. package/src/viem/Storage.ts +88 -0
  99. package/src/viem/Transport.ts +40 -2
  100. package/src/viem/e2e.test.ts +106 -3
  101. package/src/viem/internal/utils.ts +21 -0
  102. package/src/wagmi/Actions/amm.test.ts +7 -85
  103. package/src/wagmi/Actions/amm.ts +0 -346
  104. package/src/wagmi/Actions/reward.test.ts +0 -99
  105. package/src/wagmi/Actions/reward.ts +0 -203
  106. package/src/wagmi/Connector.test.ts +4 -1
  107. package/src/wagmi/Connector.ts +24 -58
  108. package/src/wagmi/Hooks/amm.test.ts +8 -200
  109. package/src/wagmi/Hooks/amm.ts +0 -443
  110. package/src/wagmi/Hooks/reward.test.ts +1 -142
  111. package/src/wagmi/Hooks/reward.ts +0 -196
  112. package/src/wagmi/KeyManager.ts +159 -0
  113. package/src/wagmi/index.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,139 @@
1
1
  # tempo.ts
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#88](https://github.com/tempoxyz/tempo-ts/pull/88) [`f6da019`](https://github.com/tempoxyz/tempo-ts/commit/f6da019ddcef6eb5c492e6bf853d2fc4e15fac64) Thanks [@jxom](https://github.com/jxom)! - Removed `userToken.amount` from `amm.mint`, and flattened the API:
8
+
9
+ ```diff
10
+ Actions.amm.mint({
11
+ - userToken: {
12
+ - address: '0x...',
13
+ - amount: 100n,
14
+ - },
15
+ + userTokenAddress: '0x...',
16
+ - validatorToken: {
17
+ - address: '0x...',
18
+ - amount: 100n,
19
+ - },
20
+ + validatorTokenAddress: '0x...',
21
+ + validatorTokenAmount: 100n,
22
+ to: '0x...',
23
+ })
24
+ ```
25
+
26
+ - [#88](https://github.com/tempoxyz/tempo-ts/pull/88) [`f6da019`](https://github.com/tempoxyz/tempo-ts/commit/f6da019ddcef6eb5c492e6bf853d2fc4e15fac64) Thanks [@jxom](https://github.com/jxom)! - Removed the following APIs:
27
+
28
+ #### `tempo.ts/viem`
29
+ - `Actions.amm.rebalanceSwap`
30
+ - `Actions.amm.rebalanceSwapSync`
31
+ - `Actions.amm.watchRebalanceSwap`
32
+ - `Actions.amm.watchFeeSwap`
33
+ - `Actions.amm.watchBurn`
34
+ - `Actions.reward.cancel`
35
+ - `Actions.reward.cancelSync`
36
+ - `Actions.reward.getStream`
37
+
38
+ #### `tempo.ts/wagmi`
39
+ - `Actions.amm.rebalanceSwap`
40
+ - `Actions.amm.rebalanceSwapSync`
41
+ - `Actions.amm.burn`
42
+ - `Actions.amm.burnSync`
43
+ - `Actions.amm.watchRebalanceSwap`
44
+ - `Actions.amm.watchFeeSwap`
45
+ - `Actions.amm.watchBurn`
46
+ - `Actions.reward.cancel`
47
+ - `Actions.reward.cancelSync`
48
+ - `Actions.reward.getStream`
49
+ - `Hooks.amm.useBurn`
50
+ - `Hooks.amm.useBurnSync`
51
+ - `Hooks.amm.useWatchMint`
52
+ - `Hooks.reward.useCancel`
53
+ - `Hooks.reward.useCancelSync`
54
+ - `Hooks.reward.useGetStream`
55
+
56
+ ### Patch Changes
57
+
58
+ - [#87](https://github.com/tempoxyz/tempo-ts/pull/87) [`e5ff1a4`](https://github.com/tempoxyz/tempo-ts/commit/e5ff1a41bf53834348604a55480ab5acc0492a9c) Thanks [@jxom](https://github.com/jxom)! - Added `Handler.feePayer` server handler for fee sponsorship.
59
+
60
+ `Handler.feePayer` returns a `fetch` or `listener` handler that can be used by the majority of
61
+ server frameworks.
62
+
63
+ For example:
64
+
65
+ ```ts
66
+ import { privateKeyToAccount } from "viem/accounts";
67
+ import { Handler } from "tempo.ts/server";
68
+ import { client } from "./viem.config";
69
+
70
+ const handler = Handler.feePayer({
71
+ account: privateKeyToAccount("0x..."),
72
+ client,
73
+ });
74
+
75
+ // Node.js
76
+ import { createServer } from "node:http";
77
+ const server = createServer(handler.listener);
78
+ server.listen(3000);
79
+
80
+ // Bun
81
+ Bun.serve(handler);
82
+
83
+ // Cloudflare
84
+ export default {
85
+ fetch(request) {
86
+ return handler.fetch(request);
87
+ },
88
+ };
89
+
90
+ // Express
91
+ import express from "express";
92
+ const app = express();
93
+ app.use(handler.listener);
94
+ app.listen(3000);
95
+ ```
96
+
97
+ - [#82](https://github.com/tempoxyz/tempo-ts/pull/82) [`94388bc`](https://github.com/tempoxyz/tempo-ts/commit/94388bcaa88ae85c4848c5bdfce6254f5b21218d) Thanks [@jxom](https://github.com/jxom)! - Added `tempo.ts/server` entrypoint with a `Handler` module. The `Handler` module provides a `keyManager` handler to instantiate a lightweight Key Manager API to use for WebAuthn credential management.
98
+
99
+ Each `Handler` function returns a `fetch` or `listener` handler that can be used by the majority of
100
+ server frameworks.
101
+
102
+ For example:
103
+
104
+ ```ts
105
+ import { Handler, Kv } from "tempo.ts/server";
106
+
107
+ const handler = Handler.keyManager({ kv: Kv.memory() });
108
+
109
+ // Node.js
110
+ import { createServer } from "node:http";
111
+ const server = createServer(handler.listener);
112
+ server.listen(3000);
113
+
114
+ // Bun
115
+ Bun.serve(handler);
116
+
117
+ // Cloudflare
118
+ export default {
119
+ fetch(request) {
120
+ return handler.fetch(request);
121
+ },
122
+ };
123
+
124
+ // Express
125
+ import express from "express";
126
+ const app = express();
127
+ app.use(handler.listener);
128
+ app.listen(3000);
129
+ ```
130
+
131
+ ## 0.6.2
132
+
133
+ ### Patch Changes
134
+
135
+ - [#80](https://github.com/tempoxyz/tempo-ts/pull/80) [`ec4fb0d`](https://github.com/tempoxyz/tempo-ts/commit/ec4fb0d99868cb16fe28fdf0053253e01adc8c33) Thanks [@jxom](https://github.com/jxom)! - `tempo.ts/viem`: Added `verifyHash` action.
136
+
3
137
  ## 0.6.1
4
138
 
5
139
  ### Patch Changes
package/README.md CHANGED
@@ -71,11 +71,15 @@ const transaction = await client.getTransaction({ hash });
71
71
  ```ts
72
72
  import { createConfig, http } from 'wagmi';
73
73
  import { tempo } from 'tempo.ts/chains';
74
- import { Actions, Hooks, webauthn } from 'tempo.ts/wagmi';
74
+ import { Actions, Hooks, KeyManager, webauthn } from 'tempo.ts/wagmi';
75
75
 
76
76
  export const config = createConfig({
77
77
  chains: [tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })],
78
- connectors: [webAuthn()],
78
+ connectors: [
79
+ webAuthn({
80
+ keyManager: KeyManager.localStorage(),
81
+ })
82
+ ],
79
83
  transports: {
80
84
  [tempo.id]: http(),
81
85
  },
@@ -64,7 +64,7 @@ export function fromRpc(transaction, _options = {}) {
64
64
  if (transaction.calls)
65
65
  transaction_.calls = transaction.calls.map((call) => ({
66
66
  to: call.to,
67
- value: call.value ? BigInt(call.value) : undefined,
67
+ value: call.value && call.value !== '0x' ? BigInt(call.value) : undefined,
68
68
  // @ts-expect-error
69
69
  data: call.input || call.data || '0x',
70
70
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../src/ox/Transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../src/ox/Transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,346 @@
1
+ import { type Router } from '@remix-run/fetch-router';
2
+ import { RpcRequest } from 'ox';
3
+ import * as Hex from 'ox/Hex';
4
+ import type * as WebAuthnP256 from 'ox/WebAuthnP256';
5
+ import { type Chain, type Client, type Transport } from 'viem';
6
+ import type { LocalAccount } from 'viem/accounts';
7
+ import type { OneOf } from '../internal/types.js';
8
+ import type * as Kv from './Kv.js';
9
+ export type Handler = Router & {
10
+ listener: (req: any, res: any) => void;
11
+ };
12
+ /**
13
+ * Instantiates a new request handler.
14
+ *
15
+ * @param options - constructor options
16
+ * @returns Handler instance
17
+ */
18
+ export declare function from(): Handler;
19
+ /**
20
+ * Defines a Key Manager request handler.
21
+ *
22
+ * @example
23
+ * ### Cloudflare Worker
24
+ *
25
+ * ```ts
26
+ * import { env } from 'cloudflare:workers'
27
+ * import { Handler } from 'tempo.ts/server'
28
+ *
29
+ * export default {
30
+ * fetch(request) {
31
+ * return Handler.keyManager({
32
+ * kv: Kv.cloudflare(env.KEY_STORE),
33
+ * }).fetch(request)
34
+ * }
35
+ * }
36
+ * ```
37
+ *
38
+ * @example
39
+ * ### Next.js
40
+ *
41
+ * ```ts
42
+ * import { Handler } from 'tempo.ts/server'
43
+ *
44
+ * const handler = Handler.keyManager({
45
+ * kv: Kv.memory(),
46
+ * })
47
+ *
48
+ * export GET = handler.fetch
49
+ * export POST = handler.fetch
50
+ * ```
51
+ *
52
+ * @example
53
+ * ### Hono
54
+ *
55
+ * ```ts
56
+ * import { Handler } from 'tempo.ts/server'
57
+ *
58
+ * const handler = Handler.keyManager({
59
+ * kv: Kv.memory(),
60
+ * })
61
+ *
62
+ * const app = new Hono()
63
+ * app.all('*', handler)
64
+ *
65
+ * export default app
66
+ * ```
67
+ *
68
+ * @example
69
+ * ### Node.js
70
+ *
71
+ * ```ts
72
+ * import { Handler } from 'tempo.ts/server'
73
+ *
74
+ * const handler = Handler.keyManager({
75
+ * kv: Kv.memory(),
76
+ * })
77
+ *
78
+ * const server = createServer(handler.listener)
79
+ * server.listen(3000)
80
+ * ```
81
+ *
82
+ * @example
83
+ * ### Bun
84
+ *
85
+ * ```ts
86
+ * import { Handler } from 'tempo.ts/server'
87
+ *
88
+ * const handler = Handler.keyManager({
89
+ * kv: Kv.memory(),
90
+ * })
91
+ *
92
+ * Bun.serve(handler)
93
+ * ```
94
+ *
95
+ * @example
96
+ * ### Deno
97
+ *
98
+ * ```ts
99
+ * import { Handler } from 'tempo.ts/server'
100
+ *
101
+ * const handler = Handler.keyManager({
102
+ * kv: Kv.memory(),
103
+ * })
104
+ *
105
+ * Deno.serve(handler)
106
+ * ```
107
+ *
108
+ * @example
109
+ * ### Express
110
+ *
111
+ * ```ts
112
+ * import { Handler } from 'tempo.ts/server'
113
+ *
114
+ * const handler = Handler.keyManager({
115
+ * kv: Kv.memory(),
116
+ * })
117
+ *
118
+ * const app = express()
119
+ * app.use(handler.listener)
120
+ * app.listen(3000)
121
+ * ```
122
+ *
123
+ * @param options - Options.
124
+ * @returns Request handler.
125
+ */
126
+ export declare function keyManager(options: keyManager.Options): Handler;
127
+ export declare namespace keyManager {
128
+ type Options = {
129
+ /** The KV store to use for key management. */
130
+ kv: Kv.Kv;
131
+ /** The path to use for the handler. */
132
+ path?: string | undefined;
133
+ /** The RP to use for WebAuthn. */
134
+ rp?: string | {
135
+ id: string;
136
+ name?: string | undefined;
137
+ } | undefined;
138
+ };
139
+ type ChallengeResponse = {
140
+ challenge: Hex.Hex;
141
+ rp?: {
142
+ id: string;
143
+ name: string;
144
+ } | undefined;
145
+ };
146
+ type GetPublicKeyParameters = {
147
+ credential: WebAuthnP256.P256Credential['raw'];
148
+ };
149
+ type SetPublicKeyParameters = {
150
+ credential: WebAuthnP256.P256Credential['raw'];
151
+ publicKey: Hex.Hex;
152
+ };
153
+ }
154
+ /**
155
+ * Instantiates a fee payer service request handler that can be used to
156
+ * sponsor the fee for user transactions.
157
+ *
158
+ * @example
159
+ * ### Cloudflare Worker
160
+ *
161
+ * ```ts
162
+ * import { createClient, http } from 'viem'
163
+ * import { privateKeyToAccount } from 'viem/accounts'
164
+ * import { tempo } from 'tempo.ts/chains'
165
+ * import { Handler } from 'tempo.ts/server'
166
+ *
167
+ * const client = createClient({
168
+ * chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' }),
169
+ * transport: http(),
170
+ * })
171
+ *
172
+ * export default {
173
+ * fetch(request) {
174
+ * return Handler.feePayer({
175
+ * account: privateKeyToAccount('0x...'),
176
+ * client,
177
+ * }).fetch(request)
178
+ * }
179
+ * }
180
+ * ```
181
+ *
182
+ * @example
183
+ * ### Next.js
184
+ *
185
+ * ```ts
186
+ * import { createClient, http } from 'viem'
187
+ * import { privateKeyToAccount } from 'viem/accounts'
188
+ * import { tempo } from 'tempo.ts/chains'
189
+ * import { Handler } from 'tempo.ts/server'
190
+ *
191
+ * const client = createClient({
192
+ * chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' }),
193
+ * transport: http(),
194
+ * })
195
+ *
196
+ * const handler = Handler.feePayer({
197
+ * account: privateKeyToAccount('0x...'),
198
+ * client,
199
+ * })
200
+ *
201
+ * export GET = handler.fetch
202
+ * export POST = handler.fetch
203
+ * ```
204
+ *
205
+ * @example
206
+ * ### Hono
207
+ *
208
+ * ```ts
209
+ * import { createClient, http } from 'viem'
210
+ * import { privateKeyToAccount } from 'viem/accounts'
211
+ * import { tempo } from 'tempo.ts/chains'
212
+ * import { Handler } from 'tempo.ts/server'
213
+ *
214
+ * const client = createClient({
215
+ * chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' }),
216
+ * transport: http(),
217
+ * })
218
+ *
219
+ * const handler = Handler.feePayer({
220
+ * account: privateKeyToAccount('0x...'),
221
+ * client,
222
+ * })
223
+ *
224
+ * const app = new Hono()
225
+ * app.all('*', handler)
226
+ *
227
+ * export default app
228
+ * ```
229
+ *
230
+ * @example
231
+ * ### Node.js
232
+ *
233
+ * ```ts
234
+ * import { createClient, http } from 'viem'
235
+ * import { privateKeyToAccount } from 'viem/accounts'
236
+ * import { tempo } from 'tempo.ts/chains'
237
+ * import { Handler } from 'tempo.ts/server'
238
+ *
239
+ * const client = createClient({
240
+ * chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' }),
241
+ * transport: http(),
242
+ * })
243
+ *
244
+ * const handler = Handler.feePayer({
245
+ * account: privateKeyToAccount('0x...'),
246
+ * client,
247
+ * })
248
+ *
249
+ * const server = createServer(handler.listener)
250
+ * server.listen(3000)
251
+ * ```
252
+ *
253
+ * @example
254
+ * ### Bun
255
+ *
256
+ * ```ts
257
+ * import { createClient, http } from 'viem'
258
+ * import { privateKeyToAccount } from 'viem/accounts'
259
+ * import { tempo } from 'tempo.ts/chains'
260
+ * import { Handler } from 'tempo.ts/server'
261
+ *
262
+ * const client = createClient({
263
+ * account: privateKeyToAccount('0x...'),
264
+ * chain: tempo({
265
+ * feeToken: '0x20c0000000000000000000000000000000000001',
266
+ * }),
267
+ * transport: http(),
268
+ * })
269
+ *
270
+ * const handler = Handler.feePayer({
271
+ * account: privateKeyToAccount('0x...'),
272
+ * client,
273
+ * })
274
+ *
275
+ * Bun.serve(handler)
276
+ * ```
277
+ *
278
+ * @example
279
+ * ### Deno
280
+ *
281
+ * ```ts
282
+ * import { createClient, http } from 'viem'
283
+ * import { privateKeyToAccount } from 'viem/accounts'
284
+ * import { tempo } from 'tempo.ts/chains'
285
+ * import { Handler } from 'tempo.ts/server'
286
+ *
287
+ * const client = createClient({
288
+ * chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' }),
289
+ * transport: http(),
290
+ * })
291
+ *
292
+ * const handler = Handler.feePayer({
293
+ * account: privateKeyToAccount('0x...'),
294
+ * client,
295
+ * })
296
+ *
297
+ * Deno.serve(handler)
298
+ * ```
299
+ *
300
+ * @example
301
+ * ### Express
302
+ *
303
+ * ```ts
304
+ * import { createClient, http } from 'viem'
305
+ * import { privateKeyToAccount } from 'viem/accounts'
306
+ * import { tempo } from 'tempo.ts/chains'
307
+ * import { Handler } from 'tempo.ts/server'
308
+ *
309
+ * const client = createClient({
310
+ * chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' }),
311
+ * transport: http(),
312
+ * })
313
+ *
314
+ * const handler = Handler.feePayer({
315
+ * account: privateKeyToAccount('0x...'),
316
+ * client,
317
+ * })
318
+ *
319
+ * const app = express()
320
+ * app.use(handler.listener)
321
+ * app.listen(3000)
322
+ * ```
323
+ *
324
+ * @param options - Options.
325
+ * @returns Request handler.
326
+ */
327
+ export declare function feePayer(options: feePayer.Options): Handler;
328
+ export declare namespace feePayer {
329
+ type Options = {
330
+ /** Account to use as the fee payer. */
331
+ account: LocalAccount;
332
+ /** Function to call before handling the request. */
333
+ onRequest?: (request: RpcRequest.RpcRequest) => Promise<void>;
334
+ /** Path to use for the handler. */
335
+ path?: string | undefined;
336
+ } & OneOf<{
337
+ /** Client to use. */
338
+ client: Client;
339
+ } | {
340
+ /** Chain to use. */
341
+ chain: Chain;
342
+ /** Transport to use. */
343
+ transport: Transport;
344
+ }>;
345
+ }
346
+ //# sourceMappingURL=Handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Handler.d.ts","sourceRoot":"","sources":["../../src/server/Handler.ts"],"names":[],"mappings":"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"}