tempo.ts 0.6.2 → 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 (101) hide show
  1. package/CHANGELOG.md +128 -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/amm.d.ts +51 -1245
  22. package/dist/viem/Actions/amm.d.ts.map +1 -1
  23. package/dist/viem/Actions/amm.js +15 -478
  24. package/dist/viem/Actions/amm.js.map +1 -1
  25. package/dist/viem/Actions/reward.d.ts +0 -1067
  26. package/dist/viem/Actions/reward.d.ts.map +1 -1
  27. package/dist/viem/Actions/reward.js +4 -212
  28. package/dist/viem/Actions/reward.js.map +1 -1
  29. package/dist/viem/Decorator.d.ts +0 -263
  30. package/dist/viem/Decorator.d.ts.map +1 -1
  31. package/dist/viem/Decorator.js +0 -10
  32. package/dist/viem/Decorator.js.map +1 -1
  33. package/dist/viem/Storage.d.ts +23 -0
  34. package/dist/viem/Storage.d.ts.map +1 -0
  35. package/dist/viem/Storage.js +47 -0
  36. package/dist/viem/Storage.js.map +1 -0
  37. package/dist/viem/Transport.d.ts +10 -1
  38. package/dist/viem/Transport.d.ts.map +1 -1
  39. package/dist/viem/Transport.js +22 -3
  40. package/dist/viem/Transport.js.map +1 -1
  41. package/dist/viem/internal/utils.d.ts +6 -0
  42. package/dist/viem/internal/utils.d.ts.map +1 -1
  43. package/dist/viem/internal/utils.js +24 -0
  44. package/dist/viem/internal/utils.js.map +1 -1
  45. package/dist/wagmi/Actions/amm.d.ts +0 -225
  46. package/dist/wagmi/Actions/amm.d.ts.map +1 -1
  47. package/dist/wagmi/Actions/amm.js +0 -248
  48. package/dist/wagmi/Actions/amm.js.map +1 -1
  49. package/dist/wagmi/Actions/reward.d.ts +0 -110
  50. package/dist/wagmi/Actions/reward.d.ts.map +1 -1
  51. package/dist/wagmi/Actions/reward.js +0 -121
  52. package/dist/wagmi/Actions/reward.js.map +1 -1
  53. package/dist/wagmi/Connector.d.ts +6 -17
  54. package/dist/wagmi/Connector.d.ts.map +1 -1
  55. package/dist/wagmi/Connector.js +17 -43
  56. package/dist/wagmi/Connector.js.map +1 -1
  57. package/dist/wagmi/Hooks/amm.d.ts +0 -236
  58. package/dist/wagmi/Hooks/amm.d.ts.map +1 -1
  59. package/dist/wagmi/Hooks/amm.js +0 -285
  60. package/dist/wagmi/Hooks/amm.js.map +1 -1
  61. package/dist/wagmi/Hooks/reward.d.ts +0 -88
  62. package/dist/wagmi/Hooks/reward.d.ts.map +1 -1
  63. package/dist/wagmi/Hooks/reward.js +0 -103
  64. package/dist/wagmi/Hooks/reward.js.map +1 -1
  65. package/dist/wagmi/KeyManager.d.ts +57 -0
  66. package/dist/wagmi/KeyManager.d.ts.map +1 -0
  67. package/dist/wagmi/KeyManager.js +101 -0
  68. package/dist/wagmi/KeyManager.js.map +1 -0
  69. package/dist/wagmi/index.d.ts +1 -0
  70. package/dist/wagmi/index.d.ts.map +1 -1
  71. package/dist/wagmi/index.js +1 -0
  72. package/dist/wagmi/index.js.map +1 -1
  73. package/package.json +8 -2
  74. package/src/ox/Transaction.ts +1 -1
  75. package/src/ox/e2e.test.ts +7 -0
  76. package/src/server/Handler.test.ts +566 -0
  77. package/src/server/Handler.ts +577 -0
  78. package/src/server/Kv.ts +40 -0
  79. package/src/server/index.ts +2 -0
  80. package/src/server/internal/requestListener.ts +285 -0
  81. package/src/viem/Actions/amm.test.ts +10 -284
  82. package/src/viem/Actions/amm.ts +88 -768
  83. package/src/viem/Actions/reward.test.ts +4 -212
  84. package/src/viem/Actions/reward.ts +4 -291
  85. package/src/viem/Decorator.ts +0 -294
  86. package/src/viem/Storage.ts +88 -0
  87. package/src/viem/Transport.ts +40 -2
  88. package/src/viem/e2e.test.ts +106 -3
  89. package/src/viem/internal/utils.ts +21 -0
  90. package/src/wagmi/Actions/amm.test.ts +7 -85
  91. package/src/wagmi/Actions/amm.ts +0 -346
  92. package/src/wagmi/Actions/reward.test.ts +0 -99
  93. package/src/wagmi/Actions/reward.ts +0 -203
  94. package/src/wagmi/Connector.test.ts +4 -1
  95. package/src/wagmi/Connector.ts +24 -58
  96. package/src/wagmi/Hooks/amm.test.ts +8 -200
  97. package/src/wagmi/Hooks/amm.ts +0 -443
  98. package/src/wagmi/Hooks/reward.test.ts +1 -142
  99. package/src/wagmi/Hooks/reward.ts +0 -196
  100. package/src/wagmi/KeyManager.ts +159 -0
  101. package/src/wagmi/index.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,133 @@
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
+
3
131
  ## 0.6.2
4
132
 
5
133
  ### 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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"}