@tixprotocol/tdp-sdk 0.4.0 → 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.
package/dist/index.js CHANGED
@@ -1,51 +1,71 @@
1
1
  import {
2
- AcceptClaimOffersRequestBodySchema,
3
- AcceptClaimOffersResponseSchema,
4
2
  ApiKeyHeadersSchema,
3
+ CreateAndSubmitOrderRequestBodySchema,
4
+ CreateAndSubmitOrderResponseSchema,
5
5
  EventPathParametersSchema,
6
6
  GetAddressResponseSchema,
7
- GetPurchaseStatusResponseSchema,
7
+ GetOrderResponseSchema,
8
8
  IdempotencyKeyAndApiKeyHeadersSchema,
9
- MAX_PERMITS_PER_CLAIM_WALLET,
10
9
  NoPathParametersSchema,
10
+ OrderPathParametersSchema,
11
11
  PostIntegratorMetadataRequestBodySchema,
12
12
  PostTixIndexerIntegratorMetadataResultSchema,
13
13
  SignTenantTransactionRequestBodySchema,
14
14
  SignTransactionResponseSchema,
15
15
  SubmitTenantTransactionRequestBodySchema,
16
16
  SubmitTenantTransactionResponseSchema,
17
- TicketPathParametersSchema,
17
+ TransactionPathParametersSchema,
18
18
  WalletPathParametersSchema,
19
19
  defineClientRoute,
20
- requireUniquePermitKeys,
21
20
  solanaDataApiClientRoutes,
22
21
  tixIndexerReadApiClientRoutes
23
- } from "./chunk-DKU7DEI5.js";
22
+ } from "./chunk-MZKCWS5T.js";
24
23
  import {
25
24
  TdpApiError,
26
25
  TdpResponseValidationError
27
26
  } from "./chunk-7IWD2KHF.js";
28
27
 
28
+ // src/utils/usdc-cents.ts
29
+ var USDC_DECIMALS = 6;
30
+ var USDC_MINOR_PER_CENT = 10n ** BigInt(USDC_DECIMALS - 2);
31
+ function usdcMinorToCents(usdcMinor) {
32
+ return (usdcMinor + USDC_MINOR_PER_CENT / 2n) / USDC_MINOR_PER_CENT;
33
+ }
34
+ function centsToUsdcMinor(cents) {
35
+ return cents * USDC_MINOR_PER_CENT;
36
+ }
37
+ function convertWireUsdcMinorToCents(usdcMinor) {
38
+ return Number(usdcMinorToCents(BigInt(usdcMinor)));
39
+ }
40
+
29
41
  // src/solana-data-api/create-solana-client.ts
