mppx 0.4.11 → 0.5.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 (89) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/Expires.d.ts +7 -0
  3. package/dist/Expires.d.ts.map +1 -1
  4. package/dist/Expires.js +21 -0
  5. package/dist/Expires.js.map +1 -1
  6. package/dist/internal/env.d.ts +1 -1
  7. package/dist/internal/env.d.ts.map +1 -1
  8. package/dist/internal/env.js +2 -6
  9. package/dist/internal/env.js.map +1 -1
  10. package/dist/internal/types.d.ts +23 -0
  11. package/dist/internal/types.d.ts.map +1 -1
  12. package/dist/server/Mppx.d.ts +1 -1
  13. package/dist/server/Mppx.d.ts.map +1 -1
  14. package/dist/server/Mppx.js +55 -7
  15. package/dist/server/Mppx.js.map +1 -1
  16. package/dist/stripe/server/Charge.d.ts.map +1 -1
  17. package/dist/stripe/server/Charge.js +3 -3
  18. package/dist/stripe/server/Charge.js.map +1 -1
  19. package/dist/tempo/Methods.d.ts +18 -0
  20. package/dist/tempo/Methods.d.ts.map +1 -1
  21. package/dist/tempo/Methods.js +28 -3
  22. package/dist/tempo/Methods.js.map +1 -1
  23. package/dist/tempo/client/Charge.d.ts +24 -0
  24. package/dist/tempo/client/Charge.d.ts.map +1 -1
  25. package/dist/tempo/client/Charge.js +51 -9
  26. package/dist/tempo/client/Charge.js.map +1 -1
  27. package/dist/tempo/client/Methods.d.ts +18 -0
  28. package/dist/tempo/client/Methods.d.ts.map +1 -1
  29. package/dist/tempo/internal/account.d.ts +5 -11
  30. package/dist/tempo/internal/account.d.ts.map +1 -1
  31. package/dist/tempo/internal/charge.d.ts +20 -0
  32. package/dist/tempo/internal/charge.d.ts.map +1 -0
  33. package/dist/tempo/internal/charge.js +23 -0
  34. package/dist/tempo/internal/charge.js.map +1 -0
  35. package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
  36. package/dist/tempo/internal/fee-payer.js +15 -3
  37. package/dist/tempo/internal/fee-payer.js.map +1 -1
  38. package/dist/tempo/internal/proof.d.ts +23 -0
  39. package/dist/tempo/internal/proof.d.ts.map +1 -0
  40. package/dist/tempo/internal/proof.js +17 -0
  41. package/dist/tempo/internal/proof.js.map +1 -0
  42. package/dist/tempo/server/Charge.d.ts +20 -2
  43. package/dist/tempo/server/Charge.d.ts.map +1 -1
  44. package/dist/tempo/server/Charge.js +180 -103
  45. package/dist/tempo/server/Charge.js.map +1 -1
  46. package/dist/tempo/server/Methods.d.ts +20 -2
  47. package/dist/tempo/server/Methods.d.ts.map +1 -1
  48. package/dist/tempo/server/Methods.js +4 -1
  49. package/dist/tempo/server/Methods.js.map +1 -1
  50. package/dist/tempo/server/Session.d.ts +9 -4
  51. package/dist/tempo/server/Session.d.ts.map +1 -1
  52. package/dist/tempo/server/Session.js +18 -3
  53. package/dist/tempo/server/Session.js.map +1 -1
  54. package/dist/tempo/session/Chain.d.ts +18 -2
  55. package/dist/tempo/session/Chain.d.ts.map +1 -1
  56. package/dist/tempo/session/Chain.js +18 -14
  57. package/dist/tempo/session/Chain.js.map +1 -1
  58. package/package.json +1 -1
  59. package/src/Expires.ts +25 -0
  60. package/src/cli/cli.test.ts +230 -1
  61. package/src/internal/env.test.ts +12 -12
  62. package/src/internal/env.ts +2 -6
  63. package/src/internal/types.ts +25 -0
  64. package/src/middlewares/elysia.test.ts +127 -4
  65. package/src/middlewares/express.test.ts +120 -54
  66. package/src/middlewares/hono.test.ts +73 -34
  67. package/src/middlewares/nextjs.test.ts +159 -36
  68. package/src/server/Mppx.test.ts +373 -0
  69. package/src/server/Mppx.ts +64 -10
  70. package/src/stripe/server/Charge.ts +3 -7
  71. package/src/tempo/Methods.test.ts +105 -0
  72. package/src/tempo/Methods.ts +54 -17
  73. package/src/tempo/client/Charge.ts +67 -11
  74. package/src/tempo/internal/account.ts +7 -14
  75. package/src/tempo/internal/charge.test.ts +66 -0
  76. package/src/tempo/internal/charge.ts +43 -0
  77. package/src/tempo/internal/fee-payer.test.ts +33 -14
  78. package/src/tempo/internal/fee-payer.ts +21 -6
  79. package/src/tempo/internal/proof.test.ts +36 -0
  80. package/src/tempo/internal/proof.ts +19 -0
  81. package/src/tempo/server/Charge.test.ts +593 -1
  82. package/src/tempo/server/Charge.ts +233 -126
  83. package/src/tempo/server/Methods.ts +4 -1
  84. package/src/tempo/server/Session.test.ts +1152 -54
  85. package/src/tempo/server/Session.ts +26 -17
  86. package/src/tempo/server/internal/transport.test.ts +32 -0
  87. package/src/tempo/session/Chain.test.ts +60 -5
  88. package/src/tempo/session/Chain.ts +30 -14
  89. package/src/tempo/session/Sse.test.ts +31 -0
