tapimo 0.6.0 → 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 (250) hide show
  1. package/dist/App.d.ts +8641 -8263
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +9 -1
  4. package/dist/App.js.map +1 -1
  5. package/dist/Scope.d.ts +4 -0
  6. package/dist/Scope.d.ts.map +1 -1
  7. package/dist/Scope.js +5 -0
  8. package/dist/Scope.js.map +1 -1
  9. package/dist/admin/App.d.ts +112 -11
  10. package/dist/admin/App.d.ts.map +1 -1
  11. package/dist/admin/apps/api-keys.d.ts +2 -1
  12. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  13. package/dist/admin/apps/early-access.d.ts +2 -2
  14. package/dist/admin/apps/early-access.d.ts.map +1 -1
  15. package/dist/admin/apps/early-access.js +5 -5
  16. package/dist/admin/apps/early-access.js.map +1 -1
  17. package/dist/admin/apps/organizations.d.ts +124 -1
  18. package/dist/admin/apps/organizations.d.ts.map +1 -1
  19. package/dist/admin/apps/organizations.js +97 -6
  20. package/dist/admin/apps/organizations.js.map +1 -1
  21. package/dist/admin/ui.generated.d.ts +1 -1
  22. package/dist/admin/ui.generated.d.ts.map +1 -1
  23. package/dist/admin/ui.generated.js +95 -87
  24. package/dist/admin/ui.generated.js.map +1 -1
  25. package/dist/analytics/Analytics.d.ts.map +1 -1
  26. package/dist/analytics/Analytics.js +20 -0
  27. package/dist/analytics/Analytics.js.map +1 -1
  28. package/dist/analytics/tables/requestEvents.d.ts +18 -0
  29. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  30. package/dist/analytics/tables/requestEvents.js +36 -7
  31. package/dist/analytics/tables/requestEvents.js.map +1 -1
  32. package/dist/apps/data/App.d.ts +5016 -4985
  33. package/dist/apps/data/App.d.ts.map +1 -1
  34. package/dist/apps/data/FundingQuoteProviders.js +2 -15
  35. package/dist/apps/data/FundingQuoteProviders.js.map +1 -1
  36. package/dist/apps/data/FxOracle.d.ts +1 -1
  37. package/dist/apps/data/FxOracle.d.ts.map +1 -1
  38. package/dist/apps/data/FxOracle.js +1 -1
  39. package/dist/apps/data/FxOracle.js.map +1 -1
  40. package/dist/apps/data/routes/activities.d.ts +27 -27
  41. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  42. package/dist/apps/data/routes/activities.js +21 -1
  43. package/dist/apps/data/routes/activities.js.map +1 -1
  44. package/dist/apps/data/routes/balances.d.ts +58 -58
  45. package/dist/apps/data/routes/blocks.d.ts +39 -39
  46. package/dist/apps/data/routes/coingecko.d.ts +176 -176
  47. package/dist/apps/data/routes/exchanges.d.ts +113 -113
  48. package/dist/apps/data/routes/fee-amm.d.ts +105 -91
  49. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  50. package/dist/apps/data/routes/fee-amm.js +76 -91
  51. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  52. package/dist/apps/data/routes/funding.d.ts +72 -34
  53. package/dist/apps/data/routes/funding.d.ts.map +1 -1
  54. package/dist/apps/data/routes/funding.js +34 -26
  55. package/dist/apps/data/routes/funding.js.map +1 -1
  56. package/dist/apps/data/routes/indexer.d.ts +5 -5
  57. package/dist/apps/data/routes/receipts.d.ts +6 -6
  58. package/dist/apps/data/routes/rpc.d.ts +31 -31
  59. package/dist/apps/data/routes/tokens.d.ts +2 -2
  60. package/dist/apps/data/routes/tokens.js +1 -1
  61. package/dist/apps/data/routes/transactions.d.ts +4 -4
  62. package/dist/apps/data/routes/transfers.d.ts +99 -88
  63. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  64. package/dist/apps/data/routes/transfers.js +226 -141
  65. package/dist/apps/data/routes/transfers.js.map +1 -1
  66. package/dist/apps/data/routes/valuation.d.ts +34 -34
  67. package/dist/apps/data/routes/valuation.js +3 -3
  68. package/dist/apps/data/routes/valuation.js.map +1 -1
  69. package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
  70. package/dist/apps/data/routes/webhooks.d.ts +366 -366
  71. package/dist/apps/index.d.ts +1 -0
  72. package/dist/apps/index.d.ts.map +1 -1
  73. package/dist/apps/index.js +1 -0
  74. package/dist/apps/index.js.map +1 -1
  75. package/dist/apps/management/App.d.ts +460 -523
  76. package/dist/apps/management/App.d.ts.map +1 -1
  77. package/dist/apps/management/routes/api-keys.d.ts +7 -23
  78. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  79. package/dist/apps/management/routes/api-keys.js +20 -8
  80. package/dist/apps/management/routes/api-keys.js.map +1 -1
  81. package/dist/apps/management/routes/billing.d.ts +106 -151
  82. package/dist/apps/management/routes/billing.d.ts.map +1 -1
  83. package/dist/apps/management/routes/billing.js +28 -28
  84. package/dist/apps/management/routes/billing.js.map +1 -1
  85. package/dist/apps/management/routes/faucet.d.ts +40 -26
  86. package/dist/apps/management/routes/faucet.d.ts.map +1 -1
  87. package/dist/apps/management/routes/faucet.js +33 -18
  88. package/dist/apps/management/routes/faucet.js.map +1 -1
  89. package/dist/apps/management/routes/invitations.d.ts +131 -131
  90. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  91. package/dist/apps/management/routes/invitations.js +0 -3
  92. package/dist/apps/management/routes/invitations.js.map +1 -1
  93. package/dist/apps/management/routes/me.d.ts +6 -8
  94. package/dist/apps/management/routes/me.d.ts.map +1 -1
  95. package/dist/apps/management/routes/me.js +0 -4
  96. package/dist/apps/management/routes/me.js.map +1 -1
  97. package/dist/apps/management/routes/members.d.ts +45 -45
  98. package/dist/apps/management/routes/orgs.d.ts +94 -94
  99. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  100. package/dist/apps/management/routes/orgs.js +5 -0
  101. package/dist/apps/management/routes/orgs.js.map +1 -1
  102. package/dist/apps/management/routes/usage.d.ts +32 -32
  103. package/dist/apps/management/routes/verified-token-requests.d.ts +94 -94
  104. package/dist/apps/management/routes/webhooks.d.ts +1 -1
  105. package/dist/apps/mpp/App.d.ts +363 -0
  106. package/dist/apps/mpp/App.d.ts.map +1 -0
  107. package/dist/apps/mpp/App.js +72 -0
  108. package/dist/apps/mpp/App.js.map +1 -0
  109. package/dist/apps/mpp/Mpp.d.ts +178 -0
  110. package/dist/apps/mpp/Mpp.d.ts.map +1 -0
  111. package/dist/apps/mpp/Mpp.js +183 -0
  112. package/dist/apps/mpp/Mpp.js.map +1 -0
  113. package/dist/apps/mpp/index.d.ts +3 -0
  114. package/dist/apps/mpp/index.d.ts.map +1 -0
  115. package/dist/apps/mpp/index.js +3 -0
  116. package/dist/apps/mpp/index.js.map +1 -0
  117. package/dist/apps/relay/App.d.ts.map +1 -1
  118. package/dist/apps/relay/App.js +56 -9
  119. package/dist/apps/relay/App.js.map +1 -1
  120. package/dist/db/Db.d.ts +2 -0
  121. package/dist/db/Db.d.ts.map +1 -1
  122. package/dist/db/Db.js +27 -0
  123. package/dist/db/Db.js.map +1 -1
  124. package/dist/db/Schema.d.ts +12 -0
  125. package/dist/db/Schema.d.ts.map +1 -1
  126. package/dist/db/Schema.js +11 -0
  127. package/dist/db/Schema.js.map +1 -1
  128. package/dist/db/tables/enabledBillingSources.d.ts +73 -0
  129. package/dist/db/tables/enabledBillingSources.d.ts.map +1 -0
  130. package/dist/db/tables/enabledBillingSources.js +69 -0
  131. package/dist/db/tables/enabledBillingSources.js.map +1 -0
  132. package/dist/db/tables/invitations.d.ts +1 -12
  133. package/dist/db/tables/invitations.d.ts.map +1 -1
  134. package/dist/db/tables/invitations.js +3 -23
  135. package/dist/db/tables/invitations.js.map +1 -1
  136. package/dist/db/tables/organizations.d.ts +5 -2
  137. package/dist/db/tables/organizations.d.ts.map +1 -1
  138. package/dist/db/tables/organizations.js +13 -2
  139. package/dist/db/tables/organizations.js.map +1 -1
  140. package/dist/handlers/internal/utils.d.ts +1 -16
  141. package/dist/handlers/internal/utils.d.ts.map +1 -1
  142. package/dist/handlers/internal/utils.js +17 -6
  143. package/dist/handlers/internal/utils.js.map +1 -1
  144. package/dist/handlers/relay.d.ts.map +1 -1
  145. package/dist/handlers/relay.js +37 -5
  146. package/dist/handlers/relay.js.map +1 -1
  147. package/dist/internal/Auth.d.ts +0 -32
  148. package/dist/internal/Auth.d.ts.map +1 -1
  149. package/dist/internal/Auth.js +3 -51
  150. package/dist/internal/Auth.js.map +1 -1
  151. package/dist/internal/FundingQuotes.d.ts +78 -32
  152. package/dist/internal/FundingQuotes.d.ts.map +1 -1
  153. package/dist/internal/FundingQuotes.js +45 -8
  154. package/dist/internal/FundingQuotes.js.map +1 -1
  155. package/dist/internal/Log.d.ts +18 -4
  156. package/dist/internal/Log.d.ts.map +1 -1
  157. package/dist/internal/Log.js +50 -3
  158. package/dist/internal/Log.js.map +1 -1
  159. package/dist/internal/MetricSink.d.ts.map +1 -1
  160. package/dist/internal/MetricSink.js +15 -0
  161. package/dist/internal/MetricSink.js.map +1 -1
  162. package/dist/internal/Response.d.ts +2 -2
  163. package/dist/internal/Response.d.ts.map +1 -1
  164. package/dist/internal/Response.js +12 -4
  165. package/dist/internal/Response.js.map +1 -1
  166. package/dist/internal/Viem.d.ts +1 -1
  167. package/package.json +7 -2
  168. package/src/App.test.ts +9 -4
  169. package/src/App.ts +14 -2
  170. package/src/Client.test-d.ts +109 -28
  171. package/src/Scope.ts +5 -0
  172. package/src/admin/App.test.ts +4 -0
  173. package/src/admin/apps/early-access.ts +6 -5
  174. package/src/admin/apps/organizations.test.ts +86 -2
  175. package/src/admin/apps/organizations.ts +155 -31
  176. package/src/admin/apps/scopes.test.ts +5 -0
  177. package/src/admin/ui/src/lib/organizations.test.ts +81 -1
  178. package/src/admin/ui/src/lib/organizations.ts +92 -0
  179. package/src/admin/ui/src/routes/api-keys.tsx +1 -1
  180. package/src/admin/ui/src/routes/early-access.tsx +8 -3
  181. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +103 -0
  182. package/src/admin/ui.generated.ts +95 -109
  183. package/src/analytics/Analytics.test.ts +83 -0
  184. package/src/analytics/Analytics.ts +20 -0
  185. package/src/analytics/tables/requestEvents.ts +60 -7
  186. package/src/apps/composition.test.ts +11 -2
  187. package/src/apps/data/App.test.ts +1 -1
  188. package/src/apps/data/FundingQuoteProviders.test.ts +0 -5
  189. package/src/apps/data/FundingQuoteProviders.ts +2 -29
  190. package/src/apps/data/FxOracle.test.ts +2 -2
  191. package/src/apps/data/FxOracle.ts +2 -2
  192. package/src/apps/data/routes/activities.test.ts +6 -2
  193. package/src/apps/data/routes/activities.ts +39 -1
  194. package/src/apps/data/routes/balances.test.ts +6 -2
  195. package/src/apps/data/routes/exchanges.test.ts +7 -3
  196. package/src/apps/data/routes/fee-amm.test.ts +47 -23
  197. package/src/apps/data/routes/fee-amm.ts +98 -119
  198. package/src/apps/data/routes/funding.test.ts +29 -8
  199. package/src/apps/data/routes/funding.ts +42 -48
  200. package/src/apps/data/routes/receipts.test.ts +6 -2
  201. package/src/apps/data/routes/tokens.ts +1 -1
  202. package/src/apps/data/routes/transfers.test.ts +203 -35
  203. package/src/apps/data/routes/transfers.ts +294 -172
  204. package/src/apps/data/routes/valuation.test.ts +18 -3
  205. package/src/apps/data/routes/valuation.ts +4 -4
  206. package/src/apps/index.ts +1 -0
  207. package/src/apps/management/routes/api-keys.test.ts +2 -75
  208. package/src/apps/management/routes/api-keys.ts +30 -7
  209. package/src/apps/management/routes/billing.test.ts +106 -85
  210. package/src/apps/management/routes/billing.ts +32 -21
  211. package/src/apps/management/routes/faucet.test.ts +11 -3
  212. package/src/apps/management/routes/faucet.ts +46 -30
  213. package/src/apps/management/routes/invitations.test.ts +0 -172
  214. package/src/apps/management/routes/invitations.ts +0 -3
  215. package/src/apps/management/routes/me.test.ts +3 -145
  216. package/src/apps/management/routes/me.ts +0 -6
  217. package/src/apps/management/routes/orgs.test.ts +45 -2
  218. package/src/apps/management/routes/orgs.ts +6 -0
  219. package/src/apps/management/routes/scopes.test.ts +1 -0
  220. package/src/apps/mpp/App.ts +86 -0
  221. package/src/apps/mpp/Mpp.test.ts +193 -0
  222. package/src/apps/mpp/Mpp.ts +353 -0
  223. package/src/apps/mpp/index.ts +2 -0
  224. package/src/apps/mpp/internal/Adapter.ts +11 -0
  225. package/src/apps/mpp/internal/Error.ts +9 -0
  226. package/src/apps/mpp/internal/Idempotency.ts +7 -0
  227. package/src/apps/mpp/internal/Screening.ts +10 -0
  228. package/src/apps/relay/App.test.ts +88 -6
  229. package/src/apps/relay/App.ts +61 -9
  230. package/src/db/Db.test.ts +2 -2
  231. package/src/db/Db.ts +30 -0
  232. package/src/db/Schema.ts +15 -0
  233. package/src/db/tables/enabledBillingSources.test.ts +303 -0
  234. package/src/db/tables/enabledBillingSources.ts +118 -0
  235. package/src/db/tables/invitations.ts +4 -26
  236. package/src/db/tables/organizations.test.ts +103 -0
  237. package/src/db/tables/organizations.ts +18 -2
  238. package/src/handlers/internal/utils.ts +22 -6
  239. package/src/handlers/relay.errors.test.ts +153 -0
  240. package/src/handlers/relay.ts +42 -7
  241. package/src/internal/Auth.test.ts +3 -3
  242. package/src/internal/Auth.ts +3 -63
  243. package/src/internal/FundingQuotes.test.ts +18 -5
  244. package/src/internal/FundingQuotes.ts +46 -11
  245. package/src/internal/Log.test.ts +91 -0
  246. package/src/internal/Log.ts +69 -5
  247. package/src/internal/MetricSink.test.ts +55 -0
  248. package/src/internal/MetricSink.ts +14 -0
  249. package/src/internal/Response.test.ts +28 -0
  250. package/src/internal/Response.ts +12 -4