30
42
  function createSolanaClient(tixApi) {
31
43
  return {
32
- getEvent(pathParams, options) {
33
- return tixApi(
44
+ async getEvent(pathParams, options) {
45
+ const { min_royalty_floor, ...event } = await tixApi(
34
46
  {
35
47
  route: "get-event-account",
36
48
  pathParams
37
49
  },
38
50
  options
39
51
  );
52
+ return {
53
+ ...event,
54
+ min_royalty_floor_cents: convertWireUsdcMinorToCents(min_royalty_floor)
55
+ };
40
56
  },
41
- getListing(pathParams, options) {
42
- return tixApi(
57
+ async getListing(pathParams, options) {
58
+ const { ask_price_minor, ...listing } = await tixApi(
43
59
  {
44
60
  route: "get-listing-account",
45
61
  pathParams
46
62
  },
47
63
  options
48
64
  );
65
+ return {
66
+ ...listing,
67
+ ask_price_cents: convertWireUsdcMinorToCents(ask_price_minor)
68
+ };
49
69
  },
50
70
  getPermit(pathParams, options) {
51
71
  return tixApi(
@@ -56,22 +76,47 @@ function createSolanaClient(tixApi) {
56
76
  options
57
77
  );
58
78
  },
59
- getProtocolConfig(options) {
60
- return tixApi(
79
+ async getProtocolConfig(options) {
80
+ const {
81
+ event_registration_fee_minor,
82
+ permit_fee_minor,
83
+ p2p_transfer_fee_minor,
84
+ ...protocolConfig
85
+ } = await tixApi(
61
86
  {
62
87
  route: "get-protocol-config-account"
63
88
  },
64
89
  options
65
90
  );
91
+ return {
92
+ ...protocolConfig,
93
+ event_registration_fee_cents: convertWireUsdcMinorToCents(
94
+ event_registration_fee_minor
95
+ ),
96
+ permit_fee_cents: convertWireUsdcMinorToCents(permit_fee_minor),
97
+ p2p_transfer_fee_cents: convertWireUsdcMinorToCents(
98
+ p2p_transfer_fee_minor
99
+ )
100
+ };
66
101
  },
67
- getIntegrator(pathParams, options) {
68
- return tixApi(
102
+ async getIntegrator(pathParams, options) {
103
+ const { integrator, ...account } = await tixApi(
69
104
  {
70
105
  route: "get-integrator-account",
71
106
  pathParams
72
107
  },
73
108
  options
74
109
  );
110
+ const { balance, ...registration } = integrator;
111
+ return {
112
+ ...account,
113
+ integrator: {
114
+ ...registration,
115
+ balance: {
116
+ amount_cents: convertWireUsdcMinorToCents(balance.amount_minor)
117
+ }
118
+ }
119
+ };
75
120
  }
76
121
  };
77
122
  }
@@ -122,7 +167,10 @@ async function readResponsePayload(response) {
122
167
  }
123
168
 
124
169
  // src/routes/execute-client-route.ts
125
- var ErrorBodyCodeSchema = z.object({ code: z.string() });
170
+ var ErrorResponseBodySchema = z.looseObject({
171
+ message: z.string(),
172
+ code: z.string()
173
+ });
126
174
  async function executeClientRoute({
127
175
  baseApiUrl,
128
176
  fetchImpl,
@@ -164,7 +212,7 @@ async function executeClientRoute({
164
212
  throw createError({
165
213
  kind: "http-status",
166
214
  ...failure,
167
- code: ErrorBodyCodeSchema.safeParse(payload).data?.code
215
+ code: ErrorResponseBodySchema.pick({ code: true }).safeParse(payload).data?.code
168
216
  });
169
217
  }
170
218
  const parsed = route.responseBodySchema.safeParse(payload);
@@ -180,7 +228,6 @@ async function executeClientRoute({
180
228
 
181
229
  // src/tix-api/create-tix-api-client.ts
182
230
  var SOLANA_DATA_API_PATH_PREFIX = "solana";
183
- var TIX_INDEXER_API_PATH_PREFIX = "tix-indexer";
184
231
  function createTixApiClientForRoutes({
185
232
  routes,
186
233
  baseApiUrl,
@@ -195,9 +242,9 @@ function createTixApiClientForRoutes({
195
242
  queryParams,
196
243
  body
197
244
  }, { signal } = {}) {
198
- const prefix = route in solanaDataApiClientRoutes ? SOLANA_DATA_API_PATH_PREFIX : TIX_INDEXER_API_PATH_PREFIX;
245
+ const prefix = route in solanaDataApiClientRoutes ? `/${SOLANA_DATA_API_PATH_PREFIX}` : "";
199
246
  return executeClientRoute({
200
- baseApiUrl: `${baseApiUrl}/${prefix}`,
247
+ baseApiUrl: `${baseApiUrl}${prefix}`,
201
248
  fetchImpl,
202
249
  headers,
203
250
  signal,
@@ -235,17 +282,48 @@ function createTixApiClient({
235
282
  });
236
283
  }
237
284
 
285
+ // src/tix-indexer-api/create-events-client.ts
286
+ function createEventsClient(tixApi) {
287
+ return {
288
+ list(queryParams = {}, options) {
289
+ return tixApi(
290
+ {
291
+ route: "get-events",
292
+ queryParams
293
+ },
294
+ options
295
+ );
296
+ },
297
+ get(pathParams, options) {
298
+ return tixApi(
299
+ {
300
+ route: "get-event",
301
+ pathParams
302
+ },
303
+ options
304
+ );
305
+ }
306
+ };
307
+ }
308
+
238
309
  // src/tix-indexer-api/create-indexer-client.ts
239
310
  function createIndexerClient(tixApi) {
240
311
  return {
241
- listActiveListings(queryParams, options) {
242
- return tixApi(
312
+ async listActiveListings(queryParams, options) {
313
+ const { items, next_cursor } = await tixApi(
243
314
  {
244
315
  route: "get-active-listings",
245
316
  queryParams
246
317
  },
247
318
  options
248
319
  );
320
+ return {
321
+ items: items.map(({ ask_price_minor, ...listing }) => ({
322
+ ...listing,
323
+ ask_price_cents: ask_price_minor === null ? null : convertWireUsdcMinorToCents(ask_price_minor)
324
+ })),
325
+ next_cursor
326
+ };
249
327
  },
250
328
  listUpcomingEvents(queryParams = {}, options) {
251
329
  return tixApi(
@@ -272,14 +350,29 @@ function createIndexerClient(tixApi) {
272
350
  };
273
351
  }
274
352
 
353
+ // src/tix-indexer-api/create-integrator-client.ts
354
+ function createIntegratorClient(tixApi) {
355
+ return {
356
+ getInfo(options) {
357
+ return tixApi(
358
+ {
359
+ route: "get-integrator"
360
+ },
361
+ options
362
+ );
363
+ }
364
+ };
365
+ }
366
+
275
367
  // ../tdp-schemas/src/wallet-custody/api-key-route-keys.ts
276
368
  var GET_USER_ADDRESS_ROUTE_KEY = "GET /wallets/users/{subject}/address";
277
369
  var GET_INTEGRATOR_ADDRESS_ROUTE_KEY = "GET /wallets/integrators/{subject}/address";
278
370
  var SIGN_USER_TRANSACTION_ROUTE_KEY = "POST /wallets/users/{subject}/signatures";
279
371
  var SIGN_INTEGRATOR_TRANSACTION_ROUTE_KEY = "POST /wallets/integrators/{subject}/signatures";
280
372
  var SUBMIT_TENANT_TRANSACTION_ROUTE_KEY = "POST /transactions/submissions";
281
- var ACCEPT_CLAIM_OFFERS_ROUTE_KEY = "POST /claim_wallets";
282
- var GET_PURCHASE_STATUS_ROUTE_KEY = "GET /claim_wallets/purchase-status";
373
+ var GET_TRANSACTION_ROUTE_KEY = "GET /transactions/{id}";
374
+ var CREATE_AND_SUBMIT_ORDER_ROUTE_KEY = "POST /orders";
375
+ var GET_ORDER_ROUTE_KEY = "GET /orders/{id}";
283
376
  var GET_FEE_PAYER_ADDRESS_ROUTE_KEY = "GET /wallets/fee-payer/address";
284
377
  var GET_PROTOCOL_AUTHORITY_ADDRESS_ROUTE_KEY = "GET /wallets/protocol-authority/address";
285
378
 
@@ -333,24 +426,33 @@ var apiKeyWalletCustodyApiClientRoutes = {
333
426
  requestBodySchema: SubmitTenantTransactionRequestBodySchema,
334
427
  responseBodySchema: SubmitTenantTransactionResponseSchema
335
428
  }),
336
- "get-purchase-status": defineClientRoute({
337
- name: "get-purchase-status",
429
+ "get-transaction": defineClientRoute({
430
+ name: "get-transaction",
338
431
  method: "GET",
339
- routeKey: GET_PURCHASE_STATUS_ROUTE_KEY,
340
- pathParamsSchema: NoPathParametersSchema,
341
- buildPath: ({ baseApiUrl = "" }) => `${baseApiUrl}/claim_wallets/purchase-status`,
342
- headersSchema: IdempotencyKeyAndApiKeyHeadersSchema,
343
- responseBodySchema: GetPurchaseStatusResponseSchema
432
+ routeKey: GET_TRANSACTION_ROUTE_KEY,
433
+ pathParamsSchema: TransactionPathParametersSchema,
434
+ buildPath: ({ baseApiUrl = "", id }) => `${baseApiUrl}/transactions/${id}`,
435
+ headersSchema: ApiKeyHeadersSchema,
436
+ responseBodySchema: SubmitTenantTransactionResponseSchema
344
437
  }),
345
- "accept-claim-offers": defineClientRoute({
346
- name: "accept-claim-offers",
438
+ "get-order": defineClientRoute({
439
+ name: "get-order",
440
+ method: "GET",
441
+ routeKey: GET_ORDER_ROUTE_KEY,
442
+ pathParamsSchema: OrderPathParametersSchema,
443
+ buildPath: ({ baseApiUrl = "", id }) => `${baseApiUrl}/orders/${encodeURIComponent(id)}`,
444
+ headersSchema: ApiKeyHeadersSchema,
445
+ responseBodySchema: GetOrderResponseSchema
446
+ }),
447
+ "create-and-submit-order": defineClientRoute({
448
+ name: "create-and-submit-order",
347
449
  method: "POST",
348
- routeKey: ACCEPT_CLAIM_OFFERS_ROUTE_KEY,
450
+ routeKey: CREATE_AND_SUBMIT_ORDER_ROUTE_KEY,
349
451
  pathParamsSchema: NoPathParametersSchema,
350
- buildPath: ({ baseApiUrl = "" }) => `${baseApiUrl}/claim_wallets`,
452
+ buildPath: ({ baseApiUrl = "" }) => `${baseApiUrl}/orders`,
351
453
  headersSchema: IdempotencyKeyAndApiKeyHeadersSchema,
352
- requestBodySchema: AcceptClaimOffersRequestBodySchema,
353
- responseBodySchema: AcceptClaimOffersResponseSchema
454
+ requestBodySchema: CreateAndSubmitOrderRequestBodySchema,
455
+ responseBodySchema: CreateAndSubmitOrderResponseSchema
354
456
  }),
355
457
  "get-fee-payer-address": defineClientRoute({
356
458
  name: "get-fee-payer-address",
@@ -410,64 +512,21 @@ function createWalletCustodyApiClient({
410
512
  };
411
513
  }
412
514
 
413
- // src/wallet-custody/create-claim-wallets-client.ts
414
- import { z as z2 } from "zod";
415
-
416
- // src/wallet-custody/resolve-claim-offer.ts
417
- async function resolveClaimOffer(solana, ticket, protocol, eventResponse, options) {
418
- const [listing, event, permit] = await Promise.all([
419
- solana.getListing(ticket, options),
420
- eventResponse,
421
- solana.getPermit(ticket, options)
422
- ]);
423
- return {
424
- event_id: listing.event_id,
425
- ticket_id: listing.ticket_id,
426
- permit_version: listing.permit_version,
427
- seller_payout: listing.payout_ata,
428
- royalty_destinations: event.royalty_recipients_count > 0 ? event.royalty_recipients.slice(0, event.royalty_recipients_count).map(({ destination }) => destination) : [protocol.default_royalty_vault],
429
- ticket_type_config: permit.ticket_type_config,
430
- usdc_mint: protocol.usdc_mint
431
- };
432
- }
433
-
434
- // src/wallet-custody/create-claim-wallets-client.ts
435
- var AcceptOffersBodySchema = AcceptClaimOffersRequestBodySchema.extend({
436
- offers: z2.array(TicketPathParametersSchema).min(1).max(MAX_PERMITS_PER_CLAIM_WALLET).superRefine(requireUniquePermitKeys)
437
- });
438
- function createClaimWalletsClient(walletCustodyApi, solana) {
515
+ // src/wallet-custody/create-orders-client.ts
516
+ function createOrdersClient(walletCustodyApi) {
439
517
  return {
440
- getPurchaseStatus({
441
- idempotencyKey
442
- }, options) {
443
- return walletCustodyApi(
444
- { route: "get-purchase-status", idempotencyKey },
445
- options
446
- );
447
- },
448
- async acceptOffers({
518
+ /** Creates the order and submits its purchase in the same call. */
519
+ createAndSubmit({
449
520
  idempotencyKey,
450
521
  body
451
522
  }, options) {
452
- const parsedBody = AcceptOffersBodySchema.parse(body);
453
- const protocol = await solana.getProtocolConfig(options);
454
- const events = /* @__PURE__ */ new Map();
455
- const offers = await Promise.all(
456
- parsedBody.offers.map((ticket) => {
457
- const eventId = String(ticket.eventId);
458
- const event = events.get(eventId) ?? solana.getEvent({ eventId }, options);
459
- events.set(eventId, event);
460
- return resolveClaimOffer(solana, ticket, protocol, event, options);
461
- })
462
- );
463
523
  return walletCustodyApi(
464
- {
465
- route: "accept-claim-offers",
466
- body: { ...parsedBody, offers },
467
- idempotencyKey
468
- },
524
+ { route: "create-and-submit-order", body, idempotencyKey },
469
525
  options
470
526
  );
527
+ },
528
+ get(pathParams, options) {
529
+ return walletCustodyApi({ route: "get-order", pathParams }, options);
471
530
  }
472
531
  };
473
532
  }
@@ -558,10 +617,13 @@ function createTdpClient(options) {
558
617
  const solana = createSolanaClient(tixApi);
559
618
  return {
560
619
  solana,
620
+ events: createEventsClient(tixApi),
561
621
  indexer: createIndexerClient(tixApi),
622
+ integrator: createIntegratorClient(tixApi),
562
623
  wallets: createWalletClient(walletCustodyApi),
563
624
  transactions: createTransactionsClient(walletCustodyApi),
564
- claimWallets: createClaimWalletsClient(walletCustodyApi, solana)
625
+ orders: createOrdersClient(walletCustodyApi),
626
+ utils: { usdcMinorToCents, centsToUsdcMinor }
565
627
  };
566
628
  }
567
629
  export {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/solana-data-api/create-solana-client.ts","../../tdp-schemas/src/tix-indexer-api/routes.ts","../src/routes/create-tdp-api-error-from-route-failure.ts","../src/routes/execute-client-route.ts","../src/utils/join-url-segments.ts","../src/utils/read-response-payload.ts","../src/tix-api/create-tix-api-client.ts","../src/tix-api/api-client.ts","../src/tix-indexer-api/create-indexer-client.ts","../../tdp-schemas/src/wallet-custody/api-key-route-keys.ts","../../tdp-schemas/src/wallet-custody/api-key-routes.ts","../src/wallet-custody/execute-wallet-custody-route.ts","../src/wallet-custody/api-client.ts","../src/wallet-custody/create-claim-wallets-client.ts","../src/wallet-custody/resolve-claim-offer.ts","../src/wallet-custody/const.ts","../src/wallet-custody/create-transactions-client.ts","../src/wallet-custody/create-wallet-client.ts","../src/index.ts"],"sourcesContent":["import type { RoutePathParams } from \"../routes/client-request-types\";\nimport type { TixApiClient, TixApiRoutes } from \"../tix-api/api-client\";\n\nexport function createSolanaClient(tixApi: TixApiClient) {\n return {\n getEvent(\n pathParams: RoutePathParams<TixApiRoutes[\"get-event-account\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"get-event-account\",\n pathParams,\n },\n options,\n );\n },\n getListing(\n pathParams: RoutePathParams<TixApiRoutes[\"get-listing-account\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"get-listing-account\",\n pathParams,\n },\n options,\n );\n },\n getPermit(\n pathParams: RoutePathParams<TixApiRoutes[\"get-permit\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"get-permit\",\n pathParams,\n },\n options,\n );\n },\n getProtocolConfig(options?: Pick<RequestInit, \"signal\">) {\n return tixApi(\n {\n route: \"get-protocol-config-account\",\n },\n options,\n );\n },\n getIntegrator(\n pathParams: RoutePathParams<TixApiRoutes[\"get-integrator-account\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"get-integrator-account\",\n pathParams,\n },\n options,\n );\n },\n };\n}\n","import type { z } from \"zod\";\nimport { defineClientRoute } from \"../routes/define-client-route\";\nimport { ApiKeyHeadersSchema } from \"../routes/request-schemas\";\nimport { EventPathParametersSchema } from \"../tix-api/path-params\";\nimport {\n PostIntegratorMetadataRequestBodySchema,\n PostTixIndexerIntegratorMetadataResultSchema,\n} from \"./metadata\";\nimport { tixIndexerReadApiClientRoutes } from \"./read-routes\";\n\nexport { PostIntegratorMetadataRequestBodySchema } from \"./metadata\";\nexport {\n ActiveListingsQuerySchema,\n GET_ACTIVE_LISTINGS_ROUTE_KEY,\n GET_UPCOMING_EVENTS_ROUTE_KEY,\n LimitCursorQuerySchema,\n} from \"./read-routes\";\nexport const POST_INTEGRATOR_METADATA_ROUTE_KEY =\n \"POST /events/{eventId}/metadata\";\n\nexport const tixIndexerApiClientRoutes = {\n ...tixIndexerReadApiClientRoutes,\n \"post-integrator-metadata\": defineClientRoute({\n name: \"post-integrator-metadata\",\n method: \"POST\" as const,\n routeKey: POST_INTEGRATOR_METADATA_ROUTE_KEY,\n pathParamsSchema: EventPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", eventId }) =>\n `${baseApiUrl}/events/${eventId}/metadata`,\n headersSchema: ApiKeyHeadersSchema,\n requestBodySchema: PostIntegratorMetadataRequestBodySchema,\n responseBodySchema: PostTixIndexerIntegratorMetadataResultSchema,\n }),\n} as const satisfies Record<string, unknown>;\n\nexport const responseBodySchemaByRouteKey = Object.fromEntries(\n Object.values(tixIndexerApiClientRoutes).map(\n (route) => [route.routeKey, route.responseBodySchema] as const,\n ),\n) as Record<string, z.ZodType<Record<string, unknown>>>;\n","import {\n TdpApiError,\n TdpResponseValidationError,\n} from \"../wallet-custody/http-error\";\nimport type { ClientRouteFailure } from \"./execute-client-route\";\n\nexport function createTdpApiErrorFromRouteFailure(failure: ClientRouteFailure) {\n return failure.kind === \"response-validation\"\n ? new TdpResponseValidationError(failure)\n : new TdpApiError(failure);\n}\n","import { z } from \"zod\";\nimport { joinUrlSegments } from \"../utils/join-url-segments\";\nimport { readResponsePayload } from \"../utils/read-response-payload\";\nimport type { AnyClientRoute } from \"./define-client-route\";\n\nexport type ClientRouteFailure = {\n kind: \"http-status\" | \"response-validation\";\n route: string;\n method: string;\n path: string;\n status: number;\n statusText: string;\n payload: unknown;\n code?: string;\n requestId?: string;\n validationError?: z.ZodError;\n};\n\nconst ErrorBodyCodeSchema = z.object({ code: z.string() });\n\n/** Builds the URL, headers, and body for a route, sends it, and parses the response through the route's schema. */\nexport async function executeClientRoute<TRoute extends AnyClientRoute>({\n baseApiUrl,\n fetchImpl,\n headers,\n signal,\n routeName,\n route,\n pathParams,\n queryParams,\n body,\n routeHeadersInput,\n createError,\n}: {\n baseApiUrl: string;\n fetchImpl: typeof fetch;\n headers?: HeadersInit;\n signal?: RequestInit[\"signal\"];\n routeName: string;\n route: TRoute;\n pathParams: unknown;\n queryParams?: unknown;\n body: unknown;\n routeHeadersInput: Record<string, string | undefined>;\n createError: (failure: ClientRouteFailure) => Error;\n}): Promise<z.output<TRoute[\"responseBodySchema\"]>> {\n // TS can't reconcile the route's output types with input types, hence the `as never` clauses.\n const path = route.buildPath(pathParams as never);\n const routeHeaders = route.buildHeaders(routeHeadersInput as never);\n const url =\n joinUrlSegments(baseApiUrl, path) +\n (queryParams === undefined\n ? \"\"\n : route.buildQueryString(queryParams as never));\n\n const requestHeaders = new Headers(headers);\n requestHeaders.set(\"content-type\", \"application/json\");\n new Headers(routeHeaders as HeadersInit).forEach((value, name) => {\n requestHeaders.set(name, value);\n });\n const response = await fetchImpl(url, {\n method: route.method,\n ...(signal === undefined ? {} : { signal }),\n headers: Object.fromEntries(requestHeaders),\n body:\n body === undefined ? undefined : route.buildJsonPayload(body as never),\n });\n const payload = await readResponsePayload(response);\n const failure = {\n route: routeName,\n method: route.method,\n path,\n status: response.status,\n statusText: response.statusText,\n payload,\n requestId: response.headers.get(\"apigw-requestid\") ?? undefined,\n };\n if (!response.ok) {\n throw createError({\n kind: \"http-status\",\n ...failure,\n code: ErrorBodyCodeSchema.safeParse(payload).data?.code,\n });\n }\n\n const parsed = route.responseBodySchema.safeParse(payload);\n if (!parsed.success) {\n throw createError({\n kind: \"response-validation\",\n ...failure,\n validationError: parsed.error,\n });\n }\n return parsed.data as z.output<TRoute[\"responseBodySchema\"]>;\n}\n","/**\n * Joins URL segments with one slash; i.e., remove repeated slashes.\n */\nexport function joinUrlSegments(baseUrl: string, path: string): string {\n return `${baseUrl.replace(/\\/+$/, \"\")}/${path.replace(/^\\/+/, \"\")}`;\n}\n","/**\n * Reads the body without letting an empty or non-JSON payload mask the HTTP status.\n **/\nexport async function readResponsePayload(\n response: Response,\n): Promise<unknown> {\n const rawBody = await response.text();\n if (rawBody.length === 0) return undefined;\n try {\n return JSON.parse(rawBody);\n } catch {\n return rawBody;\n }\n}\n","import type {\n ClientRouteMap,\n ClientRouteRequest,\n RouteQueryParams,\n RouteRequestField,\n RouteResponseBody,\n} from \"../routes/client-request-types\";\nimport { createTdpApiErrorFromRouteFailure } from \"../routes/create-tdp-api-error-from-route-failure\";\nimport { executeClientRoute } from \"../routes/execute-client-route\";\nimport { solanaDataApiClientRoutes } from \"../solana-data-api/routes\";\n\n/** Both APIs are mapped onto one domain under these keys. */\nexport const SOLANA_DATA_API_PATH_PREFIX = \"solana\";\nexport const TIX_INDEXER_API_PATH_PREFIX = \"tix-indexer\";\n\n/** The request for a route. No caller-settable `headers`: the client injects them itself. */\ntype FetchTixApiRequest<\n TRoutes extends ClientRouteMap,\n TRouteName extends keyof TRoutes,\n> = ClientRouteRequest<TRoutes, TRouteName> &\n RouteRequestField<\"queryParams\", RouteQueryParams<TRoutes[TRouteName]>>;\n\nexport function createTixApiClientForRoutes<TRoutes extends ClientRouteMap>({\n routes,\n baseApiUrl,\n apiKey,\n fetchImpl = fetch,\n headers,\n additionalHeaders,\n}: {\n routes: TRoutes;\n baseApiUrl: string;\n apiKey: string | (() => Promise<string>);\n fetchImpl?: typeof fetch;\n headers?: HeadersInit;\n additionalHeaders?: Parameters<\n typeof executeClientRoute\n >[0][\"routeHeadersInput\"];\n}) {\n return async function fetchTixApi<TRouteName extends keyof TRoutes & string>(\n {\n route,\n pathParams,\n queryParams,\n body,\n }: FetchTixApiRequest<TRoutes, TRouteName>,\n { signal }: Pick<RequestInit, \"signal\"> = {},\n ): Promise<RouteResponseBody<TRoutes[TRouteName]>> {\n const prefix =\n route in solanaDataApiClientRoutes\n ? SOLANA_DATA_API_PATH_PREFIX\n : TIX_INDEXER_API_PATH_PREFIX;\n return executeClientRoute({\n baseApiUrl: `${baseApiUrl}/${prefix}`,\n fetchImpl,\n headers,\n signal,\n routeName: route,\n route: routes[route],\n pathParams,\n queryParams,\n body,\n routeHeadersInput: {\n \"x-api-key\": typeof apiKey === \"string\" ? apiKey : await apiKey(),\n ...additionalHeaders,\n },\n createError: createTdpApiErrorFromRouteFailure,\n }) as Promise<RouteResponseBody<TRoutes[TRouteName]>>;\n };\n}\n","import { solanaDataApiClientRoutes } from \"../solana-data-api/routes\";\nimport { tixIndexerApiClientRoutes } from \"../tix-indexer-api/routes\";\nimport { createTixApiClientForRoutes } from \"./create-tix-api-client\";\n\nexport {\n SOLANA_DATA_API_PATH_PREFIX,\n TIX_INDEXER_API_PATH_PREFIX,\n} from \"./create-tix-api-client\";\n\nexport const tixApiClientRoutes = {\n ...solanaDataApiClientRoutes,\n ...tixIndexerApiClientRoutes,\n} as const;\n\nexport type TixApiRoutes = typeof tixApiClientRoutes;\nexport type TixApiClient = ReturnType<typeof createTixApiClient>;\n\nexport function createTixApiClient({\n baseApiUrl,\n apiKey,\n fetchImpl = fetch,\n headers,\n}: {\n baseApiUrl: string;\n apiKey: string | (() => Promise<string>);\n fetchImpl?: typeof fetch;\n /**\n * Additional request headers. SDK-managed headers take precedence.\n * Cross-origin browser requests require server CORS support for custom headers.\n */\n headers?: HeadersInit;\n}) {\n return createTixApiClientForRoutes({\n routes: tixApiClientRoutes,\n baseApiUrl,\n apiKey,\n fetchImpl,\n headers,\n });\n}\n","import type {\n ClientRouteRequest,\n RouteQueryParams,\n} from \"../routes/client-request-types\";\nimport type { TixApiClient, TixApiRoutes } from \"../tix-api/api-client\";\n\ntype MetadataRequest = ClientRouteRequest<\n TixApiRoutes,\n \"post-integrator-metadata\"\n>;\n/** The route schemas coerce `limit` from a query string, which leaves its input type as `unknown`. */\ntype WithNumericLimit<TQuery> = Omit<TQuery, \"limit\"> & { limit?: number };\ntype ActiveListingsQuery = WithNumericLimit<\n RouteQueryParams<TixApiRoutes[\"get-active-listings\"]>\n>;\ntype UpcomingEventsQuery = WithNumericLimit<\n RouteQueryParams<TixApiRoutes[\"get-upcoming-events\"]>\n>;\n\nexport function createIndexerClient(tixApi: TixApiClient) {\n return {\n listActiveListings(\n queryParams: ActiveListingsQuery,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"get-active-listings\",\n queryParams,\n },\n options,\n );\n },\n listUpcomingEvents(\n queryParams: UpcomingEventsQuery = {},\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"get-upcoming-events\",\n queryParams,\n },\n options,\n );\n },\n updateEventMetadata(\n {\n eventId,\n body,\n }: MetadataRequest[\"pathParams\"] & Pick<MetadataRequest, \"body\">,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"post-integrator-metadata\",\n pathParams: { eventId },\n body,\n },\n options,\n );\n },\n };\n}\n","export const GET_USER_ADDRESS_ROUTE_KEY =\n \"GET /wallets/users/{subject}/address\";\nexport const GET_INTEGRATOR_ADDRESS_ROUTE_KEY =\n \"GET /wallets/integrators/{subject}/address\";\nexport const SIGN_USER_TRANSACTION_ROUTE_KEY =\n \"POST /wallets/users/{subject}/signatures\";\nexport const SIGN_INTEGRATOR_TRANSACTION_ROUTE_KEY =\n \"POST /wallets/integrators/{subject}/signatures\";\nexport const SUBMIT_TENANT_TRANSACTION_ROUTE_KEY =\n \"POST /transactions/submissions\";\nexport const ACCEPT_CLAIM_OFFERS_ROUTE_KEY = \"POST /claim_wallets\";\nexport const GET_PURCHASE_STATUS_ROUTE_KEY =\n \"GET /claim_wallets/purchase-status\";\nexport const GET_FEE_PAYER_ADDRESS_ROUTE_KEY = \"GET /wallets/fee-payer/address\";\nexport const GET_PROTOCOL_AUTHORITY_ADDRESS_ROUTE_KEY =\n \"GET /wallets/protocol-authority/address\";\n","import { defineClientRoute } from \"../routes/define-client-route\";\nimport {\n ApiKeyHeadersSchema,\n IdempotencyKeyAndApiKeyHeadersSchema,\n NoPathParametersSchema,\n} from \"../routes/request-schemas\";\nimport {\n GetAddressResponseSchema,\n WalletPathParametersSchema,\n} from \"./addresses\";\nimport {\n ACCEPT_CLAIM_OFFERS_ROUTE_KEY,\n GET_FEE_PAYER_ADDRESS_ROUTE_KEY,\n GET_INTEGRATOR_ADDRESS_ROUTE_KEY,\n GET_PROTOCOL_AUTHORITY_ADDRESS_ROUTE_KEY,\n GET_PURCHASE_STATUS_ROUTE_KEY,\n GET_USER_ADDRESS_ROUTE_KEY,\n SIGN_INTEGRATOR_TRANSACTION_ROUTE_KEY,\n SIGN_USER_TRANSACTION_ROUTE_KEY,\n SUBMIT_TENANT_TRANSACTION_ROUTE_KEY,\n} from \"./api-key-route-keys\";\nimport {\n AcceptClaimOffersRequestBodySchema,\n AcceptClaimOffersResponseSchema,\n} from \"./claim-offers\";\nimport { GetPurchaseStatusResponseSchema } from \"./purchase-status\";\nimport { SignTransactionResponseSchema } from \"./signing-responses\";\nimport { SubmitTenantTransactionResponseSchema } from \"./submission-responses\";\nimport {\n SignTenantTransactionRequestBodySchema,\n SubmitTenantTransactionRequestBodySchema,\n} from \"./transaction-inputs\";\n\nexport const apiKeyWalletCustodyApiClientRoutes = {\n \"get-user-address\": defineClientRoute({\n name: \"get-user-address\",\n method: \"GET\",\n routeKey: GET_USER_ADDRESS_ROUTE_KEY,\n pathParamsSchema: WalletPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", subject }) =>\n `${baseApiUrl}/wallets/users/${subject}/address`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: GetAddressResponseSchema,\n }),\n \"get-integrator-address\": defineClientRoute({\n name: \"get-integrator-address\",\n method: \"GET\",\n routeKey: GET_INTEGRATOR_ADDRESS_ROUTE_KEY,\n pathParamsSchema: WalletPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", subject }) =>\n `${baseApiUrl}/wallets/integrators/${subject}/address`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: GetAddressResponseSchema,\n }),\n \"sign-user-transaction\": defineClientRoute({\n name: \"sign-user-transaction\",\n method: \"POST\",\n routeKey: SIGN_USER_TRANSACTION_ROUTE_KEY,\n pathParamsSchema: WalletPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", subject }) =>\n `${baseApiUrl}/wallets/users/${subject}/signatures`,\n headersSchema: IdempotencyKeyAndApiKeyHeadersSchema,\n requestBodySchema: SignTenantTransactionRequestBodySchema,\n responseBodySchema: SignTransactionResponseSchema,\n }),\n \"sign-integrator-transaction\": defineClientRoute({\n name: \"sign-integrator-transaction\",\n method: \"POST\",\n routeKey: SIGN_INTEGRATOR_TRANSACTION_ROUTE_KEY,\n pathParamsSchema: WalletPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", subject }) =>\n `${baseApiUrl}/wallets/integrators/${subject}/signatures`,\n headersSchema: IdempotencyKeyAndApiKeyHeadersSchema,\n requestBodySchema: SignTenantTransactionRequestBodySchema,\n responseBodySchema: SignTransactionResponseSchema,\n }),\n \"submit-tenant-transaction\": defineClientRoute({\n name: \"submit-tenant-transaction\",\n method: \"POST\",\n routeKey: SUBMIT_TENANT_TRANSACTION_ROUTE_KEY,\n pathParamsSchema: NoPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\" }) =>\n `${baseApiUrl}/transactions/submissions`,\n headersSchema: ApiKeyHeadersSchema,\n requestBodySchema: SubmitTenantTransactionRequestBodySchema,\n responseBodySchema: SubmitTenantTransactionResponseSchema,\n }),\n \"get-purchase-status\": defineClientRoute({\n name: \"get-purchase-status\",\n method: \"GET\",\n routeKey: GET_PURCHASE_STATUS_ROUTE_KEY,\n pathParamsSchema: NoPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\" }) =>\n `${baseApiUrl}/claim_wallets/purchase-status`,\n headersSchema: IdempotencyKeyAndApiKeyHeadersSchema,\n responseBodySchema: GetPurchaseStatusResponseSchema,\n }),\n \"accept-claim-offers\": defineClientRoute({\n name: \"accept-claim-offers\",\n method: \"POST\",\n routeKey: ACCEPT_CLAIM_OFFERS_ROUTE_KEY,\n pathParamsSchema: NoPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\" }) => `${baseApiUrl}/claim_wallets`,\n headersSchema: IdempotencyKeyAndApiKeyHeadersSchema,\n requestBodySchema: AcceptClaimOffersRequestBodySchema,\n responseBodySchema: AcceptClaimOffersResponseSchema,\n }),\n \"get-fee-payer-address\": defineClientRoute({\n name: \"get-fee-payer-address\",\n method: \"GET\",\n routeKey: GET_FEE_PAYER_ADDRESS_ROUTE_KEY,\n pathParamsSchema: NoPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\" }) =>\n `${baseApiUrl}/wallets/fee-payer/address`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: GetAddressResponseSchema,\n }),\n \"get-protocol-authority-address\": defineClientRoute({\n name: \"get-protocol-authority-address\",\n method: \"GET\",\n routeKey: GET_PROTOCOL_AUTHORITY_ADDRESS_ROUTE_KEY,\n pathParamsSchema: NoPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\" }) =>\n `${baseApiUrl}/wallets/protocol-authority/address`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: GetAddressResponseSchema,\n }),\n};\n","import type {\n ClientRouteMap,\n ClientRouteRequest,\n RouteRequestField,\n RouteRequestHeader,\n} from \"../routes/client-request-types\";\nimport { createTdpApiErrorFromRouteFailure } from \"../routes/create-tdp-api-error-from-route-failure\";\nimport type { AnyClientRoute } from \"../routes/define-client-route\";\nimport { executeClientRoute } from \"../routes/execute-client-route\";\n\nexport type FetchWalletCustodyApiRequest<\n TRoutes extends ClientRouteMap,\n TRouteName extends keyof TRoutes,\n> = ClientRouteRequest<TRoutes, TRouteName> &\n RouteRequestField<\n \"idempotencyKey\",\n RouteRequestHeader<TRoutes[TRouteName], \"idempotency-key\">\n >;\n\nexport function executeWalletCustodyRoute<TRoute extends AnyClientRoute>(\n request: Omit<\n Parameters<typeof executeClientRoute<TRoute>>[0],\n \"createError\"\n >,\n) {\n return executeClientRoute({\n ...request,\n createError: createTdpApiErrorFromRouteFailure,\n } satisfies Parameters<typeof executeClientRoute<TRoute>>[0]);\n}\n","import { apiKeyWalletCustodyApiClientRoutes } from \"@kyd-labs/tdp-schemas/wallet-custody/api-key-routes\";\nimport type {\n RouteNamesRequiringHeader,\n RouteResponseBody,\n} from \"../routes/client-request-types\";\nimport {\n executeWalletCustodyRoute,\n type FetchWalletCustodyApiRequest,\n} from \"./execute-wallet-custody-route\";\nimport type { walletCustodyApiClientRoutes } from \"./routes\";\n\nexport type WalletCustodyApiClient = ReturnType<\n typeof createWalletCustodyApiClient\n>;\n\n/** Client for claim routes authorized by an API key. */\nexport function createWalletCustodyApiClient({\n baseApiUrl,\n apiKey,\n fetchImpl = fetch,\n headers,\n}: {\n baseApiUrl: string;\n apiKey: string | (() => Promise<string>);\n fetchImpl?: typeof fetch;\n headers?: HeadersInit;\n}) {\n return async function fetchWalletCustodyApi<\n TRouteName extends ApiKeyWalletCustodyApiRouteName,\n >(\n {\n route,\n pathParams,\n body,\n idempotencyKey,\n }: FetchWalletCustodyApiRequest<ApiKeyWalletCustodyApiRoutes, TRouteName>,\n { signal }: Pick<RequestInit, \"signal\"> = {},\n ): Promise<RouteResponseBody<RouteForName<TRouteName>>> {\n return executeWalletCustodyRoute({\n baseApiUrl,\n fetchImpl,\n headers,\n signal,\n routeName: route,\n route: apiKeyWalletCustodyApiClientRoutes[route],\n pathParams,\n body,\n routeHeadersInput: {\n \"x-api-key\": typeof apiKey === \"string\" ? apiKey : await apiKey(),\n \"idempotency-key\": idempotencyKey,\n },\n }) as Promise<RouteResponseBody<RouteForName<TRouteName>>>;\n };\n}\n\n// -------------------------------------- Route helper types ---------------------------------------\nexport type WalletCustodyApiRoutes = typeof walletCustodyApiClientRoutes;\nexport type ApiKeyWalletCustodyApiRoutes =\n typeof apiKeyWalletCustodyApiClientRoutes;\ntype ApiKeyWalletCustodyApiRouteName = RouteNamesRequiringHeader<\n ApiKeyWalletCustodyApiRoutes,\n \"x-api-key\"\n>;\ntype RouteForName<TRouteName extends ApiKeyWalletCustodyApiRouteName> =\n ApiKeyWalletCustodyApiRoutes[TRouteName];\n","import { TicketPathParametersSchema } from \"@kyd-labs/tdp-schemas/tix-api/path-params\";\nimport { AcceptClaimOffersRequestBodySchema } from \"@kyd-labs/tdp-schemas/wallet-custody/claim-offers\";\nimport { MAX_PERMITS_PER_CLAIM_WALLET } from \"@kyd-labs/tdp-schemas/wallet-custody/const\";\nimport { requireUniquePermitKeys } from \"@kyd-labs/tix-wire-schema/instructions\";\nimport { z } from \"zod\";\nimport type {\n RouteRequestField,\n RouteRequestHeader,\n} from \"../routes/client-request-types\";\nimport type { createSolanaClient } from \"../solana-data-api/create-solana-client\";\nimport type {\n ApiKeyWalletCustodyApiRoutes,\n WalletCustodyApiClient,\n} from \"./api-client\";\nimport { resolveClaimOffer } from \"./resolve-claim-offer\";\n\ntype AcceptOffersRoute = ApiKeyWalletCustodyApiRoutes[\"accept-claim-offers\"];\n\nconst AcceptOffersBodySchema = AcceptClaimOffersRequestBodySchema.extend({\n offers: z\n .array(TicketPathParametersSchema)\n .min(1)\n .max(MAX_PERMITS_PER_CLAIM_WALLET)\n .superRefine(requireUniquePermitKeys),\n});\n\nexport function createClaimWalletsClient(\n walletCustodyApi: WalletCustodyApiClient,\n solana: ReturnType<typeof createSolanaClient>,\n) {\n return {\n getPurchaseStatus(\n {\n idempotencyKey,\n }: RouteRequestField<\n \"idempotencyKey\",\n RouteRequestHeader<\n ApiKeyWalletCustodyApiRoutes[\"get-purchase-status\"],\n \"idempotency-key\"\n >\n >,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n { route: \"get-purchase-status\", idempotencyKey },\n options,\n );\n },\n async acceptOffers(\n {\n idempotencyKey,\n body,\n }: RouteRequestField<\"body\", z.input<typeof AcceptOffersBodySchema>> &\n RouteRequestField<\n \"idempotencyKey\",\n RouteRequestHeader<AcceptOffersRoute, \"idempotency-key\">\n >,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n const parsedBody = AcceptOffersBodySchema.parse(body);\n const protocol = await solana.getProtocolConfig(options);\n const events = new Map<string, ReturnType<typeof solana.getEvent>>();\n const offers = await Promise.all(\n parsedBody.offers.map((ticket) => {\n const eventId = String(ticket.eventId);\n const event =\n events.get(eventId) ?? solana.getEvent({ eventId }, options);\n events.set(eventId, event);\n return resolveClaimOffer(solana, ticket, protocol, event, options);\n }),\n );\n return walletCustodyApi(\n {\n route: \"accept-claim-offers\",\n body: { ...parsedBody, offers },\n idempotencyKey,\n },\n options,\n );\n },\n };\n}\n","import type { createSolanaClient } from \"../solana-data-api/create-solana-client\";\n\ntype SolanaClient = ReturnType<typeof createSolanaClient>;\n\n/** Resolves a ticket selection into the existing claim-purchase offer payload. */\nexport async function resolveClaimOffer(\n solana: SolanaClient,\n ticket: Parameters<SolanaClient[\"getListing\"]>[0],\n protocol: Awaited<ReturnType<SolanaClient[\"getProtocolConfig\"]>>,\n eventResponse: ReturnType<SolanaClient[\"getEvent\"]>,\n options?: Pick<RequestInit, \"signal\">,\n) {\n const [listing, event, permit] = await Promise.all([\n solana.getListing(ticket, options),\n eventResponse,\n solana.getPermit(ticket, options),\n ]);\n return {\n event_id: listing.event_id,\n ticket_id: listing.ticket_id,\n permit_version: listing.permit_version,\n seller_payout: listing.payout_ata,\n royalty_destinations:\n event.royalty_recipients_count > 0\n ? event.royalty_recipients\n .slice(0, event.royalty_recipients_count)\n .map(({ destination }) => destination)\n : [protocol.default_royalty_vault],\n ticket_type_config: permit.ticket_type_config,\n usdc_mint: protocol.usdc_mint,\n };\n}\n","export { MAX_PERMITS_PER_CLAIM_WALLET } from \"@kyd-labs/tdp-schemas/wallet-custody/const\";\n\nexport const INTEGRATOR_PRIMARY_ADDRESS_SUBJECT = \"PRIMARY_ADDRESS\";\n","import type {\n RoutePathParams,\n RouteRequestBody,\n RouteRequestField,\n RouteRequestHeader,\n} from \"../routes/client-request-types\";\nimport type {\n ApiKeyWalletCustodyApiRoutes,\n WalletCustodyApiClient,\n} from \"./api-client\";\nimport { INTEGRATOR_PRIMARY_ADDRESS_SUBJECT } from \"./const\";\n\ntype SignTransactionInput<\n TRoute extends \"sign-user-transaction\" | \"sign-integrator-transaction\",\n> = Partial<RoutePathParams<ApiKeyWalletCustodyApiRoutes[TRoute]>> &\n RouteRequestField<\n \"body\",\n RouteRequestBody<ApiKeyWalletCustodyApiRoutes[TRoute]>\n > &\n RouteRequestField<\n \"idempotencyKey\",\n RouteRequestHeader<ApiKeyWalletCustodyApiRoutes[TRoute], \"idempotency-key\">\n >;\n\nexport function createTransactionsClient(\n walletCustodyApi: WalletCustodyApiClient,\n) {\n return {\n /** A `subject` is not necessary. */\n signIntegrator(\n {\n subject = INTEGRATOR_PRIMARY_ADDRESS_SUBJECT,\n idempotencyKey,\n body,\n }: SignTransactionInput<\"sign-integrator-transaction\">,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n {\n route: \"sign-integrator-transaction\",\n pathParams: { subject },\n body,\n idempotencyKey,\n },\n options,\n );\n },\n submit(\n {\n body,\n }: RouteRequestField<\n \"body\",\n RouteRequestBody<\n ApiKeyWalletCustodyApiRoutes[\"submit-tenant-transaction\"]\n >\n >,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n {\n route: \"submit-tenant-transaction\",\n body,\n },\n options,\n );\n },\n };\n}\n","import type { RoutePathParams } from \"../routes/client-request-types\";\nimport type {\n ApiKeyWalletCustodyApiRoutes,\n WalletCustodyApiClient,\n} from \"./api-client\";\nimport { INTEGRATOR_PRIMARY_ADDRESS_SUBJECT } from \"./const\";\n\nexport function createWalletClient(walletCustodyApi: WalletCustodyApiClient) {\n return {\n getUserAddress(\n pathParams: RoutePathParams<\n ApiKeyWalletCustodyApiRoutes[\"get-user-address\"]\n >,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n {\n route: \"get-user-address\",\n pathParams,\n },\n options,\n );\n },\n /** A `subject` is not necessary. */\n getIntegratorAddress(\n {\n subject = INTEGRATOR_PRIMARY_ADDRESS_SUBJECT,\n }: Partial<\n RoutePathParams<ApiKeyWalletCustodyApiRoutes[\"get-integrator-address\"]>\n > = {},\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n {\n route: \"get-integrator-address\",\n pathParams: { subject },\n },\n options,\n );\n },\n getFeePayerAddress(options?: Pick<RequestInit, \"signal\">) {\n return walletCustodyApi(\n {\n route: \"get-fee-payer-address\",\n },\n options,\n );\n },\n getProtocolAuthorityAddress(options?: Pick<RequestInit, \"signal\">) {\n return walletCustodyApi(\n {\n route: \"get-protocol-authority-address\",\n },\n options,\n );\n },\n };\n}\n","import { createSolanaClient } from \"./solana-data-api/create-solana-client\";\nimport { createTixApiClient } from \"./tix-api/api-client\";\nimport { createIndexerClient } from \"./tix-indexer-api/create-indexer-client\";\nimport { createWalletCustodyApiClient } from \"./wallet-custody/api-client\";\nimport { createClaimWalletsClient } from \"./wallet-custody/create-claim-wallets-client\";\nimport { createTransactionsClient } from \"./wallet-custody/create-transactions-client\";\nimport { createWalletClient } from \"./wallet-custody/create-wallet-client\";\n\nexport type * from \"./types/index\";\n\nexport type TdpClientOptions = Parameters<typeof createTixApiClient>[0];\nexport type TdpClient = ReturnType<typeof createTdpClient>;\n\nexport function createTdpClient(options: TdpClientOptions) {\n const tixApi = createTixApiClient(options);\n const walletCustodyApi = createWalletCustodyApiClient(options);\n const solana = createSolanaClient(tixApi);\n return {\n solana,\n indexer: createIndexerClient(tixApi),\n wallets: createWalletClient(walletCustodyApi),\n transactions: createTransactionsClient(walletCustodyApi),\n claimWallets: createClaimWalletsClient(walletCustodyApi, solana),\n };\n}\n"],"mappings":"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","names":["responseBodySchemaByRouteKey","z","z"]}
1
+ {"version":3,"sources":["../src/utils/usdc-cents.ts","../src/solana-data-api/create-solana-client.ts","../../tdp-schemas/src/tix-indexer-api/routes.ts","../src/routes/create-tdp-api-error-from-route-failure.ts","../src/routes/execute-client-route.ts","../src/utils/join-url-segments.ts","../src/utils/read-response-payload.ts","../src/tix-api/create-tix-api-client.ts","../src/tix-api/api-client.ts","../src/tix-indexer-api/create-events-client.ts","../src/tix-indexer-api/create-indexer-client.ts","../src/tix-indexer-api/create-integrator-client.ts","../../tdp-schemas/src/wallet-custody/api-key-route-keys.ts","../../tdp-schemas/src/wallet-custody/api-key-routes.ts","../src/wallet-custody/execute-wallet-custody-route.ts","../src/wallet-custody/api-client.ts","../src/wallet-custody/create-orders-client.ts","../src/wallet-custody/const.ts","../src/wallet-custody/create-transactions-client.ts","../src/wallet-custody/create-wallet-client.ts","../src/index.ts"],"sourcesContent":["/** The USDC mints TDP uses: mainnet for the live environment and devnet for the sandbox. */\nexport const USDC_MINT_BY_CLUSTER = {\n mainnet: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n devnet: \"Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr\",\n} as const;\n\n/**\n * Both mints have 6 decimals, and this is unlikely to change. If a mint ever becomes mutable, the SDK will\n * accommodate a non-hardcoded mint specification.\n */\nexport const USDC_DECIMALS = 6;\n\nconst USDC_MINOR_PER_CENT = 10n ** BigInt(USDC_DECIMALS - 2);\n\n/**\n * Converts an amount in USDC minor units to whole cents, rounding half up to\n * the closest cent.\n *\n * @example\n * client.utils.usdcMinorToCents(25_000_000n); // 2500n, which is $25.00\n */\nexport function usdcMinorToCents(usdcMinor: bigint): bigint {\n return (usdcMinor + USDC_MINOR_PER_CENT / 2n) / USDC_MINOR_PER_CENT;\n}\n\n/**\n * Converts an amount in whole cents to USDC minor units.\n *\n * @example\n * client.utils.centsToUsdcMinor(2_500n); // 25000000n\n */\nexport function centsToUsdcMinor(cents: bigint): bigint {\n return cents * USDC_MINOR_PER_CENT;\n}\n\n/** Converts a wire amount, a decimal string of USDC minor units, to whole cents. */\nexport function convertWireUsdcMinorToCents(usdcMinor: string): number {\n return Number(usdcMinorToCents(BigInt(usdcMinor)));\n}\n","import type { RoutePathParams } from \"../routes/client-request-types\";\nimport type { TixApiClient, TixApiRoutes } from \"../tix-api/api-client\";\nimport { convertWireUsdcMinorToCents } from \"../utils/usdc-cents\";\n\nexport function createSolanaClient(tixApi: TixApiClient) {\n return {\n async getEvent(\n pathParams: RoutePathParams<TixApiRoutes[\"get-event-account\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n const { min_royalty_floor, ...event } = await tixApi(\n {\n route: \"get-event-account\",\n pathParams,\n },\n options,\n );\n return {\n ...event,\n min_royalty_floor_cents: convertWireUsdcMinorToCents(min_royalty_floor),\n };\n },\n async getListing(\n pathParams: RoutePathParams<TixApiRoutes[\"get-listing-account\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n const { ask_price_minor, ...listing } = await tixApi(\n {\n route: \"get-listing-account\",\n pathParams,\n },\n options,\n );\n return {\n ...listing,\n ask_price_cents: convertWireUsdcMinorToCents(ask_price_minor),\n };\n },\n getPermit(\n pathParams: RoutePathParams<TixApiRoutes[\"get-permit\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"get-permit\",\n pathParams,\n },\n options,\n );\n },\n async getProtocolConfig(options?: Pick<RequestInit, \"signal\">) {\n const {\n event_registration_fee_minor,\n permit_fee_minor,\n p2p_transfer_fee_minor,\n ...protocolConfig\n } = await tixApi(\n {\n route: \"get-protocol-config-account\",\n },\n options,\n );\n return {\n ...protocolConfig,\n event_registration_fee_cents: convertWireUsdcMinorToCents(\n event_registration_fee_minor,\n ),\n permit_fee_cents: convertWireUsdcMinorToCents(permit_fee_minor),\n p2p_transfer_fee_cents: convertWireUsdcMinorToCents(\n p2p_transfer_fee_minor,\n ),\n };\n },\n async getIntegrator(\n pathParams: RoutePathParams<TixApiRoutes[\"get-integrator-account\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n const { integrator, ...account } = await tixApi(\n {\n route: \"get-integrator-account\",\n pathParams,\n },\n options,\n );\n const { balance, ...registration } = integrator;\n return {\n ...account,\n integrator: {\n ...registration,\n balance: {\n amount_cents: convertWireUsdcMinorToCents(balance.amount_minor),\n },\n },\n };\n },\n };\n}\n","import type { z } from \"zod\";\nimport { defineClientRoute } from \"../routes/define-client-route\";\nimport { ApiKeyHeadersSchema } from \"../routes/request-schemas\";\nimport { EventPathParametersSchema } from \"../tix-api/path-params\";\nimport {\n PostIntegratorMetadataRequestBodySchema,\n PostTixIndexerIntegratorMetadataResultSchema,\n} from \"./metadata\";\nimport { tixIndexerReadApiClientRoutes } from \"./read-routes\";\n\nexport { PostIntegratorMetadataRequestBodySchema } from \"./metadata\";\nexport {\n ActiveListingsQuerySchema,\n GET_ACTIVE_LISTINGS_ROUTE_KEY,\n GET_EVENT_ROUTE_KEY,\n GET_EVENTS_ROUTE_KEY,\n GET_INTEGRATOR_ROUTE_KEY,\n GET_UPCOMING_EVENTS_ROUTE_KEY,\n LimitCursorQuerySchema,\n} from \"./read-routes\";\nexport const POST_INTEGRATOR_METADATA_ROUTE_KEY =\n \"POST /events/{eventId}/metadata\";\n\nexport const tixIndexerApiClientRoutes = {\n ...tixIndexerReadApiClientRoutes,\n \"post-integrator-metadata\": defineClientRoute({\n name: \"post-integrator-metadata\",\n method: \"POST\" as const,\n routeKey: POST_INTEGRATOR_METADATA_ROUTE_KEY,\n pathParamsSchema: EventPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", eventId }) =>\n `${baseApiUrl}/events/${eventId}/metadata`,\n headersSchema: ApiKeyHeadersSchema,\n requestBodySchema: PostIntegratorMetadataRequestBodySchema,\n responseBodySchema: PostTixIndexerIntegratorMetadataResultSchema,\n }),\n} as const satisfies Record<string, unknown>;\n\nexport const responseBodySchemaByRouteKey = Object.fromEntries(\n Object.values(tixIndexerApiClientRoutes).map(\n (route) => [route.routeKey, route.responseBodySchema] as const,\n ),\n) as Record<string, z.ZodType<Record<string, unknown>>>;\n","import {\n TdpApiError,\n TdpResponseValidationError,\n} from \"../wallet-custody/http-error\";\nimport type { ClientRouteFailure } from \"./execute-client-route\";\n\nexport function createTdpApiErrorFromRouteFailure(failure: ClientRouteFailure) {\n return failure.kind === \"response-validation\"\n ? new TdpResponseValidationError(failure)\n : new TdpApiError(failure);\n}\n","import { z } from \"zod\";\nimport { joinUrlSegments } from \"../utils/join-url-segments\";\nimport { readResponsePayload } from \"../utils/read-response-payload\";\nimport type { AnyClientRoute } from \"./define-client-route\";\n\nexport type ClientRouteFailure = {\n kind: \"http-status\" | \"response-validation\";\n route: string;\n method: string;\n path: string;\n status: number;\n statusText: string;\n payload: unknown;\n code?: string;\n requestId?: string;\n validationError?: z.ZodError;\n};\n\n/** The JSON body that a TDP API returns for a handled error. */\nexport const ErrorResponseBodySchema = z.looseObject({\n message: z.string(),\n code: z.string(),\n});\n\n/** Builds the URL, headers, and body for a route, sends it, and parses the response through the route's schema. */\nexport async function executeClientRoute<TRoute extends AnyClientRoute>({\n baseApiUrl,\n fetchImpl,\n headers,\n signal,\n routeName,\n route,\n pathParams,\n queryParams,\n body,\n routeHeadersInput,\n createError,\n}: {\n baseApiUrl: string;\n fetchImpl: typeof fetch;\n headers?: HeadersInit;\n signal?: RequestInit[\"signal\"];\n routeName: string;\n route: TRoute;\n pathParams: unknown;\n queryParams?: unknown;\n body: unknown;\n routeHeadersInput: Record<string, string | undefined>;\n createError: (failure: ClientRouteFailure) => Error;\n}): Promise<z.output<TRoute[\"responseBodySchema\"]>> {\n // TS can't reconcile the route's output types with input types, hence the `as never` clauses.\n const path = route.buildPath(pathParams as never);\n const routeHeaders = route.buildHeaders(routeHeadersInput as never);\n const url =\n joinUrlSegments(baseApiUrl, path) +\n (queryParams === undefined\n ? \"\"\n : route.buildQueryString(queryParams as never));\n\n const requestHeaders = new Headers(headers);\n requestHeaders.set(\"content-type\", \"application/json\");\n new Headers(routeHeaders as HeadersInit).forEach((value, name) => {\n requestHeaders.set(name, value);\n });\n const response = await fetchImpl(url, {\n method: route.method,\n ...(signal === undefined ? {} : { signal }),\n headers: Object.fromEntries(requestHeaders),\n body:\n body === undefined ? undefined : route.buildJsonPayload(body as never),\n });\n const payload = await readResponsePayload(response);\n const failure = {\n route: routeName,\n method: route.method,\n path,\n status: response.status,\n statusText: response.statusText,\n payload,\n requestId: response.headers.get(\"apigw-requestid\") ?? undefined,\n };\n if (!response.ok) {\n throw createError({\n kind: \"http-status\",\n ...failure,\n code: ErrorResponseBodySchema.pick({ code: true }).safeParse(payload).data\n ?.code,\n });\n }\n\n const parsed = route.responseBodySchema.safeParse(payload);\n if (!parsed.success) {\n throw createError({\n kind: \"response-validation\",\n ...failure,\n validationError: parsed.error,\n });\n }\n return parsed.data as z.output<TRoute[\"responseBodySchema\"]>;\n}\n","/**\n * Joins URL segments with one slash; i.e., remove repeated slashes.\n */\nexport function joinUrlSegments(baseUrl: string, path: string): string {\n return `${baseUrl.replace(/\\/+$/, \"\")}/${path.replace(/^\\/+/, \"\")}`;\n}\n","/**\n * Reads the body without letting an empty or non-JSON payload mask the HTTP status.\n **/\nexport async function readResponsePayload(\n response: Response,\n): Promise<unknown> {\n const rawBody = await response.text();\n if (rawBody.length === 0) return undefined;\n try {\n return JSON.parse(rawBody);\n } catch {\n return rawBody;\n }\n}\n","import type {\n ClientRouteMap,\n ClientRouteRequest,\n RouteQueryParams,\n RouteRequestField,\n RouteResponseBody,\n} from \"../routes/client-request-types\";\nimport { createTdpApiErrorFromRouteFailure } from \"../routes/create-tdp-api-error-from-route-failure\";\nimport { executeClientRoute } from \"../routes/execute-client-route\";\nimport { solanaDataApiClientRoutes } from \"../solana-data-api/routes\";\n\n/** The solana-data-api is mapped onto the public domain under this key. */\nexport const SOLANA_DATA_API_PATH_PREFIX = \"solana\";\n\n/** The request for a route. No caller-settable `headers`: the client injects them itself. */\ntype FetchTixApiRequest<\n TRoutes extends ClientRouteMap,\n TRouteName extends keyof TRoutes,\n> = ClientRouteRequest<TRoutes, TRouteName> &\n RouteRequestField<\"queryParams\", RouteQueryParams<TRoutes[TRouteName]>>;\n\nexport function createTixApiClientForRoutes<TRoutes extends ClientRouteMap>({\n routes,\n baseApiUrl,\n apiKey,\n fetchImpl = fetch,\n headers,\n additionalHeaders,\n}: {\n routes: TRoutes;\n baseApiUrl: string;\n apiKey: string | (() => Promise<string>);\n fetchImpl?: typeof fetch;\n headers?: HeadersInit;\n additionalHeaders?: Parameters<\n typeof executeClientRoute\n >[0][\"routeHeadersInput\"];\n}) {\n return async function fetchTixApi<TRouteName extends keyof TRoutes & string>(\n {\n route,\n pathParams,\n queryParams,\n body,\n }: FetchTixApiRequest<TRoutes, TRouteName>,\n { signal }: Pick<RequestInit, \"signal\"> = {},\n ): Promise<RouteResponseBody<TRoutes[TRouteName]>> {\n const prefix =\n route in solanaDataApiClientRoutes\n ? `/${SOLANA_DATA_API_PATH_PREFIX}`\n : \"\";\n return executeClientRoute({\n baseApiUrl: `${baseApiUrl}${prefix}`,\n fetchImpl,\n headers,\n signal,\n routeName: route,\n route: routes[route],\n pathParams,\n queryParams,\n body,\n routeHeadersInput: {\n \"x-api-key\": typeof apiKey === \"string\" ? apiKey : await apiKey(),\n ...additionalHeaders,\n },\n createError: createTdpApiErrorFromRouteFailure,\n }) as Promise<RouteResponseBody<TRoutes[TRouteName]>>;\n };\n}\n","import { solanaDataApiClientRoutes } from \"../solana-data-api/routes\";\nimport { tixIndexerApiClientRoutes } from \"../tix-indexer-api/routes\";\nimport { createTixApiClientForRoutes } from \"./create-tix-api-client\";\n\nexport { SOLANA_DATA_API_PATH_PREFIX } from \"./create-tix-api-client\";\n\nexport const tixApiClientRoutes = {\n ...solanaDataApiClientRoutes,\n ...tixIndexerApiClientRoutes,\n} as const;\n\nexport type TixApiRoutes = typeof tixApiClientRoutes;\nexport type TixApiClient = ReturnType<typeof createTixApiClient>;\n\nexport function createTixApiClient({\n baseApiUrl,\n apiKey,\n fetchImpl = fetch,\n headers,\n}: {\n baseApiUrl: string;\n apiKey: string | (() => Promise<string>);\n fetchImpl?: typeof fetch;\n /**\n * Additional request headers. SDK-managed headers take precedence.\n * Cross-origin browser requests require server CORS support for custom headers.\n */\n headers?: HeadersInit;\n}) {\n return createTixApiClientForRoutes({\n routes: tixApiClientRoutes,\n baseApiUrl,\n apiKey,\n fetchImpl,\n headers,\n });\n}\n","import type {\n RoutePathParams,\n RouteQueryParams,\n} from \"../routes/client-request-types\";\nimport type { TixApiClient, TixApiRoutes } from \"../tix-api/api-client\";\n\n/** The route schema coerces `limit` from a query string, which leaves its input type as `unknown`. */\ntype EventsQuery = Omit<\n RouteQueryParams<TixApiRoutes[\"get-events\"]>,\n \"limit\"\n> & {\n limit?: number;\n};\n\nexport function createEventsClient(tixApi: TixApiClient) {\n return {\n list(queryParams: EventsQuery = {}, options?: Pick<RequestInit, \"signal\">) {\n return tixApi(\n {\n route: \"get-events\",\n queryParams,\n },\n options,\n );\n },\n get(\n pathParams: RoutePathParams<TixApiRoutes[\"get-event\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"get-event\",\n pathParams,\n },\n options,\n );\n },\n };\n}\n","import type {\n ClientRouteRequest,\n RouteQueryParams,\n} from \"../routes/client-request-types\";\nimport type { TixApiClient, TixApiRoutes } from \"../tix-api/api-client\";\nimport { convertWireUsdcMinorToCents } from \"../utils/usdc-cents\";\n\ntype MetadataRequest = ClientRouteRequest<\n TixApiRoutes,\n \"post-integrator-metadata\"\n>;\n/** The route schemas coerce `limit` from a query string, which leaves its input type as `unknown`. */\ntype WithNumericLimit<TQuery> = Omit<TQuery, \"limit\"> & { limit?: number };\ntype ActiveListingsQuery = WithNumericLimit<\n RouteQueryParams<TixApiRoutes[\"get-active-listings\"]>\n>;\ntype UpcomingEventsQuery = WithNumericLimit<\n RouteQueryParams<TixApiRoutes[\"get-upcoming-events\"]>\n>;\n\nexport function createIndexerClient(tixApi: TixApiClient) {\n return {\n async listActiveListings(\n queryParams: ActiveListingsQuery,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n const { items, next_cursor } = await tixApi(\n {\n route: \"get-active-listings\",\n queryParams,\n },\n options,\n );\n return {\n items: items.map(({ ask_price_minor, ...listing }) => ({\n ...listing,\n ask_price_cents:\n ask_price_minor === null\n ? null\n : convertWireUsdcMinorToCents(ask_price_minor),\n })),\n next_cursor,\n };\n },\n listUpcomingEvents(\n queryParams: UpcomingEventsQuery = {},\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"get-upcoming-events\",\n queryParams,\n },\n options,\n );\n },\n updateEventMetadata(\n {\n eventId,\n body,\n }: MetadataRequest[\"pathParams\"] & Pick<MetadataRequest, \"body\">,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return tixApi(\n {\n route: \"post-integrator-metadata\",\n pathParams: { eventId },\n body,\n },\n options,\n );\n },\n };\n}\n","import type { TixApiClient } from \"../tix-api/api-client\";\n\nexport function createIntegratorClient(tixApi: TixApiClient) {\n return {\n getInfo(options?: Pick<RequestInit, \"signal\">) {\n return tixApi(\n {\n route: \"get-integrator\",\n },\n options,\n );\n },\n };\n}\n","export const GET_USER_ADDRESS_ROUTE_KEY =\n \"GET /wallets/users/{subject}/address\";\nexport const GET_INTEGRATOR_ADDRESS_ROUTE_KEY =\n \"GET /wallets/integrators/{subject}/address\";\nexport const SIGN_USER_TRANSACTION_ROUTE_KEY =\n \"POST /wallets/users/{subject}/signatures\";\nexport const SIGN_INTEGRATOR_TRANSACTION_ROUTE_KEY =\n \"POST /wallets/integrators/{subject}/signatures\";\nexport const SUBMIT_TENANT_TRANSACTION_ROUTE_KEY =\n \"POST /transactions/submissions\";\nexport const GET_TRANSACTION_ROUTE_KEY = \"GET /transactions/{id}\";\nexport const CREATE_AND_SUBMIT_ORDER_ROUTE_KEY = \"POST /orders\";\nexport const GET_ORDER_ROUTE_KEY = \"GET /orders/{id}\";\nexport const GET_FEE_PAYER_ADDRESS_ROUTE_KEY = \"GET /wallets/fee-payer/address\";\nexport const GET_PROTOCOL_AUTHORITY_ADDRESS_ROUTE_KEY =\n \"GET /wallets/protocol-authority/address\";\n","import { defineClientRoute } from \"../routes/define-client-route\";\nimport {\n ApiKeyHeadersSchema,\n IdempotencyKeyAndApiKeyHeadersSchema,\n NoPathParametersSchema,\n} from \"../routes/request-schemas\";\nimport {\n GetAddressResponseSchema,\n WalletPathParametersSchema,\n} from \"./addresses\";\nimport {\n CREATE_AND_SUBMIT_ORDER_ROUTE_KEY,\n GET_FEE_PAYER_ADDRESS_ROUTE_KEY,\n GET_INTEGRATOR_ADDRESS_ROUTE_KEY,\n GET_ORDER_ROUTE_KEY,\n GET_PROTOCOL_AUTHORITY_ADDRESS_ROUTE_KEY,\n GET_TRANSACTION_ROUTE_KEY,\n GET_USER_ADDRESS_ROUTE_KEY,\n SIGN_INTEGRATOR_TRANSACTION_ROUTE_KEY,\n SIGN_USER_TRANSACTION_ROUTE_KEY,\n SUBMIT_TENANT_TRANSACTION_ROUTE_KEY,\n} from \"./api-key-route-keys\";\nimport {\n CreateAndSubmitOrderRequestBodySchema,\n CreateAndSubmitOrderResponseSchema,\n GetOrderResponseSchema,\n OrderPathParametersSchema,\n} from \"./orders\";\nimport { SignTransactionResponseSchema } from \"./signing-responses\";\nimport {\n SubmitTenantTransactionResponseSchema,\n TransactionPathParametersSchema,\n} from \"./submission-responses\";\nimport {\n SignTenantTransactionRequestBodySchema,\n SubmitTenantTransactionRequestBodySchema,\n} from \"./transaction-inputs\";\n\nexport const apiKeyWalletCustodyApiClientRoutes = {\n \"get-user-address\": defineClientRoute({\n name: \"get-user-address\",\n method: \"GET\",\n routeKey: GET_USER_ADDRESS_ROUTE_KEY,\n pathParamsSchema: WalletPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", subject }) =>\n `${baseApiUrl}/wallets/users/${subject}/address`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: GetAddressResponseSchema,\n }),\n \"get-integrator-address\": defineClientRoute({\n name: \"get-integrator-address\",\n method: \"GET\",\n routeKey: GET_INTEGRATOR_ADDRESS_ROUTE_KEY,\n pathParamsSchema: WalletPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", subject }) =>\n `${baseApiUrl}/wallets/integrators/${subject}/address`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: GetAddressResponseSchema,\n }),\n \"sign-user-transaction\": defineClientRoute({\n name: \"sign-user-transaction\",\n method: \"POST\",\n routeKey: SIGN_USER_TRANSACTION_ROUTE_KEY,\n pathParamsSchema: WalletPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", subject }) =>\n `${baseApiUrl}/wallets/users/${subject}/signatures`,\n headersSchema: IdempotencyKeyAndApiKeyHeadersSchema,\n requestBodySchema: SignTenantTransactionRequestBodySchema,\n responseBodySchema: SignTransactionResponseSchema,\n }),\n \"sign-integrator-transaction\": defineClientRoute({\n name: \"sign-integrator-transaction\",\n method: \"POST\",\n routeKey: SIGN_INTEGRATOR_TRANSACTION_ROUTE_KEY,\n pathParamsSchema: WalletPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", subject }) =>\n `${baseApiUrl}/wallets/integrators/${subject}/signatures`,\n headersSchema: IdempotencyKeyAndApiKeyHeadersSchema,\n requestBodySchema: SignTenantTransactionRequestBodySchema,\n responseBodySchema: SignTransactionResponseSchema,\n }),\n \"submit-tenant-transaction\": defineClientRoute({\n name: \"submit-tenant-transaction\",\n method: \"POST\",\n routeKey: SUBMIT_TENANT_TRANSACTION_ROUTE_KEY,\n pathParamsSchema: NoPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\" }) =>\n `${baseApiUrl}/transactions/submissions`,\n headersSchema: ApiKeyHeadersSchema,\n requestBodySchema: SubmitTenantTransactionRequestBodySchema,\n responseBodySchema: SubmitTenantTransactionResponseSchema,\n }),\n \"get-transaction\": defineClientRoute({\n name: \"get-transaction\",\n method: \"GET\",\n routeKey: GET_TRANSACTION_ROUTE_KEY,\n pathParamsSchema: TransactionPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", id }) => `${baseApiUrl}/transactions/${id}`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: SubmitTenantTransactionResponseSchema,\n }),\n \"get-order\": defineClientRoute({\n name: \"get-order\",\n method: \"GET\",\n routeKey: GET_ORDER_ROUTE_KEY,\n pathParamsSchema: OrderPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\", id }) =>\n `${baseApiUrl}/orders/${encodeURIComponent(id)}`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: GetOrderResponseSchema,\n }),\n \"create-and-submit-order\": defineClientRoute({\n name: \"create-and-submit-order\",\n method: \"POST\",\n routeKey: CREATE_AND_SUBMIT_ORDER_ROUTE_KEY,\n pathParamsSchema: NoPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\" }) => `${baseApiUrl}/orders`,\n headersSchema: IdempotencyKeyAndApiKeyHeadersSchema,\n requestBodySchema: CreateAndSubmitOrderRequestBodySchema,\n responseBodySchema: CreateAndSubmitOrderResponseSchema,\n }),\n \"get-fee-payer-address\": defineClientRoute({\n name: \"get-fee-payer-address\",\n method: \"GET\",\n routeKey: GET_FEE_PAYER_ADDRESS_ROUTE_KEY,\n pathParamsSchema: NoPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\" }) =>\n `${baseApiUrl}/wallets/fee-payer/address`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: GetAddressResponseSchema,\n }),\n \"get-protocol-authority-address\": defineClientRoute({\n name: \"get-protocol-authority-address\",\n method: \"GET\",\n routeKey: GET_PROTOCOL_AUTHORITY_ADDRESS_ROUTE_KEY,\n pathParamsSchema: NoPathParametersSchema,\n buildPath: ({ baseApiUrl = \"\" }) =>\n `${baseApiUrl}/wallets/protocol-authority/address`,\n headersSchema: ApiKeyHeadersSchema,\n responseBodySchema: GetAddressResponseSchema,\n }),\n};\n","import type {\n ClientRouteMap,\n ClientRouteRequest,\n RouteRequestField,\n RouteRequestHeader,\n} from \"../routes/client-request-types\";\nimport { createTdpApiErrorFromRouteFailure } from \"../routes/create-tdp-api-error-from-route-failure\";\nimport type { AnyClientRoute } from \"../routes/define-client-route\";\nimport { executeClientRoute } from \"../routes/execute-client-route\";\n\nexport type FetchWalletCustodyApiRequest<\n TRoutes extends ClientRouteMap,\n TRouteName extends keyof TRoutes,\n> = ClientRouteRequest<TRoutes, TRouteName> &\n RouteRequestField<\n \"idempotencyKey\",\n RouteRequestHeader<TRoutes[TRouteName], \"idempotency-key\">\n >;\n\nexport function executeWalletCustodyRoute<TRoute extends AnyClientRoute>(\n request: Omit<\n Parameters<typeof executeClientRoute<TRoute>>[0],\n \"createError\"\n >,\n) {\n return executeClientRoute({\n ...request,\n createError: createTdpApiErrorFromRouteFailure,\n } satisfies Parameters<typeof executeClientRoute<TRoute>>[0]);\n}\n","import { apiKeyWalletCustodyApiClientRoutes } from \"@kyd-labs/tdp-schemas/wallet-custody/api-key-routes\";\nimport type {\n RouteNamesRequiringHeader,\n RouteResponseBody,\n} from \"../routes/client-request-types\";\nimport {\n executeWalletCustodyRoute,\n type FetchWalletCustodyApiRequest,\n} from \"./execute-wallet-custody-route\";\nimport type { walletCustodyApiClientRoutes } from \"./routes\";\n\nexport type WalletCustodyApiClient = ReturnType<\n typeof createWalletCustodyApiClient\n>;\n\n/** Client for claim routes authorized by an API key. */\nexport function createWalletCustodyApiClient({\n baseApiUrl,\n apiKey,\n fetchImpl = fetch,\n headers,\n}: {\n baseApiUrl: string;\n apiKey: string | (() => Promise<string>);\n fetchImpl?: typeof fetch;\n headers?: HeadersInit;\n}) {\n return async function fetchWalletCustodyApi<\n TRouteName extends ApiKeyWalletCustodyApiRouteName,\n >(\n {\n route,\n pathParams,\n body,\n idempotencyKey,\n }: FetchWalletCustodyApiRequest<ApiKeyWalletCustodyApiRoutes, TRouteName>,\n { signal }: Pick<RequestInit, \"signal\"> = {},\n ): Promise<RouteResponseBody<RouteForName<TRouteName>>> {\n return executeWalletCustodyRoute({\n baseApiUrl,\n fetchImpl,\n headers,\n signal,\n routeName: route,\n route: apiKeyWalletCustodyApiClientRoutes[route],\n pathParams,\n body,\n routeHeadersInput: {\n \"x-api-key\": typeof apiKey === \"string\" ? apiKey : await apiKey(),\n \"idempotency-key\": idempotencyKey,\n },\n }) as Promise<RouteResponseBody<RouteForName<TRouteName>>>;\n };\n}\n\n// -------------------------------------- Route helper types ---------------------------------------\nexport type WalletCustodyApiRoutes = typeof walletCustodyApiClientRoutes;\nexport type ApiKeyWalletCustodyApiRoutes =\n typeof apiKeyWalletCustodyApiClientRoutes;\ntype ApiKeyWalletCustodyApiRouteName = RouteNamesRequiringHeader<\n ApiKeyWalletCustodyApiRoutes,\n \"x-api-key\"\n>;\ntype RouteForName<TRouteName extends ApiKeyWalletCustodyApiRouteName> =\n ApiKeyWalletCustodyApiRoutes[TRouteName];\n","import type {\n RoutePathParams,\n RouteRequestBody,\n RouteRequestField,\n RouteRequestHeader,\n} from \"../routes/client-request-types\";\nimport type {\n ApiKeyWalletCustodyApiRoutes,\n WalletCustodyApiClient,\n} from \"./api-client\";\n\ntype CreateAndSubmitOrderRoute =\n ApiKeyWalletCustodyApiRoutes[\"create-and-submit-order\"];\n\nexport function createOrdersClient(walletCustodyApi: WalletCustodyApiClient) {\n return {\n /** Creates the order and submits its purchase in the same call. */\n createAndSubmit(\n {\n idempotencyKey,\n body,\n }: RouteRequestField<\n \"body\",\n RouteRequestBody<CreateAndSubmitOrderRoute>\n > &\n RouteRequestField<\n \"idempotencyKey\",\n RouteRequestHeader<CreateAndSubmitOrderRoute, \"idempotency-key\">\n >,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n { route: \"create-and-submit-order\", body, idempotencyKey },\n options,\n );\n },\n get(\n pathParams: RoutePathParams<ApiKeyWalletCustodyApiRoutes[\"get-order\"]>,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi({ route: \"get-order\", pathParams }, options);\n },\n };\n}\n","export { MAX_PERMITS_PER_CLAIM_WALLET } from \"@kyd-labs/tdp-schemas/wallet-custody/const\";\n\nexport const INTEGRATOR_PRIMARY_ADDRESS_SUBJECT = \"PRIMARY_ADDRESS\";\n","import type {\n RoutePathParams,\n RouteRequestBody,\n RouteRequestField,\n RouteRequestHeader,\n} from \"../routes/client-request-types\";\nimport type {\n ApiKeyWalletCustodyApiRoutes,\n WalletCustodyApiClient,\n} from \"./api-client\";\nimport { INTEGRATOR_PRIMARY_ADDRESS_SUBJECT } from \"./const\";\n\ntype SignTransactionInput<\n TRoute extends \"sign-user-transaction\" | \"sign-integrator-transaction\",\n> = Partial<RoutePathParams<ApiKeyWalletCustodyApiRoutes[TRoute]>> &\n RouteRequestField<\n \"body\",\n RouteRequestBody<ApiKeyWalletCustodyApiRoutes[TRoute]>\n > &\n RouteRequestField<\n \"idempotencyKey\",\n RouteRequestHeader<ApiKeyWalletCustodyApiRoutes[TRoute], \"idempotency-key\">\n >;\n\nexport function createTransactionsClient(\n walletCustodyApi: WalletCustodyApiClient,\n) {\n return {\n /** A `subject` is not necessary. */\n signIntegrator(\n {\n subject = INTEGRATOR_PRIMARY_ADDRESS_SUBJECT,\n idempotencyKey,\n body,\n }: SignTransactionInput<\"sign-integrator-transaction\">,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n {\n route: \"sign-integrator-transaction\",\n pathParams: { subject },\n body,\n idempotencyKey,\n },\n options,\n );\n },\n submit(\n {\n body,\n }: RouteRequestField<\n \"body\",\n RouteRequestBody<\n ApiKeyWalletCustodyApiRoutes[\"submit-tenant-transaction\"]\n >\n >,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n {\n route: \"submit-tenant-transaction\",\n body,\n },\n options,\n );\n },\n };\n}\n","import type { RoutePathParams } from \"../routes/client-request-types\";\nimport type {\n ApiKeyWalletCustodyApiRoutes,\n WalletCustodyApiClient,\n} from \"./api-client\";\nimport { INTEGRATOR_PRIMARY_ADDRESS_SUBJECT } from \"./const\";\n\nexport function createWalletClient(walletCustodyApi: WalletCustodyApiClient) {\n return {\n getUserAddress(\n pathParams: RoutePathParams<\n ApiKeyWalletCustodyApiRoutes[\"get-user-address\"]\n >,\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n {\n route: \"get-user-address\",\n pathParams,\n },\n options,\n );\n },\n /** A `subject` is not necessary. */\n getIntegratorAddress(\n {\n subject = INTEGRATOR_PRIMARY_ADDRESS_SUBJECT,\n }: Partial<\n RoutePathParams<ApiKeyWalletCustodyApiRoutes[\"get-integrator-address\"]>\n > = {},\n options?: Pick<RequestInit, \"signal\">,\n ) {\n return walletCustodyApi(\n {\n route: \"get-integrator-address\",\n pathParams: { subject },\n },\n options,\n );\n },\n getFeePayerAddress(options?: Pick<RequestInit, \"signal\">) {\n return walletCustodyApi(\n {\n route: \"get-fee-payer-address\",\n },\n options,\n );\n },\n getProtocolAuthorityAddress(options?: Pick<RequestInit, \"signal\">) {\n return walletCustodyApi(\n {\n route: \"get-protocol-authority-address\",\n },\n options,\n );\n },\n };\n}\n","import { createSolanaClient } from \"./solana-data-api/create-solana-client\";\nimport { createTixApiClient } from \"./tix-api/api-client\";\nimport { createEventsClient } from \"./tix-indexer-api/create-events-client\";\nimport { createIndexerClient } from \"./tix-indexer-api/create-indexer-client\";\nimport { createIntegratorClient } from \"./tix-indexer-api/create-integrator-client\";\nimport { centsToUsdcMinor, usdcMinorToCents } from \"./utils/usdc-cents\";\nimport { createWalletCustodyApiClient } from \"./wallet-custody/api-client\";\nimport { createOrdersClient } from \"./wallet-custody/create-orders-client\";\nimport { createTransactionsClient } from \"./wallet-custody/create-transactions-client\";\nimport { createWalletClient } from \"./wallet-custody/create-wallet-client\";\n\nexport type * from \"./types/index\";\n\nexport type TdpClientOptions = Parameters<typeof createTixApiClient>[0];\nexport type TdpClient = ReturnType<typeof createTdpClient>;\n\nexport function createTdpClient(options: TdpClientOptions) {\n const tixApi = createTixApiClient(options);\n const walletCustodyApi = createWalletCustodyApiClient(options);\n const solana = createSolanaClient(tixApi);\n return {\n solana,\n events: createEventsClient(tixApi),\n indexer: createIndexerClient(tixApi),\n integrator: createIntegratorClient(tixApi),\n wallets: createWalletClient(walletCustodyApi),\n transactions: createTransactionsClient(walletCustodyApi),\n orders: createOrdersClient(walletCustodyApi),\n utils: { usdcMinorToCents, centsToUsdcMinor },\n };\n}\n"],"mappings":"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","names":["responseBodySchemaByRouteKey"]}