@@ -1,15 +1,17 @@
1
1
  import { decodeFunctionData, keccak256, parseEventLogs } from 'viem';
2
- import { getTransactionReceipt, sendRawTransaction, sendRawTransactionSync, signTransaction, call as viem_call, } from 'viem/actions';
2
+ import { getTransactionReceipt, sendRawTransaction, sendRawTransactionSync, signTransaction, verifyTypedData, call as viem_call, } from 'viem/actions';
3
3
  import { tempo as tempo_chain } from 'viem/chains';
4
4
  import { Abis, Transaction } from 'viem/tempo';
5
- import { PaymentExpiredError } from '../../Errors.js';
5
+ import * as Expires from '../../Expires.js';
6
6
  import * as Method from '../../Method.js';
7
7
  import * as Store from '../../Store.js';
8
8
  import * as Client from '../../viem/Client.js';
9
9
  import * as Account from '../internal/account.js';
10
10
  import * as TempoAddress from '../internal/address.js';
11
+ import * as Charge_internal from '../internal/charge.js';
11
12
  import * as defaults from '../internal/defaults.js';
12
13
  import * as FeePayer from '../internal/fee-payer.js';
14
+ import * as Proof from '../internal/proof.js';
13
15
  import * as Selectors from '../internal/selectors.js';
14
16
  import * as Methods from '../Methods.js';