@@ -0,0 +1,363 @@
1
+ import type * as App from '../../App.js';
2
+ import * as Mpp from './Mpp.js';
3
+ /** Mounts MPP credential verification and broadcast routes. */
4
+ export declare function mpp(): import("hono/hono-base").HonoBase<App.Environment, {
5
+ "/v1/mpp/verify": {
6
+ $post: {
7
+ output: Mpp.Unavailable;
8
+ outputFormat: "json";
9
+ status: 503;
10
+ input: {
11
+ json: {
12
+ challenge: {
13
+ [x: string]: unknown;
14
+ description?: string | undefined;
15
+ expires?: string | undefined;
16
+ id: string;
17
+ intent: string;
18
+ method: string;
19
+ opaque?: string | undefined;
20
+ realm: string;
21
+ request: Record<string, unknown>;
22
+ };
23
+ payload: unknown;
24
+ };
25
+ };
26
+ } | {
27
+ output: {
28
+ error: {
29
+ code: "api_key_malformed";
30
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
31
+ message: string;
32
+ };
33
+ requestId: string;
34
+ };
35
+ outputFormat: "json";
36
+ status: 400;
37
+ input: {
38
+ json: {
39
+ challenge: {
40
+ [x: string]: unknown;
41
+ description?: string | undefined;
42
+ expires?: string | undefined;
43
+ id: string;
44
+ intent: string;
45
+ method: string;
46
+ opaque?: string | undefined;
47
+ realm: string;
48
+ request: Record<string, unknown>;
49
+ };
50
+ payload: unknown;
51
+ };
52
+ };
53
+ } | {
54
+ output: {
55
+ error: {
56
+ code: "api_key_invalid" | "api_key_missing";
57
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
58
+ message: string;
59
+ };
60
+ requestId: string;
61
+ };
62
+ outputFormat: "json";
63
+ status: 401;
64
+ input: {
65
+ json: {
66
+ challenge: {
67
+ [x: string]: unknown;
68
+ description?: string | undefined;
69
+ expires?: string | undefined;
70
+ id: string;
71
+ intent: string;
72
+ method: string;
73
+ opaque?: string | undefined;
74
+ realm: string;
75
+ request: Record<string, unknown>;
76
+ };
77
+ payload: unknown;
78
+ };
79
+ };
80
+ } | {
81
+ output: {
82
+ error: {
83
+ code: "api_key_forbidden";
84
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
85
+ message: string;
86
+ };
87
+ requestId: string;
88
+ };
89
+ outputFormat: "json";
90
+ status: 403;
91
+ input: {
92
+ json: {
93
+ challenge: {
94
+ [x: string]: unknown;
95
+ description?: string | undefined;
96
+ expires?: string | undefined;
97
+ id: string;
98
+ intent: string;
99
+ method: string;
100
+ opaque?: string | undefined;
101
+ realm: string;
102
+ request: Record<string, unknown>;
103
+ };
104
+ payload: unknown;
105
+ };
106
+ };
107
+ } | {
108
+ output: {
109
+ error: {
110
+ code: "payment_required" | "rate_limit_exceeded";
111
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
112
+ message: string;
113
+ };
114
+ requestId: string;
115
+ };
116
+ outputFormat: "json";
117
+ status: 429;
118
+ input: {
119
+ json: {
120
+ challenge: {
121
+ [x: string]: unknown;
122
+ description?: string | undefined;
123
+ expires?: string | undefined;
124
+ id: string;
125
+ intent: string;
126
+ method: string;
127
+ opaque?: string | undefined;
128
+ realm: string;
129
+ request: Record<string, unknown>;
130
+ };
131
+ payload: unknown;
132
+ };
133
+ };
134
+ } | {
135
+ output: {
136
+ error: {
137
+ code: "body_invalid";
138
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
139
+ message: string;
140
+ };
141
+ requestId: string;
142
+ };
143
+ outputFormat: "json";
144
+ status: 400;
145
+ input: {
146
+ json: {
147
+ challenge: {
148
+ [x: string]: unknown;
149
+ description?: string | undefined;
150
+ expires?: string | undefined;
151
+ id: string;
152
+ intent: string;
153
+ method: string;
154
+ opaque?: string | undefined;
155
+ realm: string;
156
+ request: Record<string, unknown>;
157
+ };
158
+ payload: unknown;
159
+ };
160
+ };
161
+ } | {
162
+ output: Mpp.VerifyResponse;
163
+ outputFormat: "json";
164
+ status: 200;
165
+ input: {
166
+ json: {
167
+ challenge: {
168
+ [x: string]: unknown;
169
+ description?: string | undefined;
170
+ expires?: string | undefined;
171
+ id: string;
172
+ intent: string;
173
+ method: string;
174
+ opaque?: string | undefined;
175
+ realm: string;
176
+ request: Record<string, unknown>;
177
+ };
178
+ payload: unknown;
179
+ };
180
+ };
181
+ };
182
+ };
183
+ } & {
184
+ "/v1/mpp/broadcast": {
185
+ $post: {
186
+ output: Mpp.Unavailable;
187
+ outputFormat: "json";
188
+ status: 503;
189
+ input: {
190
+ json: {
191
+ challenge: {
192
+ [x: string]: unknown;
193
+ description?: string | undefined;
194
+ expires?: string | undefined;
195
+ id: string;
196
+ intent: string;
197
+ method: string;
198
+ opaque?: string | undefined;
199
+ realm: string;
200
+ request: Record<string, unknown>;
201
+ };
202
+ payload: unknown;
203
+ };
204
+ };
205
+ } | {
206
+ output: {
207
+ error: {
208
+ code: "api_key_malformed";
209
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
210
+ message: string;
211
+ };
212
+ requestId: string;
213
+ };
214
+ outputFormat: "json";
215
+ status: 400;
216
+ input: {
217
+ json: {
218
+ challenge: {
219
+ [x: string]: unknown;
220
+ description?: string | undefined;
221
+ expires?: string | undefined;
222
+ id: string;
223
+ intent: string;
224
+ method: string;
225
+ opaque?: string | undefined;
226
+ realm: string;
227
+ request: Record<string, unknown>;
228
+ };
229
+ payload: unknown;
230
+ };
231
+ };
232
+ } | {
233
+ output: {
234
+ error: {
235
+ code: "api_key_invalid" | "api_key_missing";
236
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
237
+ message: string;
238
+ };
239
+ requestId: string;
240
+ };
241
+ outputFormat: "json";
242
+ status: 401;
243
+ input: {
244
+ json: {
245
+ challenge: {
246
+ [x: string]: unknown;
247
+ description?: string | undefined;
248
+ expires?: string | undefined;
249
+ id: string;
250
+ intent: string;
251
+ method: string;
252
+ opaque?: string | undefined;
253
+ realm: string;
254
+ request: Record<string, unknown>;
255
+ };
256
+ payload: unknown;
257
+ };
258
+ };
259
+ } | {
260
+ output: {
261
+ error: {
262
+ code: "api_key_forbidden";
263
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
264
+ message: string;
265
+ };
266
+ requestId: string;
267
+ };
268
+ outputFormat: "json";
269
+ status: 403;
270
+ input: {
271
+ json: {
272
+ challenge: {
273
+ [x: string]: unknown;
274
+ description?: string | undefined;
275
+ expires?: string | undefined;
276
+ id: string;
277
+ intent: string;
278
+ method: string;
279
+ opaque?: string | undefined;
280
+ realm: string;
281
+ request: Record<string, unknown>;
282
+ };
283
+ payload: unknown;
284
+ };
285
+ };
286
+ } | {
287
+ output: {
288
+ error: {
289
+ code: "payment_required" | "rate_limit_exceeded";
290
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
291
+ message: string;
292
+ };
293
+ requestId: string;
294
+ };
295
+ outputFormat: "json";
296
+ status: 429;
297
+ input: {
298
+ json: {
299
+ challenge: {
300
+ [x: string]: unknown;
301
+ description?: string | undefined;
302
+ expires?: string | undefined;
303
+ id: string;
304
+ intent: string;
305
+ method: string;
306
+ opaque?: string | undefined;
307
+ realm: string;
308
+ request: Record<string, unknown>;
309
+ };
310
+ payload: unknown;
311
+ };
312
+ };
313
+ } | {
314
+ output: {
315
+ error: {
316
+ code: "body_invalid";
317
+ details?: readonly import("../../internal/Response.js").error.Detail[] | undefined;
318
+ message: string;
319
+ };
320
+ requestId: string;
321
+ };
322
+ outputFormat: "json";
323
+ status: 400;
324
+ input: {
325
+ json: {
326
+ challenge: {
327
+ [x: string]: unknown;
328
+ description?: string | undefined;
329
+ expires?: string | undefined;
330
+ id: string;
331
+ intent: string;
332
+ method: string;
333
+ opaque?: string | undefined;
334
+ realm: string;
335
+ request: Record<string, unknown>;
336
+ };
337
+ payload: unknown;
338
+ };
339
+ };
340
+ } | {
341
+ output: Mpp.BroadcastResponse;
342
+ outputFormat: "json";
343
+ status: 200;
344
+ input: {
345
+ json: {
346
+ challenge: {
347
+ [x: string]: unknown;
348
+ description?: string | undefined;
349
+ expires?: string | undefined;
350
+ id: string;
351
+ intent: string;
352
+ method: string;
353
+ opaque?: string | undefined;
354
+ realm: string;
355
+ request: Record<string, unknown>;
356
+ };
357
+ payload: unknown;
358
+ };
359
+ };
360
+ };
361
+ };
362
+ }, "/", "/v1/mpp/broadcast">;
363
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../src/apps/mpp/App.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAA;AAIxC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B,+DAA+D;AAC/D,wBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAyClB"}
@@ -0,0 +1,72 @@
1
+ import { Hono } from 'hono';
2
+ import * as Auth from '../../internal/Auth.js';
3
+ import * as OpenApi from '../../internal/OpenApi.js';
4
+ import * as Metadata from '../metadata.js';
5
+ import * as Mpp from './Mpp.js';
6
+ /** Mounts MPP credential verification and broadcast routes. */
7
+ export function mpp() {
8
+ const app = new Hono()
9
+ .post('/v1/mpp/verify', Auth.policy({ apiKey: { scopes: ['mpp:write'] }, mpp: false, public: false }), OpenApi.validate('json', Mpp.schema.RelayInput, bodyValidation), OpenApi.describeRoute({
10
+ operationId: 'verifyMppCredential',
11
+ responses: responses({
12
+ description: 'The MPP credential validation result.',
13
+ schema: Mpp.schema.VerifyResponse,
14
+ }),
15
+ summary: 'Verify MPP credential',
16
+ tags: ['MPP Relay'],
17
+ }), (c) => {
18
+ if (Auth.narrowAccess)
19
+ return Auth.accessError(c);
20
+ if (OpenApi.narrowValidation)
21
+ return OpenApi.validationError(c, bodyValidation);
22
+ return Mpp.unavailable(c);
23
+ })
24
+ .post('/v1/mpp/broadcast', Auth.policy({ apiKey: { scopes: ['mpp:write'] }, mpp: false, public: false }), OpenApi.validate('json', Mpp.schema.RelayInput, bodyValidation), OpenApi.describeRoute({
25
+ operationId: 'broadcastMppCredential',
26
+ responses: responses({
27
+ description: 'The MPP credential broadcast result.',
28
+ schema: Mpp.schema.BroadcastResponse,
29
+ }),
30
+ summary: 'Broadcast MPP credential',
31
+ tags: ['MPP Relay'],
32
+ }), (c) => {
33
+ if (Auth.narrowAccess)
34
+ return Auth.accessError(c);
35
+ if (OpenApi.narrowValidation)
36
+ return OpenApi.validationError(c, bodyValidation);
37
+ return Mpp.unavailable(c);
38
+ });
39
+ return Metadata.attach(app, openapi);
40
+ }
41
+ const bodyValidation = {
42
+ code: 'body_invalid',
43
+ message: 'Check the MPP credential and challenge, then try again.',
44
+ };
45
+ function responses(options) {
46
+ return {
47
+ ...OpenApi.responses({
48
+ errors: { 403: 'The API key does not grant MPP relay access.' },
49
+ success: options,
50
+ }),
51
+ 503: {
52
+ content: { 'application/json': { schema: OpenApi.resolver(Mpp.schema.Unavailable) } },
53
+ description: 'MPP relay settlement is temporarily unavailable.',
54
+ headers: {
55
+ 'Retry-After': {
56
+ description: 'How many seconds to wait before retrying the relay.',
57
+ schema: { type: 'integer' },
58
+ },
59
+ },
60
+ },
61
+ };
62
+ }
63
+ const openapi = {
64
+ tags: [
65
+ {
66
+ name: 'MPP Relay',
67
+ description: 'Validate and broadcast MPP payment credentials through Tempo.',
68
+ },
69
+ ],
70
+ 'x-tagGroups': [{ name: 'Payments', tags: ['MPP Relay'] }],
71
+ };
72
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/apps/mpp/App.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,178 @@
1
+ import type { Context, TypedResponse } from 'hono';
2
+ import * as z from 'zod/mini';
3
+ import type * as App from '../../App.js';
4
+ /** Stable MPP relay failure codes. */
5
+ export declare const relayErrorCode: {
6
+ /** Credential or transaction already used. */
7
+ readonly alreadyUsed: 'already_used';
8
+ /** Transaction broadcast or confirmation failed. */
9
+ readonly broadcastFailed: 'broadcast_failed';
10
+ /** Challenge or payment authorization expired. */
11
+ readonly expired: 'expired';
12
+ /** Payload, signature, parties, or payment requirements are invalid. */
13
+ readonly invalidPayment: 'invalid_payment';
14
+ /** Sender lacks funds. */
15
+ readonly insufficientFunds: 'insufficient_funds';
16
+ /** Payment violates relay or account policy. */
17
+ readonly policyDenied: 'policy_denied';
18
+ /** Originator or recipient failed screening. */
19
+ readonly screenRejected: 'screen_rejected';
20
+ /** Transaction simulation failed before broadcast. */
21
+ readonly simulationFailed: 'simulation_failed';
22
+ /** Retry may succeed. */
23
+ readonly temporarilyUnavailable: 'temporarily_unavailable';
24
+ /** Method, intent, network, or asset is unsupported. */
25
+ readonly unsupported: 'unsupported';
26
+ /** Unexpected relay failure. */
27
+ readonly unknown: 'unknown';
28
+ };
29
+ /** Stable MPP relay failure code. */
30
+ export type RelayErrorCode = (typeof relayErrorCode)[keyof typeof relayErrorCode];
31
+ /** MPP relay error response. */
32
+ export type RelayError = {
33
+ /** Stable machine-readable reason the relay rejected the credential. */
34
+ code: RelayErrorCode;
35
+ /** Human-readable explanation of the relay result. */
36
+ message?: string | undefined;
37
+ };
38
+ /** MPP challenge accepted with a relay credential payload. */
39
+ export type Challenge = {
40
+ /** Additional MPP challenge metadata, preserved verbatim for validation. */
41
+ [key: string]: unknown;
42
+ /** Human-readable payment description. */
43
+ description?: string | undefined;
44
+ /** When the payment challenge expires, as an ISO-8601 timestamp. */
45
+ expires?: string | undefined;
46
+ /** Payment challenge identifier. */
47
+ id: string;
48
+ /** MPP payment intent. */
49
+ intent: string;
50
+ /** MPP payment method. */
51
+ method: string;
52
+ /** Opaque data bound to the challenge by its issuer. */
53
+ opaque?: string | undefined;
54
+ /** MPP realm that issued the challenge. */
55
+ realm: string;
56
+ /** Payment request bound to the challenge. */
57
+ request: Record<string, unknown>;
58
+ };
59
+ /** MPP challenge and credential payload accepted by the relay. */
60
+ export type RelayInput = {
61
+ /** Payment challenge supplied with the credential. */
62
+ challenge: Challenge;
63
+ /** Method-specific MPP credential payload. */
64
+ payload: unknown;
65
+ };
66
+ /** Broadcast MPP payment receipt. */
67
+ export type Receipt = {
68
+ /** Optional caller-provided payment reference. */
69
+ externalId?: string | undefined;
70
+ /** Payment method that settled the credential. */
71
+ method: string;
72
+ /** On-chain or payment-system settlement reference. */
73
+ reference: string;
74
+ /** When the payment settled, as an ISO-8601 timestamp. */
75
+ timestamp: string;
76
+ };
77
+ /** MPP credential validation response. */
78
+ export type VerifyResponse = {
79
+ success: true;
80
+ } | {
81
+ error: RelayError;
82
+ success: false;
83
+ };
84
+ /** MPP credential broadcast response. */
85
+ export type BroadcastResponse = {
86
+ receipt: Receipt;
87
+ success: true;
88
+ } | {
89
+ error: RelayError;
90
+ success: false;
91
+ };
92
+ /** Retryable response returned while relay settlement is disabled. */
93
+ export type Unavailable = {
94
+ error: {
95
+ code: 'temporarily_unavailable';
96
+ message: 'MPP relay is not enabled yet.';
97
+ };
98
+ success: false;
99
+ };
100
+ /** MPP relay schemas. */
101
+ export declare namespace schema {
102
+ /** Stable MPP relay failure codes. */
103
+ const ErrorCode: z.ZodMiniUnion<readonly [z.ZodMiniLiteral<"unsupported">, z.ZodMiniLiteral<"policy_denied">, z.ZodMiniLiteral<"invalid_payment">, z.ZodMiniLiteral<"insufficient_funds">, z.ZodMiniLiteral<"expired">, z.ZodMiniLiteral<"already_used">, z.ZodMiniLiteral<"screen_rejected">, z.ZodMiniLiteral<"simulation_failed">, z.ZodMiniLiteral<"broadcast_failed">, z.ZodMiniLiteral<"temporarily_unavailable">, z.ZodMiniLiteral<"unknown">]>;
104
+ /** Error returned by the MPP relay. */
105
+ const RelayError: z.ZodMiniObject<{
106
+ code: z.ZodMiniUnion<readonly [z.ZodMiniLiteral<"unsupported">, z.ZodMiniLiteral<"policy_denied">, z.ZodMiniLiteral<"invalid_payment">, z.ZodMiniLiteral<"insufficient_funds">, z.ZodMiniLiteral<"expired">, z.ZodMiniLiteral<"already_used">, z.ZodMiniLiteral<"screen_rejected">, z.ZodMiniLiteral<"simulation_failed">, z.ZodMiniLiteral<"broadcast_failed">, z.ZodMiniLiteral<"temporarily_unavailable">, z.ZodMiniLiteral<"unknown">]>;
107
+ message: z.ZodMiniOptional<z.ZodMiniString<string>>;
108
+ }, z.core.$strip>;
109
+ /** MPP challenge accepted with a relay credential payload. */
110
+ const Challenge: z.ZodMiniObject<{
111
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
112
+ expires: z.ZodMiniOptional<z.ZodMiniString<string>>;
113
+ id: z.ZodMiniString<string>;
114
+ intent: z.ZodMiniString<string>;
115
+ method: z.ZodMiniString<string>;
116
+ opaque: z.ZodMiniOptional<z.ZodMiniString<string>>;
117
+ realm: z.ZodMiniString<string>;
118
+ request: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>;
119
+ }, z.core.$loose>;
120
+ /** Request accepted by MPP relay verification and broadcast routes. */
121
+ const RelayInput: z.ZodMiniObject<{
122
+ challenge: z.ZodMiniObject<{
123
+ description: z.ZodMiniOptional<z.ZodMiniString<string>>;
124
+ expires: z.ZodMiniOptional<z.ZodMiniString<string>>;
125
+ id: z.ZodMiniString<string>;
126
+ intent: z.ZodMiniString<string>;
127
+ method: z.ZodMiniString<string>;
128
+ opaque: z.ZodMiniOptional<z.ZodMiniString<string>>;
129
+ realm: z.ZodMiniString<string>;
130
+ request: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>;
131
+ }, z.core.$loose>;
132
+ payload: z.ZodMiniCustom<unknown, unknown>;
133
+ }, z.core.$strip>;
134
+ /** Receipt returned after the relay broadcasts a payment. */
135
+ const Receipt: z.ZodMiniObject<{
136
+ externalId: z.ZodMiniOptional<z.ZodMiniString<string>>;
137
+ method: z.ZodMiniString<string>;
138
+ reference: z.ZodMiniString<string>;
139
+ timestamp: z.ZodMiniString<string>;
140
+ }, z.core.$strip>;
141
+ /** Read-only MPP credential validation result. */
142
+ const VerifyResponse: z.ZodMiniUnion<readonly [z.ZodMiniObject<{
143
+ success: z.ZodMiniLiteral<true>;
144
+ }, z.core.$strip>, z.ZodMiniObject<{
145
+ error: z.ZodMiniObject<{
146
+ code: z.ZodMiniUnion<readonly [z.ZodMiniLiteral<"unsupported">, z.ZodMiniLiteral<"policy_denied">, z.ZodMiniLiteral<"invalid_payment">, z.ZodMiniLiteral<"insufficient_funds">, z.ZodMiniLiteral<"expired">, z.ZodMiniLiteral<"already_used">, z.ZodMiniLiteral<"screen_rejected">, z.ZodMiniLiteral<"simulation_failed">, z.ZodMiniLiteral<"broadcast_failed">, z.ZodMiniLiteral<"temporarily_unavailable">, z.ZodMiniLiteral<"unknown">]>;
147
+ message: z.ZodMiniOptional<z.ZodMiniString<string>>;
148
+ }, z.core.$strip>;
149
+ success: z.ZodMiniLiteral<false>;
150
+ }, z.core.$strip>]>;
151
+ /** MPP credential broadcast result. */
152
+ const BroadcastResponse: z.ZodMiniUnion<readonly [z.ZodMiniObject<{
153
+ receipt: z.ZodMiniObject<{
154
+ externalId: z.ZodMiniOptional<z.ZodMiniString<string>>;
155
+ method: z.ZodMiniString<string>;
156
+ reference: z.ZodMiniString<string>;
157
+ timestamp: z.ZodMiniString<string>;
158
+ }, z.core.$strip>;
159
+ success: z.ZodMiniLiteral<true>;
160
+ }, z.core.$strip>, z.ZodMiniObject<{
161
+ error: z.ZodMiniObject<{
162
+ code: z.ZodMiniUnion<readonly [z.ZodMiniLiteral<"unsupported">, z.ZodMiniLiteral<"policy_denied">, z.ZodMiniLiteral<"invalid_payment">, z.ZodMiniLiteral<"insufficient_funds">, z.ZodMiniLiteral<"expired">, z.ZodMiniLiteral<"already_used">, z.ZodMiniLiteral<"screen_rejected">, z.ZodMiniLiteral<"simulation_failed">, z.ZodMiniLiteral<"broadcast_failed">, z.ZodMiniLiteral<"temporarily_unavailable">, z.ZodMiniLiteral<"unknown">]>;
163
+ message: z.ZodMiniOptional<z.ZodMiniString<string>>;
164
+ }, z.core.$strip>;
165
+ success: z.ZodMiniLiteral<false>;
166
+ }, z.core.$strip>]>;
167
+ /** Temporary response returned while MPP relay settlement is disabled. */
168
+ const Unavailable: z.ZodMiniObject<{
169
+ error: z.ZodMiniObject<{
170
+ code: z.ZodMiniLiteral<"temporarily_unavailable">;
171
+ message: z.ZodMiniLiteral<"MPP relay is not enabled yet.">;
172
+ }, z.core.$strip>;
173
+ success: z.ZodMiniLiteral<false>;
174
+ }, z.core.$strip>;
175
+ }
176
+ /** Returns the relay-disabled response while retaining its published success contract. */
177
+ export declare function unavailable<success>(c: Context<App.Environment>): TypedResponse<success, 200> | TypedResponse<Unavailable, 503>;
178
+ //# sourceMappingURL=Mpp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mpp.d.ts","sourceRoot":"","sources":["../../../src/apps/mpp/Mpp.ts"],"names":[],"mappings":"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"}