15
17
  /**
@@ -86,27 +88,51 @@ export function charge(parameters = {}) {
86
88
  const expires = challenge.expires;
87
89
  const currency = challengeRequest.currency;
88
90
  const recipient = challengeRequest.recipient;
89
- if (expires && new Date(expires) < new Date())
90
- throw new PaymentExpiredError({ expires });
91
+ Expires.assert(expires, challenge.id);
91
92
  const memo = methodDetails?.memo;
92
93
  const payload = credential.payload;
94
+ const isZeroAmount = BigInt(amount) === 0n;
95
+ if (isZeroAmount && payload.type !== 'proof')
96
+ throw new MismatchError('Zero-amount challenges require a proof credential.', {});
93
97
  switch (payload.type) {
94
98
  case 'hash': {
95
99
  const hash = payload.hash;
96
100
  await assertHashUnused(store, hash);
97
- const receipt = await getTransactionReceipt(client, {
98
- hash,
99
- });
100
- assertTransferLog(receipt, {
101
- amount,
101
+ const expectedTransfers = getExpectedTransfers({ amount, memo, methodDetails, recipient });
102
+ const receipt = await getTransactionReceipt(client, { hash });
103
+ assertTransferLogs(receipt, {
102
104
  currency,
103
- from: receipt.from,
104
- memo,
105
- recipient,
105
+ sender: receipt.from,
106
+ transfers: expectedTransfers,
106
107
  });
107
108
  await markHashUsed(store, hash);
108
109
  return toReceipt(receipt);
109
110
  }
111
+ case 'proof': {
112
+ if (!isZeroAmount)
113
+ throw new MismatchError('Proof credentials are only valid for zero-amount challenges.', {});
114
+ const expectedSource = credential.source;
115
+ if (!expectedSource)
116
+ throw new MismatchError('Proof credential must include a source.', {});
117
+ const sourceAddress = expectedSource.split(':').pop();
118
+ const resolvedChainId = challenge.request.methodDetails?.chainId ?? chainId;
119
+ const valid = await verifyTypedData(client, {
120
+ address: sourceAddress,
121
+ domain: Proof.domain(resolvedChainId),
122
+ types: Proof.types,
123
+ primaryType: 'Proof',
124
+ message: Proof.message(challenge.id),
125
+ signature: payload.signature,
126
+ });
127
+ if (!valid)
128
+ throw new MismatchError('Proof signature does not match source.', {});
129
+ return {
130
+ method: 'tempo',
131
+ status: 'success',
132
+ timestamp: new Date().toISOString(),
133
+ reference: challenge.id,
134
+ };
135
+ }
110
136
  case 'transaction': {
111
137
  const serializedTransaction = payload.signature;
112
138
  // Pre-broadcast dedup: catch exact byte-for-byte replays early.
@@ -118,55 +144,11 @@ export function charge(parameters = {}) {
118
144
  const transaction = Transaction.deserialize(serializedTransaction);
119
145
  if (!transaction.signature || !transaction.from)
120
146
  throw new MismatchError('Transaction must be signed by the sender before fee payer co-signing.', {});
121
- const call = transaction.calls.find((call) => {
122
- if (!call.to || !TempoAddress.isEqual(call.to, currency))
123
- return false;
124
- if (!call.data)
125
- return false;
126
- const selector = call.data.slice(0, 10);
127
- if (memo) {
128
- if (selector !== Selectors.transferWithMemo)
129
- return false;
130
- try {
131
- const { args } = decodeFunctionData({ abi: Abis.tip20, data: call.data });
132
- const [to, amount_, memo_] = args;
133
- return (TempoAddress.isEqual(to, recipient) &&
134
- amount_.toString() === amount &&
135
- memo_.toLowerCase() === memo.toLowerCase());
136
- }
137
- catch {
138
- return false;
139
- }
140
- }
141
- if (selector === Selectors.transfer) {
142
- try {
143
- const { args } = decodeFunctionData({ abi: Abis.tip20, data: call.data });
144
- const [to, amount_] = args;
145
- return TempoAddress.isEqual(to, recipient) && amount_.toString() === amount;
146
- }
147
- catch {
148
- return false;
149
- }
150
- }
151
- if (selector === Selectors.transferWithMemo) {
152
- try {
153
- const { args } = decodeFunctionData({ abi: Abis.tip20, data: call.data });
154
- const [to, amount_] = args;
155
- return TempoAddress.isEqual(to, recipient) && amount_.toString() === amount;
156
- }
157
- catch {
158
- return false;
159
- }
160
- }
161
- return false;
162
- });
163
- if (!call)
164
- throw new MismatchError('Invalid transaction: no matching payment call found', {
165
- amount,
166
- currency,
167
- recipient,
168
- });
169
- if ((feePayer || feePayerUrl) && methodDetails?.feePayer !== false)
147
+ const calls = (transaction.calls ?? []);
148
+ const transfers = getExpectedTransfers({ amount, memo, methodDetails, recipient });
149
+ const isFeePayerTx = !!(feePayer || feePayerUrl) && methodDetails?.feePayer !== false;
150
+ assertTransferCalls(calls, { currency, exactCount: isFeePayerTx, transfers });
151
+ if (isFeePayerTx)
170
152
  FeePayer.validateCalls(transaction.calls, { amount, currency, recipient });
171
153
  const resolvedFeeToken = transaction.feeToken ?? defaults.currency[chainId];
172
154
  const serializedTransaction_final = await (async () => {
@@ -184,12 +166,10 @@ export function charge(parameters = {}) {
184
166
  const receipt = await sendRawTransactionSync(client, {
185
167
  serializedTransaction: serializedTransaction_final,
186
168
  });
187
- assertTransferLog(receipt, {
188
- amount,
169
+ assertTransferLogs(receipt, {
189
170
  currency,
190
- from: transaction.from,
191
- memo,
192
- recipient,
171
+ sender: transaction.from,
172
+ transfers,
193
173
  });
194
174
  // Post-broadcast dedup: catch malleable input variants
195
175
  // (different serialized bytes, same underlying tx) that
@@ -233,49 +213,146 @@ export function charge(parameters = {}) {
233
213
  },
234
214
  });
235
215
  }
236
- /** @internal */
237
- function assertTransferLog(receipt, parameters) {
238
- const { amount, currency, from, memo, recipient } = parameters;
239
- if (memo) {
240
- const memoLogs = parseEventLogs({
241
- abi: Abis.tip20,
242
- eventName: 'TransferWithMemo',
243
- logs: receipt.logs,
216
+ function getExpectedTransfers(parameters) {
217
+ return Charge_internal.getTransfers({
218
+ amount: parameters.amount,
219
+ methodDetails: {
220
+ memo: parameters.memo,
221
+ splits: parameters.methodDetails?.splits,
222
+ },
223
+ recipient: parameters.recipient,
224
+ }).map((transfer) => ({
225
+ ...transfer,
226
+ ...(!transfer.memo ? { allowAnyMemo: true } : {}),
227
+ }));
228
+ }
229
+ function assertTransferCalls(calls, parameters) {
230
+ const transferCalls = getTransferCalls(calls);
231
+ if (parameters.exactCount && transferCalls.length !== parameters.transfers.length)
232
+ throw new MismatchError('Invalid transaction: no matching payment call found', {
233
+ expectedCalls: String(parameters.transfers.length),
234
+ actualCalls: String(transferCalls.length),
244
235
  });
245
- const match = memoLogs.find((log) => TempoAddress.isEqual(log.address, currency) &&
246
- TempoAddress.isEqual(log.args.from, from) &&
247
- TempoAddress.isEqual(log.args.to, recipient) &&
248
- log.args.amount.toString() === amount &&
249
- log.args.memo.toLowerCase() === memo.toLowerCase());
250
- if (!match)
251
- throw new MismatchError('Payment verification failed: no matching transfer with memo found.', {
252
- amount,
253
- currency,
254
- memo,
255
- recipient,
236
+ const used = new Set();
237
+ // Match memo-specific transfers before wildcards to avoid greedy
238
+ // consumption of memo-bearing calls by allowAnyMemo entries.
239
+ const sorted = [...parameters.transfers].sort((a, b) => {
240
+ if (a.memo && !b.memo)
241
+ return -1;
242
+ if (!a.memo && b.memo)
243
+ return 1;
244
+ return 0;
245
+ });
246
+ for (const expected of sorted) {
247
+ const matchIndex = transferCalls.findIndex((call, index) => {
248
+ if (used.has(index))
249
+ return false;
250
+ const decoded = decodeTransferCall(call, parameters.currency);
251
+ if (!decoded)
252
+ return false;
253
+ if (!TempoAddress.isEqual(decoded.recipient, expected.recipient))
254
+ return false;
255
+ if (decoded.amount !== expected.amount)
256
+ return false;
257
+ if (expected.memo) {
258
+ return decoded.memo?.toLowerCase() === expected.memo.toLowerCase();
259
+ }
260
+ if (expected.allowAnyMemo)
261
+ return true;
262
+ return decoded.memo === undefined;
263
+ });
264
+ if (matchIndex === -1) {
265
+ throw new MismatchError('Invalid transaction: no matching payment call found', {
266
+ amount: expected.amount,
267
+ currency: parameters.currency,
268
+ recipient: expected.recipient,
256
269
  });
270
+ }
271
+ used.add(matchIndex);
257
272
  }
258
- else {
259
- const transferLogs = parseEventLogs({
260
- abi: Abis.tip20,
261
- eventName: 'Transfer',
262
- logs: receipt.logs,
263
- });
264
- const memoLogs = parseEventLogs({
265
- abi: Abis.tip20,
266
- eventName: 'TransferWithMemo',
267
- logs: receipt.logs,
273
+ }
274
+ function getTransferCalls(calls) {
275
+ const selectors = calls.map((call) => call.data?.slice(0, 10));
276
+ const offset = selectors[0] === Selectors.approve && selectors[1] === Selectors.swapExactAmountOut ? 2 : 0;
277
+ const transferCalls = calls.slice(offset);
278
+ if (transferCalls.length === 0 ||
279
+ selectors
280
+ .slice(offset)
281
+ .some((selector) => selector !== Selectors.transfer && selector !== Selectors.transferWithMemo)) {
282
+ throw new MismatchError('Invalid transaction: no matching payment call found', {});
283
+ }
284
+ return transferCalls;
285
+ }
286
+ function decodeTransferCall(call, currency) {
287
+ if (!call.to || !TempoAddress.isEqual(call.to, currency) || !call.data)
288
+ return null;
289
+ try {
290
+ const selector = call.data.slice(0, 10);
291
+ if (selector === Selectors.transfer) {
292
+ const { args } = decodeFunctionData({ abi: Abis.tip20, data: call.data });
293
+ const [recipient, amount] = args;
294
+ return { amount: amount.toString(), recipient };
295
+ }
296
+ if (selector === Selectors.transferWithMemo) {
297
+ const { args } = decodeFunctionData({ abi: Abis.tip20, data: call.data });
298
+ const [recipient, amount, memo] = args;
299
+ return { amount: amount.toString(), memo, recipient };
300
+ }
301
+ }
302
+ catch {
303
+ return null;
304
+ }
305
+ return null;
306
+ }
307
+ function assertTransferLogs(receipt, parameters) {
308
+ const transferLogs = parseEventLogs({
309
+ abi: Abis.tip20,
310
+ eventName: 'Transfer',
311
+ logs: receipt.logs,
312
+ }).map((log) => ({ ...log, kind: 'transfer' }));
313
+ const memoLogs = parseEventLogs({
314
+ abi: Abis.tip20,
315
+ eventName: 'TransferWithMemo',
316
+ logs: receipt.logs,
317
+ }).map((log) => ({ ...log, kind: 'memo' }));
318
+ const logs = [...transferLogs, ...memoLogs];
319
+ const used = new Set();
320
+ // Match memo-specific transfers before wildcards to avoid greedy
321
+ // consumption of memo-bearing logs by allowAnyMemo entries.
322
+ const sorted = [...parameters.transfers].sort((a, b) => {
323
+ if (a.memo && !b.memo)
324
+ return -1;
325
+ if (!a.memo && b.memo)
326
+ return 1;
327
+ return 0;
328
+ });
329
+ for (const transfer of sorted) {
330
+ const matchIndex = logs.findIndex((log, index) => {
331
+ if (used.has(index))
332
+ return false;
333
+ if (!TempoAddress.isEqual(log.address, parameters.currency))
334
+ return false;
335
+ if (!TempoAddress.isEqual(log.args.from, parameters.sender))
336
+ return false;
337
+ if (!TempoAddress.isEqual(log.args.to, transfer.recipient))
338
+ return false;
339
+ if (log.args.amount.toString() !== transfer.amount)
340
+ return false;
341
+ if (transfer.memo) {
342
+ return log.kind === 'memo' && log.args.memo.toLowerCase() === transfer.memo.toLowerCase();
343
+ }
344
+ if (transfer.allowAnyMemo)
345
+ return log.kind === 'transfer' || log.kind === 'memo';
346
+ return log.kind === 'transfer';
268
347
  });
269
- const match = [...transferLogs, ...memoLogs].find((log) => TempoAddress.isEqual(log.address, currency) &&
270
- TempoAddress.isEqual(log.args.from, from) &&
271
- TempoAddress.isEqual(log.args.to, recipient) &&
272
- log.args.amount.toString() === amount);
273
- if (!match)
348
+ if (matchIndex === -1) {
274
349
  throw new MismatchError('Payment verification failed: no matching transfer found.', {
275
- amount,
276
- currency,
277
- recipient,
350
+ amount: transfer.amount,
351
+ currency: parameters.currency,
352
+ recipient: transfer.recipient,
278
353
  });
354
+ }
355
+ used.add(matchIndex);
279
356
  }
280
357
  }
281
358
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAA2B,MAAM,MAAM,CAAA;AAC7F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,IAAI,IAAI,SAAS,GAClB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAA;AAErD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAExC;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM,CACpB,aAAyB,EAAgB;IAEzC,MAAM,EACJ,MAAM,EACN,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,EAC/C,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAC5B,WAAW,EACX,UAAU,EACV,IAAI,EACJ,mBAAmB,GAAG,IAAI,GAC3B,GAAG,UAAU,CAAA;IACd,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAqC,CAAA;IAEtF,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAExE,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;QACnC,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,gCAAgC,EAAE,GAAG,EAAE;QAChE,WAAW;QACX,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC,CAAA;IAGF,OAAO,MAAM,CAAC,QAAQ,CAAkC,OAAO,CAAC,MAAM,EAAE;QACtE,QAAQ,EAAE;YACR,MAAM;YACN,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,UAAU;YACV,IAAI;YACJ,SAAS;SACa;QAExB,0CAA0C;QAC1C,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE;YACnC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChC,IAAI,OAAO,CAAC,OAAO;oBAAE,OAAO,OAAO,CAAC,OAAO,CAAA;gBAC3C,IAAI,UAAU,CAAC,OAAO;oBAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;gBACvD,OAAO,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAA;YACxC,CAAC,CAAC,EAAE,CAAA;YAEJ,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;gBAC/B,IAAI,CAAC;oBACH,OAAO,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;gBACrC,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,GAAG,CAAC,CAAA;gBAClE,CAAC;YACH,CAAC,CAAC,EAAE,CAAA;YACJ,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,OAAO;gBAC9B,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,GAAG,CAAC,CAAA;YAEnE,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE;gBAC7B,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;gBAClF,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,WAAW,CAAC,CAAA;gBACpF,IAAI,UAAU;oBAAE,OAAO,OAAO,CAAA;gBAC9B,IAAI,SAAS;oBAAE,OAAO,IAAI,CAAA;gBAC1B,OAAO,SAAS,CAAA;YAClB,CAAC,CAAC,EAAE,CAAA;YAEJ,OAAO;gBACL,GAAG,OAAO;gBACV,OAAO;gBACP,QAAQ,EAAE,gBAAgB;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;aAChC,CAAA;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE;YAClC,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;YAChC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;YAErC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;YAE3C,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAA;YAC/C,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAA;YAClD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;YAEjC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAyB,CAAA;YAC3D,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAA0B,CAAA;YAE7D,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;gBAAE,MAAM,IAAI,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;YAEzF,MAAM,IAAI,GAAG,aAAa,EAAE,IAAiC,CAAA;YAE7D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;YAElC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAqB,CAAA;oBAC1C,MAAM,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBAEnC,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE;wBAClD,IAAI;qBACL,CAAC,CAAA;oBAEF,iBAAiB,CAAC,OAAO,EAAE;wBACzB,MAAM;wBACN,QAAQ;wBACR,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,IAAI;wBACJ,SAAS;qBACV,CAAC,CAAA;oBAEF,MAAM,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBAE/B,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;gBAC3B,CAAC;gBAED,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,qBAAqB,GAAG,OAAO,CAAC,SAAmD,CAAA;oBAEzF,gEAAgE;oBAChE,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAA;oBAC7C,MAAM,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACnC,MAAM,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBAE/B,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;wBACrD,MAAM,IAAI,aAAa,CAAC,oDAAoD,EAAE,EAAE,CAAC,CAAA;oBAEnF,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAA;oBAClE,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI;wBAC7C,MAAM,IAAI,aAAa,CACrB,uEAAuE,EACvE,EAAE,CACH,CAAA;oBAEH,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC3C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC;4BAAE,OAAO,KAAK,CAAA;wBACtE,IAAI,CAAC,IAAI,CAAC,IAAI;4BAAE,OAAO,KAAK,CAAA;wBAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;wBAEvC,IAAI,IAAI,EAAE,CAAC;4BACT,IAAI,QAAQ,KAAK,SAAS,CAAC,gBAAgB;gCAAE,OAAO,KAAK,CAAA;4BACzD,IAAI,CAAC;gCACH,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gCACzE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,IAA8C,CAAA;gCAC3E,OAAO,CACL,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC;oCACnC,OAAO,CAAC,QAAQ,EAAE,KAAK,MAAM;oCAC7B,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAC3C,CAAA;4BACH,CAAC;4BAAC,MAAM,CAAC;gCACP,OAAO,KAAK,CAAA;4BACd,CAAC;wBACH,CAAC;wBAED,IAAI,QAAQ,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;4BACpC,IAAI,CAAC;gCACH,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gCACzE,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,IAA+B,CAAA;gCACrD,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAA;4BAC7E,CAAC;4BAAC,MAAM,CAAC;gCACP,OAAO,KAAK,CAAA;4BACd,CAAC;wBACH,CAAC;wBAED,IAAI,QAAQ,KAAK,SAAS,CAAC,gBAAgB,EAAE,CAAC;4BAC5C,IAAI,CAAC;gCACH,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gCACzE,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,IAA8C,CAAA;gCACpE,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAA;4BAC7E,CAAC;4BAAC,MAAM,CAAC;gCACP,OAAO,KAAK,CAAA;4BACd,CAAC;wBACH,CAAC;wBAED,OAAO,KAAK,CAAA;oBACd,CAAC,CAAC,CAAA;oBAEF,IAAI,CAAC,IAAI;wBACP,MAAM,IAAI,aAAa,CAAC,qDAAqD,EAAE;4BAC7E,MAAM;4BACN,QAAQ;4BACR,SAAS;yBACV,CAAC,CAAA;oBAEJ,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,aAAa,EAAE,QAAQ,KAAK,KAAK;wBAChE,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;oBAE5E,MAAM,gBAAgB,GACpB,WAAW,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAyC,CAAC,CAAA;oBAEtF,MAAM,2BAA2B,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;wBACpD,IAAI,QAAQ,IAAI,aAAa,EAAE,QAAQ,KAAK,KAAK,EAAE,CAAC;4BAClD,OAAO,eAAe,CAAC,MAAM,EAAE;gCAC7B,GAAG,WAAW;gCACd,OAAO,EAAE,QAAQ;gCACjB,QAAQ;gCACR,QAAQ,EAAE,gBAAgB;6BAClB,CAAC,CAAA;wBACb,CAAC;wBACD,OAAO,qBAAqB,CAAA;oBAC9B,CAAC,CAAC,EAAE,CAAA;oBAEJ,IAAI,mBAAmB,EAAE,CAAC;wBACxB,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE;4BACnD,qBAAqB,EAAE,2BAA2B;yBACnD,CAAC,CAAA;wBACF,iBAAiB,CAAC,OAAO,EAAE;4BACzB,MAAM;4BACN,QAAQ;4BACR,IAAI,EAAE,WAAW,CAAC,IAAI;4BACtB,IAAI;4BACJ,SAAS;yBACV,CAAC,CAAA;wBACF,uDAAuD;wBACvD,wDAAwD;wBACxD,wDAAwD;wBACxD,sDAAsD;wBACtD,IAAI,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;4BACjE,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;4BACtD,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;wBACpD,CAAC;wBACD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;oBAC3B,CAAC;yBAAM,CAAC;wBACN,qEAAqE;wBACrE,kEAAkE;wBAClE,+EAA+E;wBAC/E,MAAM,SAAS,CAAC,MAAM,EAAE;4BACtB,GAAG,WAAW;4BACd,OAAO,EAAE,WAAW,CAAC,IAAI;4BACzB,QAAQ,EAAE,gBAAgB;4BAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;yBAChB,CAAC,CAAA;wBACX,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE;4BACjD,qBAAqB,EAAE,2BAA2B;yBACnD,CAAC,CAAA;wBACF,6BAA6B;wBAC7B,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;4BACnD,MAAM,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;4BACxC,MAAM,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;wBACtC,CAAC;wBACD,OAAO;4BACL,MAAM,EAAE,OAAO;4BACf,MAAM,EAAE,SAAS;4BACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,SAAS;yBACD,CAAA;oBACZ,CAAC;gBACH,CAAC;gBAED;oBACE,MAAM,IAAI,KAAK,CAAC,gCAAiC,OAA4B,CAAC,IAAI,IAAI,CAAC,CAAA;YAC3F,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAyCD,gBAAgB;AAChB,SAAS,iBAAiB,CACxB,OAA2B,EAC3B,UAMC;IAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;IAE9D,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,QAAQ,GAAG,cAAc,CAAC;YAC9B,GAAG,EAAE,IAAI,CAAC,KAAK;YACf,SAAS,EAAE,kBAAkB;YAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CACzB,CAAC,GAAG,EAAE,EAAE,CACN,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC3C,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YACzC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,MAAM;YACrC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CACrD,CAAA;QAED,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,aAAa,CACrB,oEAAoE,EACpE;gBACE,MAAM;gBACN,QAAQ;gBACR,IAAI;gBACJ,SAAS;aACV,CACF,CAAA;IACL,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,cAAc,CAAC;YAClC,GAAG,EAAE,IAAI,CAAC,KAAK;YACf,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,cAAc,CAAC;YAC9B,GAAG,EAAE,IAAI,CAAC,KAAK;YACf,SAAS,EAAE,kBAAkB;YAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAC/C,CAAC,GAAG,EAAE,EAAE,CACN,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC3C,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YACzC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,MAAM,CACxC,CAAA;QAED,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,aAAa,CAAC,0DAA0D,EAAE;gBAClF,MAAM;gBACN,QAAQ;gBACR,SAAS;aACV,CAAC,CAAA;IACN,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,SAAS,eAAe,CAAC,IAAmB;IAC1C,OAAO,eAAe,IAAI,CAAC,WAAW,EAAE,EAAE,CAAA;AAC5C,CAAC;AAED,gBAAgB;AAChB,KAAK,UAAU,gBAAgB,CAC7B,KAAuC,EACvC,IAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;IACnD,IAAI,IAAI,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;AAC/E,CAAC;AAED,gBAAgB;AAChB,KAAK,UAAU,YAAY,CACzB,KAAuC,EACvC,IAAmB;IAEnB,MAAM,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;AACpD,CAAC;AAED,gBAAgB;AAChB,SAAS,SAAS,CAAC,OAA2B;IAC5C,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAA;IAC3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAe,EAAE,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO;QACL,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,eAAe;KAClB,CAAA;AACZ,CAAC;AAED,gBAAgB;AAChB,MAAM,aAAc,SAAQ,KAAK;IACb,IAAI,GAAG,eAAe,CAAA;IAExC,YAAY,MAAc,EAAE,OAA+B;QACzD,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1F,CAAC;CACF"}
1
+ {"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,9 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
23
23
  }, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
24
24
  signature: import("zod/mini").ZodMiniString<string>;
25
25
  type: import("zod/mini").ZodMiniLiteral<"transaction">;
26
+ }, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
27
+ signature: import("zod/mini").ZodMiniString<string>;
28
+ type: import("zod/mini").ZodMiniLiteral<"proof">;
26
29
  }, import("zod/v4/core").$strip>], "type">;
27
30
  };
28
31
  readonly request: import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniObject<{
@@ -35,8 +38,18 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
35
38
  feePayer: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniBoolean<boolean>, import("zod/mini").ZodMiniCustom<import("viem").Account, import("viem").Account>]>, import("zod/mini").ZodMiniTransform<boolean, boolean | import("viem").Account>>>;
36
39
  memo: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
37
40
  recipient: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
41
+ splits: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniArray<import("zod/mini").ZodMiniObject<{
42
+ amount: import("zod/mini").ZodMiniString<string>;
43
+ memo: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
44
+ recipient: import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<`0x${string}`, string>>;
45
+ }, import("zod/v4/core").$strip>>>;
38
46
  }, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniTransform<{
39
47
  methodDetails?: {
48
+ splits?: {
49
+ amount: string;
50
+ recipient: `0x${string}`;
51
+ memo?: string | undefined;
52
+ }[] | undefined;
40
53
  memo?: string | undefined;
41
54
  feePayer?: boolean | undefined;
42
55
  chainId?: number | undefined;
@@ -56,9 +69,14 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
56
69
  feePayer?: boolean | undefined;
57
70
  memo?: string | undefined;
58
71
  recipient?: string | undefined;
72
+ splits?: {
73
+ amount: string;
74
+ recipient: `0x${string}`;
75
+ memo?: string | undefined;
76
+ }[] | undefined;
59
77
  }>>;
60
78
  };
61
- }, charge_.DeriveDefaults<parameters>, undefined>, import("../../Method.js").Server<{
79
+ }, never, undefined>, import("../../Method.js").Server<{
62
80
  readonly name: "tempo";
63
81
  readonly intent: "session";
64
82
  readonly schema: {
@@ -128,7 +146,7 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
128
146
  suggestedDeposit?: string | undefined;
129
147
  }>>;
130
148
  };
131
- }, session_.DeriveDefaults<parameters>, parameters["sse"] extends false | undefined ? undefined : import("./internal/transport.js").Sse>];
149
+ }, never, undefined>];
132
150
  export declare namespace tempo {
133
151
  type Parameters = charge_.Parameters & session_.Parameters;
134
152
  /** Creates a Tempo `charge` method for one-time TIP-20 token transfers. */
@@ -1 +1 @@
1
- {"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,KAAK,CAAC,UAAU,SAAS,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0IAEvF;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;IAEjE,2EAA2E;IACpE,MAAM,MAAM,gBAAU,CAAA;IAC7B,gFAAgF;IACzE,MAAM,OAAO,iBAAW,CAAA;IAC/B,gFAAgF;IACzE,MAAM,MAAM,gBAAU,CAAA;CAC9B"}
1
+ {"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,KAAK,CAAC,UAAU,SAAS,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAKvF;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;IAEjE,2EAA2E;IACpE,MAAM,MAAM,gBAAU,CAAA;IAC7B,gFAAgF;IACzE,MAAM,OAAO,iBAAW,CAAA;IAC/B,gFAAgF;IACzE,MAAM,MAAM,gBAAU,CAAA;CAC9B"}
@@ -13,7 +13,10 @@ import { session as session_, settle as settle_ } from './Session.js';
13
13
  * ```
14
14
  */
15
15
  export function tempo(parameters) {
16
- return [tempo.charge(parameters), tempo.session(parameters)];
16
+ return [
17
+ tempo.charge(parameters),
18
+ tempo.session(parameters),
19
+ ];
17
20
  }
18
21
  (function (tempo) {
19
22
  /** Creates a Tempo `charge` method for one-time TIP-20 token transfers. */
@@ -1 +1 @@
1
- {"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAA4C,UAAuB;IACtF,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAU,CAAA;AACvE,CAAC;AAED,WAAiB,KAAK;IAGpB,2EAA2E;IAC9D,YAAM,GAAG,OAAO,CAAA;IAC7B,gFAAgF;IACnE,aAAO,GAAG,QAAQ,CAAA;IAC/B,gFAAgF;IACnE,YAAM,GAAG,OAAO,CAAA;AAC/B,CAAC,EATgB,KAAK,KAAL,KAAK,QASrB"}
1
+ {"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAA4C,UAAuB;IACtF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,UAAyC,CAAC;QACvD,KAAK,CAAC,OAAO,CAAC,UAA0C,CAAC;KACjD,CAAA;AACZ,CAAC;AAED,WAAiB,KAAK;IAGpB,2EAA2E;IAC9D,YAAM,GAAG,OAAO,CAAA;IAC7B,gFAAgF;IACnE,aAAO,GAAG,QAAQ,CAAA;IAC/B,gFAAgF;IACnE,YAAM,GAAG,OAAO,CAAA;AAC/B,CAAC,EATgB,KAAK,KAAL,KAAK,QASrB"}
@@ -11,7 +11,7 @@
11
11
  * request, use {@link ../session/Sse} instead.
12
12
  */
13
13
  import { type Address, type Hex, type Account as viem_Account, type Client as viem_Client } from 'viem';
14
- import type { LooseOmit } from '../../internal/types.js';
14
+ import type { LooseOmit, NoExtraKeys } from '../../internal/types.js';
15
15
  import * as Method from '../../Method.js';
16
16
  import * as Store from '../../Store.js';
17
17
  import * as Client from '../../viem/Client.js';
@@ -41,7 +41,7 @@ import * as Transport from './internal/transport.js';
41
41
  * })
42
42
  * ```
43
43
  */
44
- export declare function session<const parameters extends session.Parameters>(p?: parameters): Method.Server<{
44
+ export declare function session<const parameters extends session.Parameters>(p?: NoExtraKeys<parameters, session.Parameters>): Method.Server<{
45
45
  readonly name: "tempo";
46
46
  readonly intent: "session";
47
47
  readonly schema: {
@@ -154,8 +154,13 @@ export declare namespace session {
154
154
  */
155
155
  export declare function settle(store: ChannelStore.ChannelStore, client: viem_Client, channelId: Hex, options?: {
156
156
  escrowContract?: Address | undefined;
157
- feePayer?: viem_Account | undefined;
158
- }): Promise<Hex>;
157
+ } & ({
158
+ feePayer: viem_Account;
159
+ account: viem_Account;
160
+ } | {
161
+ feePayer?: undefined;
162
+ account?: viem_Account | undefined;
163
+ })): Promise<Hex>;
159
164
  /**
160
165
  * Charge against a channel's balance.
161
166
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,GAAG,EAER,KAAK,OAAO,IAAI,YAAY,EAC5B,KAAK,MAAM,IAAI,WAAW,EAC3B,MAAM,MAAM,CAAA;AAcb,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,KAAK,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AASxC,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAA;AAI1D,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAA;AAWpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gHAuMlF;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,QAAQ,GAAG,SAAS,CACvB,MAAM,CAAC,eAAe,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,EAC9C,UAAU,GAAG,WAAW,CACzB,CAAA;IAED,KAAK,UAAU,GAAG;QAChB,+LAA+L;QAC/L,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACpC,sEAAsE;QACtE,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACpC;;;;;;;;;;WAUG;QACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QACzC,uCAAuC;QACvC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B;;;;;;WAMG;QACH,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAA;QACjD,oBAAoB;QACpB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC9B,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,GAC5B,MAAM,CAAC,WAAW,CAAC,UAAU,GAC7B,QAAQ,CAAA;IAEV,KAAK,cAAc,CAAC,UAAU,SAAS,UAAU,IAAI,KAAK,CAAC,cAAc,CACvE,UAAU,EACV,QAAQ,CACT,GAAG;QACF,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,OAAO,CAAA;KACxB,CAAA;CACF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,YAAY,CAAC,YAAY,EAChC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,GAAG,EACd,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CACpC,GACA,OAAO,CAAC,GAAG,CAAC,CA2Bd;AAED;;;;;;;;GAQG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,YAAY,CAAC,YAAY,EAChC,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAc7B"}
1
+ {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,GAAG,EAGR,KAAK,OAAO,IAAI,YAAY,EAC5B,KAAK,MAAM,IAAI,WAAW,EAC3B,MAAM,MAAM,CAAA;AAcb,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,KAAK,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AASxC,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAA;AAI1D,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAA;AAWpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,OAAO,CAAC,UAAU,EACjE,CAAC,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gHAwMhD;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,QAAQ,GAAG,SAAS,CACvB,MAAM,CAAC,eAAe,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,EAC9C,UAAU,GAAG,WAAW,CACzB,CAAA;IAED,KAAK,UAAU,GAAG;QAChB,+LAA+L;QAC/L,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACpC,sEAAsE;QACtE,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACpC;;;;;;;;;;WAUG;QACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QACzC,uCAAuC;QACvC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B;;;;;;WAMG;QACH,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAA;QACjD,oBAAoB;QACpB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC9B,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,GAC5B,MAAM,CAAC,WAAW,CAAC,UAAU,GAC7B,QAAQ,CAAA;IAEV,KAAK,cAAc,CAAC,UAAU,SAAS,UAAU,IAAI,KAAK,CAAC,cAAc,CACvE,UAAU,EACV,QAAQ,CACT,GAAG;QACF,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,OAAO,CAAA;KACxB,CAAA;CACF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,YAAY,CAAC,YAAY,EAChC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,GAAG,EACd,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACrC,GAAG,CACA;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,CAC/D,GACA,OAAO,CAAC,GAAG,CAAC,CA0Bd;AAED;;;;;;;;GAQG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,YAAY,CAAC,YAAY,EAChC,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAc7B"}
@@ -10,7 +10,7 @@
10
10
  * For long-lived connections that emit multiple paid events over a single
11
11
  * request, use {@link ../session/Sse} instead.
12
12
  */
13
- import { parseUnits, } from 'viem';
13
+ import { parseUnits, zeroAddress, } from 'viem';
14
14
  import { tempo as tempo_chain } from 'viem/chains';
15
15
  import { AmountExceedsDepositError, BadRequestError, ChannelClosedError, ChannelNotFoundError, DeltaTooSmallError, InsufficientBalanceError, InvalidSignatureError, VerificationFailedError, } from '../../Errors.js';
16
16
  import * as Method from '../../Method.js';
@@ -197,7 +197,11 @@ export async function settle(store, client, channelId, options) {
197
197
  if (!resolvedEscrow)
198
198
  throw new Error(`No escrow contract for chainId ${chainId}.`);
199
199
  const settledAmount = channel.highestVoucher.cumulativeAmount;
200
- const txHash = await settleOnChain(client, resolvedEscrow, channel.highestVoucher, options?.feePayer);
200
+ const txHash = await settleOnChain(client, resolvedEscrow, channel.highestVoucher, {
201
+ ...(options?.feePayer && options?.account
202
+ ? { feePayer: options.feePayer, account: options.account }
203
+ : { account: options?.account }),
204
+ });
201
205
  await store.updateChannel(channelId, (current) => {
202
206
  if (!current)
203
207
  return null;
@@ -270,6 +274,15 @@ async function verifyAndAcceptVoucher(parameters) {
270
274
  if (onChain.closeRequestedAt !== 0n) {
271
275
  throw new ChannelClosedError({ reason: 'channel has a pending close request' });
272
276
  }
277
+ // Treat a zero deposit on an existing channel as settled/closed.
278
+ // During settlement the escrow contract may zero the deposit before
279
+ // setting the finalized flag, creating a brief window where
280
+ // finalized=false but deposit=0. Without this guard the voucher
281
+ // check below would return a 402 (AmountExceedsDepositError) instead
282
+ // of the correct 410 (ChannelClosedError).
283
+ if (onChain.deposit === 0n && onChain.payer !== zeroAddress) {
284
+ throw new ChannelClosedError({ reason: 'channel deposit is zero (settled)' });
285
+ }
273
286
  if (voucher.cumulativeAmount <= onChain.settled) {
274
287
  throw new VerificationFailedError({
275
288
  reason: 'voucher cumulativeAmount is below on-chain settled amount',
@@ -552,7 +565,9 @@ async function handleClose(store, client, challenge, payload, methodDetails, acc
552
565
  if (!isValid) {
553
566
  throw new InvalidSignatureError({ reason: 'invalid voucher signature' });
554
567
  }
555
- const txHash = await closeOnChain(client, methodDetails.escrowContract, voucher, account, feePayer);
568
+ const txHash = await closeOnChain(client, methodDetails.escrowContract, voucher, {
569
+ ...(feePayer && account ? { feePayer, account } : { account }),
570
+ });
556
571
  const updated = await store.updateChannel(payload.channelId, (current) => {
557
572
  if (!current)
558
573
  return null;