@innvoid/getmarket-sdk 0.2.6 → 0.2.7

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.
@@ -39,6 +39,16 @@ function createHttpClient(opts) {
39
39
  headers: opts.headers ?? {}
40
40
  });
41
41
  }
42
+ function withRequestIdConfig(config = {}, requestId) {
43
+ if (!requestId) return config;
44
+ return {
45
+ ...config,
46
+ headers: {
47
+ ...config.headers ?? {},
48
+ "x-request-id": requestId
49
+ }
50
+ };
51
+ }
42
52
 
43
53
  // src/core/internalHttp.ts
44
54
  var DEFAULT_RETRY = {
@@ -148,6 +158,7 @@ export {
148
158
  UpstreamError,
149
159
  mapAxiosToUpstreamError,
150
160
  createHttpClient,
161
+ withRequestIdConfig,
151
162
  InternalHttp
152
163
  };
153
- //# sourceMappingURL=chunk-5S2JP7PR.js.map
164
+ //# sourceMappingURL=chunk-4KD6646F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/errors.ts","../src/core/http.ts","../src/core/internalHttp.ts"],"sourcesContent":["export type ClientErrorCode =\n | \"UPSTREAM_TIMEOUT\"\n | \"UPSTREAM_UNAVAILABLE\"\n | \"UPSTREAM_BAD_RESPONSE\"\n | \"UPSTREAM_NOT_FOUND\"\n | \"UPSTREAM_UNAUTHORIZED\"\n | \"UPSTREAM_FORBIDDEN\"\n | \"UPSTREAM_UNKNOWN\";\n\nexport class UpstreamError extends Error {\n public code: ClientErrorCode;\n public status?: number;\n public details?: any;\n\n constructor(message: string, code: ClientErrorCode, status?: number, details?: any) {\n super(message);\n this.name = \"UpstreamError\";\n this.code = code;\n this.status = status;\n this.details = details;\n }\n}\n\nexport function mapAxiosToUpstreamError(err: any, svc: string): UpstreamError {\n const status = err?.response?.status;\n const data = err?.response?.data;\n const isTimeout = err?.code === \"ECONNABORTED\" || String(err?.message || \"\").includes(\"timeout\");\n\n if (isTimeout) {\n return new UpstreamError(`[${svc}] timeout`, \"UPSTREAM_TIMEOUT\", 504, {cause: err?.message});\n }\n if (!err?.response) {\n return new UpstreamError(`[${svc}] unavailable`, \"UPSTREAM_UNAVAILABLE\", 503, {cause: err?.message});\n }\n if (status === 404) return new UpstreamError(`[${svc}] not found`, \"UPSTREAM_NOT_FOUND\", 404, data);\n if (status === 401) return new UpstreamError(`[${svc}] unauthorized`, \"UPSTREAM_UNAUTHORIZED\", 401, data);\n if (status === 403) return new UpstreamError(`[${svc}] forbidden`, \"UPSTREAM_FORBIDDEN\", 403, data);\n if (status >= 400 && status < 600) {\n return new UpstreamError(`[${svc}] bad response`, \"UPSTREAM_BAD_RESPONSE\", status, data);\n }\n return new UpstreamError(`[${svc}] unknown error`, \"UPSTREAM_UNKNOWN\", status, data);\n}\n","import axios, {AxiosInstance, AxiosRequestConfig} from \"axios\";\n\nexport type HttpClient = AxiosInstance;\n\nexport type HttpClientOpts = {\n baseURL: string;\n timeoutMs?: number;\n headers?: Record<string, string>;\n};\n\nexport function createHttpClient(opts: HttpClientOpts): HttpClient {\n return axios.create({\n baseURL: opts.baseURL.replace(/\\/+$/, \"\"),\n timeout: opts.timeoutMs ?? 8000,\n headers: opts.headers ?? {},\n } satisfies AxiosRequestConfig);\n}\n\n/**\n * Injects x-request-id into an Axios config while preserving existing headers.\n */\nexport function withRequestIdConfig<T extends AxiosRequestConfig = AxiosRequestConfig>(\n config: T = {} as T,\n requestId?: string\n): T {\n if (!requestId) return config;\n\n return {\n ...config,\n headers: {\n ...(config.headers ?? {}),\n \"x-request-id\": requestId,\n },\n } as T;\n}\n","// clients/internalHttp.ts\n\ntype RetryPolicy = {\n retries: number;\n baseDelayMs: number;\n retryOnStatuses: number[];\n retryOnNetworkErrors: boolean;\n};\n\ntype InternalHttpOptions = {\n baseUrl: string;\n apiKey?: string; // x-internal-api-key\n timeoutMs?: number;\n retry?: Partial<RetryPolicy>;\n};\n\nconst DEFAULT_RETRY: RetryPolicy = {\n retries: 1,\n baseDelayMs: 150,\n retryOnStatuses: [429, 502, 503, 504],\n retryOnNetworkErrors: true,\n};\n\nfunction sleep(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nfunction safeJsonStringify(v: any) {\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n\nfunction toHeaders(init?: HeadersInit): Headers {\n return new Headers(init || {});\n}\n\nfunction isJsonContentType(contentType: string | null): boolean {\n if (!contentType) return false;\n const ct = contentType.toLowerCase();\n return ct.includes(\"application/json\") || ct.includes(\"+json\");\n}\n\nfunction isAbortError(e: any): boolean {\n return e?.name === \"AbortError\";\n}\n\nfunction withJitter(ms: number): number {\n // jitter +-20%\n const jitter = ms * 0.2;\n const delta = (Math.random() * 2 - 1) * jitter;\n return Math.max(0, Math.floor(ms + delta));\n}\n\nexport class InternalHttp {\n private readonly baseUrl: string;\n private readonly apiKey: string | undefined;\n private readonly timeoutMs: number;\n private retry: RetryPolicy;\n\n constructor(opts: InternalHttpOptions) {\n this.baseUrl = opts.baseUrl.replace(/\\/+$/, \"\");\n this.apiKey = opts.apiKey;\n\n // ✅ Default más seguro para internas (evita cascadas)\n this.timeoutMs = opts.timeoutMs ?? 4000;\n\n this.retry = {...DEFAULT_RETRY, ...(opts.retry || {})};\n }\n\n async request<T>(\n path: string,\n init: RequestInit & {\n requestId?: string;\n idempotencyKey?: string;\n headers?: HeadersInit;\n } = {}\n ): Promise<T> {\n const url = `${this.baseUrl}${path.startsWith(\"/\") ? \"\" : \"/\"}${path}`;\n\n const baseHeaders = toHeaders(init.headers);\n\n if (!baseHeaders.has(\"Content-Type\")) baseHeaders.set(\"Content-Type\", \"application/json\");\n if (this.apiKey) baseHeaders.set(\"x-internal-api-key\", this.apiKey);\n\n if (init.requestId) baseHeaders.set(\"x-request-id\", init.requestId);\n if (init.idempotencyKey) baseHeaders.set(\"Idempotency-Key\", init.idempotencyKey);\n\n const {headers: _ignored, ...restInit} = init;\n\n const doFetchOnce = async () => {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.timeoutMs);\n\n try {\n const res = await fetch(url, {\n ...restInit,\n headers: baseHeaders,\n signal: controller.signal,\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n const err: any = new Error(\n `HTTP ${res.status} ${res.statusText}${text ? ` - ${text}` : \"\"}`\n );\n err.status = res.status;\n err.body = text;\n throw err;\n }\n\n if (res.status === 204) return undefined as unknown as T;\n\n const contentType = res.headers.get(\"content-type\");\n if (isJsonContentType(contentType)) {\n return (await res.json()) as T;\n }\n\n const text = await res.text().catch(() => \"\");\n return text as unknown as T;\n } finally {\n clearTimeout(timeout);\n }\n };\n\n let attempt = 0;\n\n while (true) {\n try {\n return await doFetchOnce();\n } catch (e: any) {\n attempt++;\n\n const status = e?.status;\n const retryableStatus = !!status && this.retry.retryOnStatuses.includes(status);\n\n const retryableNetwork =\n this.retry.retryOnNetworkErrors &&\n (isAbortError(e) || !status); // sin status suele ser red/dns/timeout\n\n const isRetryable = retryableStatus || retryableNetwork;\n\n if (!isRetryable || attempt > this.retry.retries) {\n console.error(\n `[InternalHttp] request failed: ${url} attempt=${attempt} status=${status ?? \"n/a\"} err=${e?.message\n } body=${safeJsonStringify(e?.body)}`\n );\n throw e;\n }\n\n const backoff = withJitter(this.retry.baseDelayMs * attempt);\n await sleep(backoff);\n }\n }\n }\n}\n"],"mappings":"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","names":["text"]}
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-QVPPDOXY.js";
5
5
  import {
6
6
  createHttpClient
7
- } from "./chunk-5S2JP7PR.js";
7
+ } from "./chunk-4KD6646F.js";
8
8
  import {
9
9
  HEADER_BRANCH_UID,
10
10
  HEADER_COMPANY_UID,
@@ -311,8 +311,43 @@ function createResClient() {
311
311
  apiPrefix: env.apiPrefix,
312
312
  path: "/refs/varieties"
313
313
  });
314
+ const resources = createBulkRefsClient({
315
+ namespace: "res:resource",
316
+ baseURL: env.baseURL,
317
+ apiPrefix: env.apiPrefix,
318
+ path: "/refs/resources"
319
+ });
320
+ const categories = createBulkRefsClient({
321
+ namespace: "res:category",
322
+ baseURL: env.baseURL,
323
+ apiPrefix: env.apiPrefix,
324
+ path: "/refs/categories"
325
+ });
326
+ const attributes = createBulkRefsClient({
327
+ namespace: "res:attribute",
328
+ baseURL: env.baseURL,
329
+ apiPrefix: env.apiPrefix,
330
+ path: "/refs/attributes"
331
+ });
332
+ const attributeOptions = createBulkRefsClient({
333
+ namespace: "res:attribute_option",
334
+ baseURL: env.baseURL,
335
+ apiPrefix: env.apiPrefix,
336
+ path: "/refs/attribute-options"
337
+ });
338
+ const attributeValues = createBulkRefsClient({
339
+ namespace: "res:attribute_value",
340
+ baseURL: env.baseURL,
341
+ apiPrefix: env.apiPrefix,
342
+ path: "/refs/attribute-values"
343
+ });
314
344
  return {
315
- varietiesRefs: (uids, opts) => varieties.bulkRefs(uids, opts)
345
+ varietiesRefs: (uids, opts) => varieties.bulkRefs(uids, opts),
346
+ resourcesRefs: (uids, opts) => resources.bulkRefs(uids, opts),
347
+ categoriesRefs: (uids, opts) => categories.bulkRefs(uids, opts),
348
+ attributesRefs: (uids, opts) => attributes.bulkRefs(uids, opts),
349
+ attributeOptionsRefs: (uids, opts) => attributeOptions.bulkRefs(uids, opts),
350
+ attributeValuesRefs: (uids, opts) => attributeValues.bulkRefs(uids, opts)
316
351
  };
317
352
  }
318
353
 
@@ -337,10 +372,31 @@ function createMdClient() {
337
372
  apiPrefix: env.apiPrefix,
338
373
  path: "/refs/countries"
339
374
  });
375
+ const currencies = createBulkRefsClient({
376
+ namespace: "md:currency",
377
+ baseURL: env.baseURL,
378
+ apiPrefix: env.apiPrefix,
379
+ path: "/refs/currencies"
380
+ });
381
+ const regions = createBulkRefsClient({
382
+ namespace: "md:region",
383
+ baseURL: env.baseURL,
384
+ apiPrefix: env.apiPrefix,
385
+ path: "/refs/regions"
386
+ });
387
+ const communes = createBulkRefsClient({
388
+ namespace: "md:commune",
389
+ baseURL: env.baseURL,
390
+ apiPrefix: env.apiPrefix,
391
+ path: "/refs/communes"
392
+ });
340
393
  return {
341
394
  measuresRefs: (uids, opts) => measures.bulkRefs(uids, opts),
342
395
  measureTypesRefs: (uids, opts) => measureTypes.bulkRefs(uids, opts),
343
- countriesRefs: (uids, opts) => countries.bulkRefs(uids, opts)
396
+ countriesRefs: (uids, opts) => countries.bulkRefs(uids, opts),
397
+ currenciesRefs: (uids, opts) => currencies.bulkRefs(uids, opts),
398
+ regionsRefs: (uids, opts) => regions.bulkRefs(uids, opts),
399
+ communesRefs: (uids, opts) => communes.bulkRefs(uids, opts)
344
400
  };
345
401
  }
346
402
 
@@ -351,11 +407,11 @@ function createFisClient() {
351
407
  baseURL: `${env.baseURL}${env.apiPrefix}`,
352
408
  timeoutMs: 8e3
353
409
  });
354
- const taxes = createBulkRefsClient({
355
- namespace: "fis:tax",
410
+ const profiles = createBulkRefsClient({
411
+ namespace: "fis:profile",
356
412
  baseURL: env.baseURL,
357
413
  apiPrefix: env.apiPrefix,
358
- path: "/refs/taxes"
414
+ path: "/refs/profiles"
359
415
  });
360
416
  const documents = createBulkRefsClient({
361
417
  namespace: "fis:document",
@@ -363,77 +419,113 @@ function createFisClient() {
363
419
  apiPrefix: env.apiPrefix,
364
420
  path: "/refs/documents"
365
421
  });
422
+ const snapshots = createBulkRefsClient({
423
+ namespace: "fis:snapshot",
424
+ baseURL: env.baseURL,
425
+ apiPrefix: env.apiPrefix,
426
+ path: "/refs/snapshots"
427
+ });
366
428
  const submissions = createBulkRefsClient({
367
429
  namespace: "fis:submission",
368
430
  baseURL: env.baseURL,
369
431
  apiPrefix: env.apiPrefix,
370
432
  path: "/refs/submissions"
371
433
  });
434
+ const folioPools = createBulkRefsClient({
435
+ namespace: "fis:folio_pool",
436
+ baseURL: env.baseURL,
437
+ apiPrefix: env.apiPrefix,
438
+ path: "/refs/folio-pools"
439
+ });
440
+ const taxRules = createBulkRefsClient({
441
+ namespace: "fis:tax_rule",
442
+ baseURL: env.baseURL,
443
+ apiPrefix: env.apiPrefix,
444
+ path: "/refs/tax-rules"
445
+ });
372
446
  return {
373
447
  // -----------------------------------------------------------------------
374
448
  // Bulk refs
375
449
  // -----------------------------------------------------------------------
376
- taxesRefs: (uids, opts) => taxes.bulkRefs(uids, opts),
450
+ profilesRefs: (uids, opts) => profiles.bulkRefs(uids, opts),
377
451
  documentsRefs: (uids, opts) => documents.bulkRefs(uids, opts),
452
+ snapshotsRefs: (uids, opts) => snapshots.bulkRefs(uids, opts),
378
453
  submissionsRefs: (uids, opts) => submissions.bulkRefs(uids, opts),
454
+ folioPoolsRefs: (uids, opts) => folioPools.bulkRefs(uids, opts),
455
+ taxRulesRefs: (uids, opts) => taxRules.bulkRefs(uids, opts),
379
456
  // -----------------------------------------------------------------------
380
457
  // Fiscal calculation / build / lifecycle
381
458
  // -----------------------------------------------------------------------
382
- calculate: async (body) => {
459
+ async calculate(body) {
383
460
  const { data } = await http.post("/calculate", body);
384
461
  return data;
385
462
  },
386
- buildDocument: async (body) => {
387
- const { data } = await http.post("/documents/build", body);
463
+ async calculateTaxes(body) {
464
+ const { data } = await http.post("/tax/calculate", body);
388
465
  return data;
389
466
  },
390
- signDocument: async (body) => {
391
- const { data } = await http.post("/documents/sign", body);
467
+ async buildDocument(body) {
468
+ const { data } = await http.post("/documents", body);
392
469
  return data;
393
470
  },
394
- submitDocument: async (body) => {
395
- const { data } = await http.post("/documents/submit", body);
471
+ async signDocument(body) {
472
+ const { data } = await http.post(
473
+ `/documents/${body.document_uid}/sign`,
474
+ body
475
+ );
476
+ return data;
477
+ },
478
+ async submitDocument(body) {
479
+ const { data } = await http.post(
480
+ `/documents/${body.document_uid}/submit`,
481
+ body
482
+ );
396
483
  return data;
397
484
  },
398
- cancelDocument: async (body) => {
399
- const { data } = await http.post("/documents/cancel", body);
485
+ async cancelDocument(body) {
486
+ const { data } = await http.post(
487
+ `/documents/${body.document_uid}/cancel`,
488
+ body
489
+ );
400
490
  return data;
401
491
  },
402
492
  // -----------------------------------------------------------------------
403
493
  // Folios / series
404
494
  // -----------------------------------------------------------------------
405
- reserveFolio: async (body) => {
495
+ async reserveFolio(body) {
406
496
  const { data } = await http.post("/folios/reserve", body);
407
497
  return data;
408
498
  },
409
- consumeFolio: async (body) => {
499
+ async consumeFolio(body) {
410
500
  const { data } = await http.post("/folios/consume", body);
411
501
  return data;
412
502
  },
413
503
  // -----------------------------------------------------------------------
414
504
  // Queries / detail
415
505
  // -----------------------------------------------------------------------
416
- queryDocuments: async (params) => {
417
- const { data } = await http.get("/documents", { params });
506
+ async queryDocuments(body) {
507
+ const { data } = await http.post("/documents/query", body);
418
508
  return data;
419
509
  },
420
- getDocumentByUid: async (uid) => {
510
+ async getDocumentByUid(uid) {
421
511
  const { data } = await http.get(`/documents/${uid}`);
422
512
  return data;
423
513
  },
424
- getSnapshotByUid: async (uid) => {
514
+ async getSnapshotByUid(uid) {
425
515
  const { data } = await http.get(`/snapshots/${uid}`);
426
516
  return data;
427
517
  },
428
- getSubmissionByUid: async (uid) => {
518
+ async getSubmissionByUid(uid) {
429
519
  const { data } = await http.get(`/submissions/${uid}`);
430
520
  return data;
431
521
  },
432
- getStatusEventsByDocumentUid: async (documentUid) => {
433
- const { data } = await http.get(`/documents/${documentUid}/status-events`);
522
+ async getStatusEventsByDocumentUid(documentUid) {
523
+ const { data } = await http.get(
524
+ `/documents/${documentUid}/status-events`
525
+ );
434
526
  return data;
435
527
  },
436
- retrySubmission: async (body) => {
528
+ async retrySubmission(body) {
437
529
  const { data } = await http.post("/submissions/retry", body);
438
530
  return data;
439
531
  }
@@ -489,25 +581,107 @@ function createPayClient() {
489
581
  baseURL: `${env.baseURL}${env.apiPrefix}`,
490
582
  timeoutMs: 8e3
491
583
  });
584
+ const intents = createBulkRefsClient({
585
+ namespace: "pay:intent",
586
+ baseURL: env.baseURL,
587
+ apiPrefix: env.apiPrefix,
588
+ path: "/refs/intents"
589
+ });
590
+ const attempts = createBulkRefsClient({
591
+ namespace: "pay:attempt",
592
+ baseURL: env.baseURL,
593
+ apiPrefix: env.apiPrefix,
594
+ path: "/refs/attempts"
595
+ });
596
+ const transactions = createBulkRefsClient({
597
+ namespace: "pay:transaction",
598
+ baseURL: env.baseURL,
599
+ apiPrefix: env.apiPrefix,
600
+ path: "/refs/transactions"
601
+ });
602
+ const refunds = createBulkRefsClient({
603
+ namespace: "pay:refund",
604
+ baseURL: env.baseURL,
605
+ apiPrefix: env.apiPrefix,
606
+ path: "/refs/refunds"
607
+ });
608
+ const allocations = createBulkRefsClient({
609
+ namespace: "pay:allocation",
610
+ baseURL: env.baseURL,
611
+ apiPrefix: env.apiPrefix,
612
+ path: "/refs/allocations"
613
+ });
614
+ const providerAccounts = createBulkRefsClient({
615
+ namespace: "pay:provider_account",
616
+ baseURL: env.baseURL,
617
+ apiPrefix: env.apiPrefix,
618
+ path: "/refs/provider-accounts"
619
+ });
620
+ const paymentMethods = createBulkRefsClient({
621
+ namespace: "pay:payment_method",
622
+ baseURL: env.baseURL,
623
+ apiPrefix: env.apiPrefix,
624
+ path: "/refs/payment-methods"
625
+ });
492
626
  return {
627
+ // -----------------------------------------------------------------------
628
+ // Payment intents
629
+ // -----------------------------------------------------------------------
493
630
  async createIntent(body) {
494
- const { data } = await http.post("/intents", body);
631
+ const { data } = await http.post("/payment-intents", body);
495
632
  return data;
496
633
  },
634
+ async getIntentByUid(uid) {
635
+ const { data } = await http.get(`/payment-intents/${uid}`);
636
+ return data;
637
+ },
638
+ async confirmIntent(body) {
639
+ const { data } = await http.post(
640
+ `/payment-intents/${body.intent_uid}/confirm`,
641
+ body
642
+ );
643
+ return data;
644
+ },
645
+ // -----------------------------------------------------------------------
646
+ // Attempts
647
+ // -----------------------------------------------------------------------
497
648
  async startAttempt(body) {
498
649
  const { data } = await http.post("/attempts", body);
499
650
  return data;
500
651
  },
652
+ // -----------------------------------------------------------------------
653
+ // Methods / availability
654
+ // -----------------------------------------------------------------------
501
655
  async getAvailableMethods(params) {
502
656
  const { data } = await http.get("/methods/available", {
503
657
  params
504
658
  });
505
659
  return data;
506
660
  },
507
- async getIntentByUid(uid) {
508
- const { data } = await http.get(`/intents/${uid}`);
661
+ // -----------------------------------------------------------------------
662
+ // Queries / allocations
663
+ // -----------------------------------------------------------------------
664
+ async queryPayments(body) {
665
+ const { data } = await http.post("/payments/query", body);
509
666
  return data;
510
- }
667
+ },
668
+ async getAllocationsByTarget(body) {
669
+ const { data } = await http.post(
670
+ "/allocations/by-target",
671
+ body
672
+ );
673
+ return data;
674
+ },
675
+ // -----------------------------------------------------------------------
676
+ // Bulk refs
677
+ // -----------------------------------------------------------------------
678
+ intentsRefs: (uids, opts) => intents.bulkRefs(uids, opts),
679
+ attemptsRefs: (uids, opts) => attempts.bulkRefs(uids, opts),
680
+ transactionsRefs: (uids, opts) => transactions.bulkRefs(uids, opts),
681
+ refundsRefs: (uids, opts) => refunds.bulkRefs(uids, opts),
682
+ allocationsRefs: (uids, opts) => allocations.bulkRefs(uids, opts),
683
+ providerAccountsRefs: (uids, opts) => providerAccounts.bulkRefs(uids, opts),
684
+ paymentMethodsRefs: (uids, opts) => paymentMethods.bulkRefs(uids, opts)
511
685
  };
512
686
  }
513
687
 
@@ -525,4 +699,4 @@ export {
525
699
  createMkpClient,
526
700
  createPayClient
527
701
  };
528
- //# sourceMappingURL=chunk-7KD7EQ2O.js.map
702
+ //# sourceMappingURL=chunk-PBN2JCRX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clients/env.ts","../src/internalHttpClient.ts","../src/clients/cacheFactory.ts","../src/clients/bulkRefsClient.ts","../src/clients/platformClient.ts","../src/clients/resClient.ts","../src/clients/mdClient.ts","../src/clients/fisClient.ts","../src/clients/mediaClient.ts","../src/clients/mkpClient.ts","../src/clients/payClient.ts"],"sourcesContent":["// packages/sdk/src/clients/env.ts\nimport type {ServiceClientEnv} from \"./types\";\n\nfunction must(v: string | undefined, name: string): string {\n const s = (v || \"\").trim();\n if (!s) throw new Error(`Missing env var: ${name}`);\n return s;\n}\n\nexport function readServiceEnv(prefix: string, defaults?: Partial<ServiceClientEnv>): ServiceClientEnv {\n const baseURL = (process.env[`${prefix}_BASE_URL`] || defaults?.baseURL || \"\").trim();\n const apiPrefix = (process.env[`${prefix}_API_PREFIX`] || defaults?.apiPrefix || \"/internal/v1\").trim();\n\n return {\n baseURL: must(baseURL, `${prefix}_BASE_URL`),\n apiPrefix,\n };\n}\n","// packages/sdk/src/internalHttpClient.ts\nimport fs from \"fs\";\nimport {\n HEADER_INTERNAL_API_KEY,\n HEADER_REQUEST_ID,\n HEADER_COMPANY_UID,\n HEADER_BRANCH_UID,\n HEADER_EMPLOYEE_UID\n} from \"./headers\";\nimport type {RequestContext} from \"./headers\";\n\nexport type InternalHttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport type InternalHttpClientOptions = {\n baseURL: string; // ej: http://platform:3010\n apiPrefix?: string; // ej: /internal/v1\n timeoutMs?: number; // default 15000\n retries?: number; // default 2\n retryDelayMs?: number; // default 250\n apiKey?: string | null; // override opcional\n};\n\nexport type InternalRequestOptions = {\n method: InternalHttpMethod;\n path: string; // \"/tenants/provision\"\n query?: Record<string, string | number | boolean | null | undefined>;\n body?: any; // JSON\n headers?: Record<string, string | undefined>;\n ctx?: RequestContext | null;\n\n idempotencyKey?: string | null;\n\n expectJson?: boolean; // default true\n};\n\nexport class InternalHttpError extends Error {\n status: number;\n code: string;\n details: any;\n\n constructor(status: number, code: string, message: string, details?: any) {\n super(message);\n this.status = status;\n this.code = code;\n this.details = details ?? null;\n }\n}\n\nfunction readSecretFile(path?: string): string | null {\n if (!path) return null;\n try {\n const v = fs.readFileSync(path, \"utf8\").trim();\n return v.length ? v : null;\n } catch {\n return null;\n }\n}\n\nfunction splitKeys(v?: string | null): string[] {\n if (!v) return [];\n return v.split(\",\").map((s) => s.trim()).filter(Boolean);\n}\n\n/**\n * ✅ MISMA lógica que internalAuth.ts:\n * - INTERNAL_API_KEY_FILE tiene prioridad\n * - fallback a INTERNAL_API_KEY\n * - permite CSV\n *\n * Nota: Para enviar, usamos la primera key disponible.\n */\nfunction getInternalApiKey(override?: string | null): string | null {\n if (override && override.trim()) return override.trim();\n\n const fileKey = readSecretFile(process.env.INTERNAL_API_KEY_FILE);\n const envKey = (process.env.INTERNAL_API_KEY || \"\").trim();\n const raw = fileKey || envKey;\n const keys = splitKeys(raw);\n return keys[0] || null;\n}\n\nfunction normalizeBaseURL(baseURL: string): string {\n const b = (baseURL || \"\").trim();\n if (!b) throw new Error(\"InternalHttpClient: baseURL is required\");\n return b.replace(/\\/+$/g, \"\");\n}\n\nfunction normalizePrefix(prefix?: string): string {\n const p = (prefix || \"\").trim();\n if (!p) return \"\";\n const withSlash = p.startsWith(\"/\") ? p : `/${p}`;\n return withSlash.replace(/\\/+$/g, \"\");\n}\n\nfunction buildQuery(query?: InternalRequestOptions[\"query\"]): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v === null || v === undefined) continue;\n params.set(k, String(v));\n }\n const s = params.toString();\n return s ? `?${s}` : \"\";\n}\n\n/**\n * ✅ Propaga contexto estándar (SDK)\n * - x-request-id\n * - x-company\n * - x-branch\n * - x-employee-uid\n */\nexport function buildInternalHeaders(\n ctx?: RequestContext | null,\n extra?: Record<string, string | undefined>,\n idempotencyKey?: string | null\n): Record<string, string> {\n const h: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (ctx?.requestId) h[HEADER_REQUEST_ID] = String(ctx.requestId);\n if (ctx?.company_uid) h[HEADER_COMPANY_UID] = String(ctx.company_uid);\n if (ctx?.branch_uid) h[HEADER_BRANCH_UID] = String(ctx.branch_uid);\n if (ctx?.employee_uid) h[HEADER_EMPLOYEE_UID] = String(ctx.employee_uid);\n\n if (idempotencyKey && idempotencyKey.trim()) {\n h[\"Idempotency-Key\"] = idempotencyKey.trim();\n }\n\n for (const [k, v] of Object.entries(extra || {})) {\n if (v === undefined) continue;\n const vv = String(v).trim();\n if (!vv) continue;\n h[k] = vv;\n }\n\n return h;\n}\n\nasync function sleep(ms: number) {\n await new Promise((r) => setTimeout(r, ms));\n}\n\nfunction shouldRetry(status: number | null, err: any): boolean {\n if (err?.name === \"AbortError\") return true;\n if (!status) return true;\n if (status >= 500) return true;\n if (status === 429) return true;\n return false;\n}\n\nasync function safeReadJson(res: Response): Promise<any> {\n const text = await res.text();\n if (!text) return null;\n try {\n return JSON.parse(text);\n } catch {\n return {raw: text};\n }\n}\n\n/**\n * Cliente interno universal (fetch)\n */\nexport function createInternalHttpClient(opts: InternalHttpClientOptions) {\n const baseURL = normalizeBaseURL(opts.baseURL);\n const apiPrefix = normalizePrefix(opts.apiPrefix);\n const timeoutMs = typeof opts.timeoutMs === \"number\" ? opts.timeoutMs : 15000;\n const retries = typeof opts.retries === \"number\" ? opts.retries : 2;\n const retryDelayMs = typeof opts.retryDelayMs === \"number\" ? opts.retryDelayMs : 250;\n\n const apiKey = getInternalApiKey(opts.apiKey ?? null);\n if (!apiKey) {\n throw new Error(\n \"InternalHttpClient: INTERNAL_API_KEY or INTERNAL_API_KEY_FILE is required to call internal endpoints.\"\n );\n }\n\n async function request<T = any>(r: InternalRequestOptions): Promise<T> {\n const path = (r.path || \"\").trim();\n if (!path.startsWith(\"/\")) {\n throw new Error(`InternalHttpClient: path must start with '/': ${path}`);\n }\n\n const url = `${baseURL}${apiPrefix}${path}${buildQuery(r.query)}`;\n\n const headers = buildInternalHeaders(r.ctx ?? null, r.headers, r.idempotencyKey ?? null);\n if (apiKey != null) {\n headers[HEADER_INTERNAL_API_KEY] = apiKey;\n }\n\n const method = r.method;\n const expectJson = r.expectJson !== false;\n\n const body =\n method === \"GET\" || method === \"DELETE\"\n ? undefined\n : r.body !== undefined\n ? JSON.stringify(r.body)\n : undefined;\n\n let attempt = 0;\n let lastErr: any = null;\n\n while (attempt <= retries) {\n attempt++;\n\n const ac = new AbortController();\n const to = setTimeout(() => ac.abort(), timeoutMs);\n\n try {\n const res = await fetch(url, {\n method,\n headers,\n body,\n signal: ac.signal,\n });\n\n clearTimeout(to);\n\n if (res.ok) {\n if (!expectJson) return (undefined as any) as T;\n const data = await safeReadJson(res);\n return data as T;\n }\n\n const errBody = await safeReadJson(res);\n const status = res.status;\n\n if (attempt <= retries && shouldRetry(status, null)) {\n lastErr = new InternalHttpError(\n status,\n \"INTERNAL_HTTP_RETRY\",\n `Retryable internal HTTP error (${status})`,\n {url, status, response: errBody, attempt}\n );\n await sleep(retryDelayMs * attempt);\n continue;\n }\n\n throw new InternalHttpError(\n status,\n \"INTERNAL_HTTP_ERROR\",\n `Internal HTTP error (${status})`,\n {url, status, response: errBody}\n );\n } catch (e: any) {\n clearTimeout(to);\n\n if (attempt <= retries && shouldRetry(null, e)) {\n lastErr = e;\n await sleep(retryDelayMs * attempt);\n continue;\n }\n\n if (e instanceof InternalHttpError) throw e;\n\n throw new InternalHttpError(\n 0,\n \"INTERNAL_HTTP_NETWORK_ERROR\",\n e?.message || \"Internal HTTP network error\",\n {url, attempt, error: String(e)}\n );\n }\n }\n\n throw lastErr || new InternalHttpError(0, \"INTERNAL_HTTP_FAILED\", \"Internal request failed\");\n }\n\n return {\n request,\n get: <T = any>(path: string, o?: Omit<InternalRequestOptions, \"method\" | \"path\">) =>\n request<T>({...(o || {}), method: \"GET\", path}),\n post: <T = any>(path: string, body?: any, o?: Omit<InternalRequestOptions, \"method\" | \"path\" | \"body\">) =>\n request<T>({...(o || {}), method: \"POST\", path, body}),\n put: <T = any>(path: string, body?: any, o?: Omit<InternalRequestOptions, \"method\" | \"path\" | \"body\">) =>\n request<T>({...(o || {}), method: \"PUT\", path, body}),\n patch: <T = any>(path: string, body?: any, o?: Omit<InternalRequestOptions, \"method\" | \"path\" | \"body\">) =>\n request<T>({...(o || {}), method: \"PATCH\", path, body}),\n del: <T = any>(path: string, o?: Omit<InternalRequestOptions, \"method\" | \"path\">) =>\n request<T>({...(o || {}), method: \"DELETE\", path}),\n };\n}\n","// packages/sdk/src/clients/cacheFactory.ts\nimport {TwoLevelCache} from \"../cache\";\nimport {createCacheProvider} from \"../cache/cacheProvider\";\n\n/**\n * Crea un TwoLevelCache por \"namespace\" (ej: \"res:variety\")\n * - L1: in-memory (TTL corto)\n * - L2: redis (TTL medio)\n *\n * Nota: createCacheProvider ya aplica REDIS_KEY_PREFIX desde env,\n * y además TwoLevelCache agrega namespace como prefijo lógico.\n */\nexport function makeRefsCache<T>(namespace: string) {\n const l2 = createCacheProvider(); // redis o noop según env\n return new TwoLevelCache<T>(l2, {\n namespace,\n ttlMsL1: 30_000,\n ttlMsL2: 300_000,\n negativeTtlMsL1: 30_000,\n negativeTtlMsL2: 30_000,\n });\n}\n","// packages/sdk/src/clients/bulkRefsClient.ts\nimport type {RequestContext} from \"../headers\";\nimport {createInternalHttpClient} from \"../internalHttpClient\";\nimport type {BulkRefsResponse, BulkUidsRequest, InternalBulkRefsOptions} from \"./types\";\nimport {makeRefsCache} from \"./cacheFactory\";\n\nfunction uniq(arr: string[]) {\n return Array.from(new Set(arr.filter(Boolean)));\n}\n\nexport function createBulkRefsClient<TRef extends { uid: string }>(args: {\n namespace: string; // cache namespace e.g. \"res:variety\"\n baseURL: string;\n apiPrefix: string;\n path: string; // e.g. \"/refs/varieties\"\n defaultTtlMsL1?: number;\n defaultTtlMsL2?: number;\n}) {\n const http = createInternalHttpClient({\n baseURL: args.baseURL,\n apiPrefix: args.apiPrefix,\n });\n\n // ✅ cache tipado\n const cache = makeRefsCache<TRef>(args.namespace);\n\n async function bulkRefs(\n uids: string[],\n opts?: InternalBulkRefsOptions\n ): Promise<BulkRefsResponse<TRef>> {\n const list = uniq(uids);\n if (list.length === 0) {\n return {ok: true, refs: [], meta: {requested: 0, returned: 0, missing: []}};\n }\n\n // 1) cache hits\n const hits: TRef[] = [];\n const missing: string[] = [];\n\n for (const uid of list) {\n const v = await cache.get(uid); // ✅ sin genéricos\n if (v) hits.push(v);\n else missing.push(uid);\n }\n\n // 2) fetch missing\n let fetched: TRef[] = [];\n if (missing.length) {\n const resp = await http.post<BulkRefsResponse<TRef>>(\n args.path,\n {uids: missing} as BulkUidsRequest,\n {\n ctx: (opts?.ctx ?? null) as RequestContext | null,\n }\n );\n\n const refs = (resp.refs ?? resp.items ?? []) as TRef[];\n fetched = refs;\n\n const ttlMsL1 = opts?.ttlMsL1 ?? args.defaultTtlMsL1;\n const ttlMsL2 = opts?.ttlMsL2 ?? args.defaultTtlMsL2;\n\n for (const ref of refs) {\n const uid = String(ref?.uid || \"\").trim();\n if (!uid) continue;\n\n await cache.set(uid, ref, {\n ttlMsL1,\n ttlMsL2,\n });\n }\n }\n\n const all = [...hits, ...fetched];\n\n // missing final (uids requested but not returned)\n const returnedSet = new Set(all.map((r) => String(r?.uid || \"\")));\n const missingFinal = list.filter((u) => !returnedSet.has(u));\n\n return {\n ok: true,\n refs: all,\n meta: {\n requested: list.length,\n returned: all.length,\n missing: missingFinal,\n },\n };\n }\n\n return {bulkRefs};\n}\n","// packages/sdk/src/clients/platformClient.ts\nimport type {PlatformResolveTenantResponse, PlatformServiceCode} from \"@innvoid/getmarket-contracts\";\nimport type {RequestContext} from \"../headers\";\nimport {createInternalHttpClient} from \"../internalHttpClient\";\nimport {makeRefsCache} from \"./cacheFactory\";\n\nexport function createPlatformClient(env: { baseURL: string; apiPrefix: string }) {\n const http = createInternalHttpClient(env);\n\n // ✅ cache tipado\n const cache = makeRefsCache<PlatformResolveTenantResponse>(\"platform:tenant\");\n\n async function resolveTenant(\n input: { company_uid: string; service: PlatformServiceCode },\n ctx?: RequestContext | null\n ) {\n const key = `${input.company_uid}:${input.service}`;\n\n const cached = await cache.get(key); // ✅ sin genéricos\n if (cached) return cached;\n\n const resp = await http.post<PlatformResolveTenantResponse>(\n \"/tenants/resolve\",\n input,\n {ctx: ctx ?? null}\n );\n\n await cache.set(key, resp);\n return resp;\n }\n\n return {resolveTenant};\n}\n","// packages/sdk/src/clients/resClient.ts\nimport type {\n ResVarietyRef,\n ResVarietiesRefsResponse,\n ResResourceRef,\n ResResourcesRefsResponse,\n ResCategoryRef,\n ResCategoriesRefsResponse,\n ResAttributeRef,\n ResAttributesRefsResponse,\n ResAttributeOptionRef,\n ResAttributeOptionsRefsResponse,\n ResAttributeValueRef,\n ResAttributeValuesRefsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\n\nexport function createResClient() {\n const env = readServiceEnv(\"RES\", {apiPrefix: \"/internal/v1\"});\n\n const varieties = createBulkRefsClient<ResVarietyRef>({\n namespace: \"res:variety\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/varieties\",\n });\n\n const resources = createBulkRefsClient<ResResourceRef>({\n namespace: \"res:resource\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/resources\",\n });\n\n const categories = createBulkRefsClient<ResCategoryRef>({\n namespace: \"res:category\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/categories\",\n });\n\n const attributes = createBulkRefsClient<ResAttributeRef>({\n namespace: \"res:attribute\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/attributes\",\n });\n\n const attributeOptions = createBulkRefsClient<ResAttributeOptionRef>({\n namespace: \"res:attribute_option\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/attribute-options\",\n });\n\n const attributeValues = createBulkRefsClient<ResAttributeValueRef>({\n namespace: \"res:attribute_value\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/attribute-values\",\n });\n\n return {\n varietiesRefs: (uids: string[], opts?: any) =>\n varieties.bulkRefs(uids, opts) as Promise<ResVarietiesRefsResponse>,\n\n resourcesRefs: (uids: string[], opts?: any) =>\n resources.bulkRefs(uids, opts) as Promise<ResResourcesRefsResponse>,\n\n categoriesRefs: (uids: string[], opts?: any) =>\n categories.bulkRefs(uids, opts) as Promise<ResCategoriesRefsResponse>,\n\n attributesRefs: (uids: string[], opts?: any) =>\n attributes.bulkRefs(uids, opts) as Promise<ResAttributesRefsResponse>,\n\n attributeOptionsRefs: (uids: string[], opts?: any) =>\n attributeOptions.bulkRefs(uids, opts) as Promise<ResAttributeOptionsRefsResponse>,\n\n attributeValuesRefs: (uids: string[], opts?: any) =>\n attributeValues.bulkRefs(uids, opts) as Promise<ResAttributeValuesRefsResponse>,\n };\n}\n","// packages/sdk/src/clients/mdClient.ts\nimport type {\n MdMeasureRef,\n MdMeasuresRefsResponse,\n MdMeasureTypeRef,\n MdMeasureTypesRefsResponse,\n MdCountryRef,\n MdCountriesRefsResponse,\n MdCurrencyRef,\n MdCurrenciesRefsResponse,\n MdRegionRef,\n MdRegionsRefsResponse,\n MdCommuneRef,\n MdCommunesRefsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\n\nexport function createMdClient() {\n const env = readServiceEnv(\"MD\", {apiPrefix: \"/internal/v1\"});\n\n const measures = createBulkRefsClient<MdMeasureRef>({\n namespace: \"md:measure\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/measures\",\n });\n\n const measureTypes = createBulkRefsClient<MdMeasureTypeRef>({\n namespace: \"md:measure_type\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/measure-types\",\n });\n\n const countries = createBulkRefsClient<MdCountryRef>({\n namespace: \"md:country\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/countries\",\n });\n\n const currencies = createBulkRefsClient<MdCurrencyRef>({\n namespace: \"md:currency\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/currencies\",\n });\n\n const regions = createBulkRefsClient<MdRegionRef>({\n namespace: \"md:region\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/regions\",\n });\n\n const communes = createBulkRefsClient<MdCommuneRef>({\n namespace: \"md:commune\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/communes\",\n });\n\n return {\n measuresRefs: (uids: string[], opts?: any) =>\n measures.bulkRefs(uids, opts) as Promise<MdMeasuresRefsResponse>,\n\n measureTypesRefs: (uids: string[], opts?: any) =>\n measureTypes.bulkRefs(uids, opts) as Promise<MdMeasureTypesRefsResponse>,\n\n countriesRefs: (uids: string[], opts?: any) =>\n countries.bulkRefs(uids, opts) as Promise<MdCountriesRefsResponse>,\n\n currenciesRefs: (uids: string[], opts?: any) =>\n currencies.bulkRefs(uids, opts) as Promise<MdCurrenciesRefsResponse>,\n\n regionsRefs: (uids: string[], opts?: any) =>\n regions.bulkRefs(uids, opts) as Promise<MdRegionsRefsResponse>,\n\n communesRefs: (uids: string[], opts?: any) =>\n communes.bulkRefs(uids, opts) as Promise<MdCommunesRefsResponse>,\n };\n}\n","// packages/sdk/src/clients/fisClient.ts\nimport type {\n UID,\n FisProfileRef,\n FisProfilesRefsResponse,\n FisDocumentRef,\n FisDocumentsRefsResponse,\n FisSnapshotRef,\n FisSnapshotsRefsResponse,\n FisSubmissionRef,\n FisSubmissionsRefsResponse,\n FisFolioPoolRef,\n FisFolioPoolsRefsResponse,\n FisTaxRuleRef,\n FisTaxRulesRefsResponse,\n FisCalculateRequest,\n FisCalculateResponse,\n FisTaxCalculateRequest,\n FisTaxCalculateResponse,\n FisBuildDocumentRequest,\n FisBuildDocumentResponse,\n FisSignDocumentRequest,\n FisSignDocumentResponse,\n FisSubmitDocumentRequest,\n FisSubmitDocumentResponse,\n FisCancelDocumentRequest,\n FisCancelDocumentResponse,\n FisReserveFolioRequest,\n FisReserveFolioResponse,\n FisConsumeFolioRequest,\n FisConsumeFolioResponse,\n FisDocumentsQueryRequest,\n FisDocumentsQueryResponse,\n FisSubmissionRetryRequest,\n FisSubmissionRetryResponse,\n FisDocumentResponse,\n FisSnapshotResponse,\n FisSubmissionResponse,\n FisStatusEventsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\nimport {createHttpClient, type HttpClient} from \"../core\";\n\nexport function createFisClient() {\n const env = readServiceEnv(\"FIS\", {apiPrefix: \"/internal/v1\"});\n\n const http: HttpClient = createHttpClient({\n baseURL: `${env.baseURL}${env.apiPrefix}`,\n timeoutMs: 8000,\n });\n\n const profiles = createBulkRefsClient<FisProfileRef>({\n namespace: \"fis:profile\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/profiles\",\n });\n\n const documents = createBulkRefsClient<FisDocumentRef>({\n namespace: \"fis:document\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/documents\",\n });\n\n const snapshots = createBulkRefsClient<FisSnapshotRef>({\n namespace: \"fis:snapshot\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/snapshots\",\n });\n\n const submissions = createBulkRefsClient<FisSubmissionRef>({\n namespace: \"fis:submission\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/submissions\",\n });\n\n const folioPools = createBulkRefsClient<FisFolioPoolRef>({\n namespace: \"fis:folio_pool\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/folio-pools\",\n });\n\n const taxRules = createBulkRefsClient<FisTaxRuleRef>({\n namespace: \"fis:tax_rule\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/tax-rules\",\n });\n\n return {\n // -----------------------------------------------------------------------\n // Bulk refs\n // -----------------------------------------------------------------------\n profilesRefs: (uids: string[], opts?: any) =>\n profiles.bulkRefs(uids, opts) as Promise<FisProfilesRefsResponse>,\n\n documentsRefs: (uids: string[], opts?: any) =>\n documents.bulkRefs(uids, opts) as Promise<FisDocumentsRefsResponse>,\n\n snapshotsRefs: (uids: string[], opts?: any) =>\n snapshots.bulkRefs(uids, opts) as Promise<FisSnapshotsRefsResponse>,\n\n submissionsRefs: (uids: string[], opts?: any) =>\n submissions.bulkRefs(uids, opts) as Promise<FisSubmissionsRefsResponse>,\n\n folioPoolsRefs: (uids: string[], opts?: any) =>\n folioPools.bulkRefs(uids, opts) as Promise<FisFolioPoolsRefsResponse>,\n\n taxRulesRefs: (uids: string[], opts?: any) =>\n taxRules.bulkRefs(uids, opts) as Promise<FisTaxRulesRefsResponse>,\n\n // -----------------------------------------------------------------------\n // Fiscal calculation / build / lifecycle\n // -----------------------------------------------------------------------\n async calculate(body: FisCalculateRequest): Promise<FisCalculateResponse> {\n const {data} = await http.post<FisCalculateResponse>(\"/calculate\", body);\n return data;\n },\n\n async calculateTaxes(body: FisTaxCalculateRequest): Promise<FisTaxCalculateResponse> {\n const {data} = await http.post<FisTaxCalculateResponse>(\"/tax/calculate\", body);\n return data;\n },\n\n async buildDocument(body: FisBuildDocumentRequest): Promise<FisBuildDocumentResponse> {\n const {data} = await http.post<FisBuildDocumentResponse>(\"/documents\", body);\n return data;\n },\n\n async signDocument(body: FisSignDocumentRequest): Promise<FisSignDocumentResponse> {\n const {data} = await http.post<FisSignDocumentResponse>(\n `/documents/${body.document_uid}/sign`,\n body\n );\n return data;\n },\n\n async submitDocument(body: FisSubmitDocumentRequest): Promise<FisSubmitDocumentResponse> {\n const {data} = await http.post<FisSubmitDocumentResponse>(\n `/documents/${body.document_uid}/submit`,\n body\n );\n return data;\n },\n\n async cancelDocument(body: FisCancelDocumentRequest): Promise<FisCancelDocumentResponse> {\n const {data} = await http.post<FisCancelDocumentResponse>(\n `/documents/${body.document_uid}/cancel`,\n body\n );\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Folios / series\n // -----------------------------------------------------------------------\n async reserveFolio(body: FisReserveFolioRequest): Promise<FisReserveFolioResponse> {\n const {data} = await http.post<FisReserveFolioResponse>(\"/folios/reserve\", body);\n return data;\n },\n\n async consumeFolio(body: FisConsumeFolioRequest): Promise<FisConsumeFolioResponse> {\n const {data} = await http.post<FisConsumeFolioResponse>(\"/folios/consume\", body);\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Queries / detail\n // -----------------------------------------------------------------------\n async queryDocuments(body: FisDocumentsQueryRequest): Promise<FisDocumentsQueryResponse> {\n const {data} = await http.post<FisDocumentsQueryResponse>(\"/documents/query\", body);\n return data;\n },\n\n async getDocumentByUid(uid: UID): Promise<FisDocumentResponse> {\n const {data} = await http.get<FisDocumentResponse>(`/documents/${uid}`);\n return data;\n },\n\n async getSnapshotByUid(uid: UID): Promise<FisSnapshotResponse> {\n const {data} = await http.get<FisSnapshotResponse>(`/snapshots/${uid}`);\n return data;\n },\n\n async getSubmissionByUid(uid: UID): Promise<FisSubmissionResponse> {\n const {data} = await http.get<FisSubmissionResponse>(`/submissions/${uid}`);\n return data;\n },\n\n async getStatusEventsByDocumentUid(documentUid: UID): Promise<FisStatusEventsResponse> {\n const {data} = await http.get<FisStatusEventsResponse>(\n `/documents/${documentUid}/status-events`\n );\n return data;\n },\n\n async retrySubmission(body: FisSubmissionRetryRequest): Promise<FisSubmissionRetryResponse> {\n const {data} = await http.post<FisSubmissionRetryResponse>(\"/submissions/retry\", body);\n return data;\n },\n };\n}\n","// packages/sdk/src/clients/mediaClient.ts\nimport type {MediaFileRef, MediaFilesRefsResponse} from \"@innvoid/getmarket-contracts\";\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\n\nexport function createMediaClient() {\n const env = readServiceEnv(\"MEDIA\", {apiPrefix: \"/internal/v1\"});\n\n const files = createBulkRefsClient<MediaFileRef>({\n namespace: \"media:file\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/files\",\n });\n\n return {\n filesRefs: (uids: string[], opts?: any) =>\n files.bulkRefs(uids, opts) as Promise<MediaFilesRefsResponse>,\n };\n}\n","// packages/sdk/src/clients/mkpClient.ts\nimport type {\n MkpPublicationRef,\n MkpPublicationsRefsResponse,\n MkpEventRef,\n MkpEventsRefsResponse,\n MkpPromotionRef,\n MkpPromotionsRefsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\n\nexport function createMkpClient() {\n const env = readServiceEnv(\"MKP\", {apiPrefix: \"/internal/v1\"});\n\n const publications = createBulkRefsClient<MkpPublicationRef>({\n namespace: \"mkp:publication\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/publications\",\n });\n\n const events = createBulkRefsClient<MkpEventRef>({\n namespace: \"mkp:event\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/events\",\n });\n\n const promotions = createBulkRefsClient<MkpPromotionRef>({\n namespace: \"mkp:promotion\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/promotions\",\n });\n\n return {\n publicationsRefs: (uids: string[], opts?: any) =>\n publications.bulkRefs(uids, opts) as Promise<MkpPublicationsRefsResponse>,\n\n eventsRefs: (uids: string[], opts?: any) =>\n events.bulkRefs(uids, opts) as Promise<MkpEventsRefsResponse>,\n\n promotionsRefs: (uids: string[], opts?: any) =>\n promotions.bulkRefs(uids, opts) as Promise<MkpPromotionsRefsResponse>,\n };\n}\n","// packages/sdk/src/clients/payClient.ts\nimport type {\n UID,\n PayCreateIntentRequest,\n PayCreateIntentResponse,\n PayConfirmIntentRequest,\n PayConfirmIntentResponse,\n PayStartAttemptRequest,\n PayStartAttemptResponse,\n PayIntentResponse,\n PayMethodsAvailabilityQuery,\n PayMethodsAvailabilityResponse,\n PayPaymentsQueryRequest,\n PayPaymentsQueryResponse,\n PayAllocationsByTargetRequest,\n PayAllocationsByTargetResponse,\n PayIntentRef,\n PayAttemptRef,\n PayTransactionRef,\n PayRefundRef,\n PayAllocationRef,\n PayProviderAccountRef,\n PayPaymentMethodRef,\n PayIntentsRefsResponse,\n PayAttemptsRefsResponse,\n PayTransactionsRefsResponse,\n PayRefundsRefsResponse,\n PayAllocationsRefsResponse,\n PayProviderAccountsRefsResponse,\n PayPaymentMethodsRefsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\nimport {createHttpClient, type HttpClient} from \"../core\";\n\nexport function createPayClient() {\n const env = readServiceEnv(\"PAY\", {apiPrefix: \"/internal/v1\"});\n\n const http: HttpClient = createHttpClient({\n baseURL: `${env.baseURL}${env.apiPrefix}`,\n timeoutMs: 8000,\n });\n\n const intents = createBulkRefsClient<PayIntentRef>({\n namespace: \"pay:intent\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/intents\",\n });\n\n const attempts = createBulkRefsClient<PayAttemptRef>({\n namespace: \"pay:attempt\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/attempts\",\n });\n\n const transactions = createBulkRefsClient<PayTransactionRef>({\n namespace: \"pay:transaction\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/transactions\",\n });\n\n const refunds = createBulkRefsClient<PayRefundRef>({\n namespace: \"pay:refund\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/refunds\",\n });\n\n const allocations = createBulkRefsClient<PayAllocationRef>({\n namespace: \"pay:allocation\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/allocations\",\n });\n\n const providerAccounts = createBulkRefsClient<PayProviderAccountRef>({\n namespace: \"pay:provider_account\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/provider-accounts\",\n });\n\n const paymentMethods = createBulkRefsClient<PayPaymentMethodRef>({\n namespace: \"pay:payment_method\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/payment-methods\",\n });\n\n return {\n // -----------------------------------------------------------------------\n // Payment intents\n // -----------------------------------------------------------------------\n async createIntent(body: PayCreateIntentRequest): Promise<PayCreateIntentResponse> {\n const {data} = await http.post<PayCreateIntentResponse>(\"/payment-intents\", body);\n return data;\n },\n\n async getIntentByUid(uid: UID): Promise<PayIntentResponse> {\n const {data} = await http.get<PayIntentResponse>(`/payment-intents/${uid}`);\n return data;\n },\n\n async confirmIntent(body: PayConfirmIntentRequest): Promise<PayConfirmIntentResponse> {\n const {data} = await http.post<PayConfirmIntentResponse>(\n `/payment-intents/${body.intent_uid}/confirm`,\n body\n );\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Attempts\n // -----------------------------------------------------------------------\n async startAttempt(body: PayStartAttemptRequest): Promise<PayStartAttemptResponse> {\n const {data} = await http.post<PayStartAttemptResponse>(\"/attempts\", body);\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Methods / availability\n // -----------------------------------------------------------------------\n async getAvailableMethods(\n params: PayMethodsAvailabilityQuery\n ): Promise<PayMethodsAvailabilityResponse> {\n const {data} = await http.get<PayMethodsAvailabilityResponse>(\"/methods/available\", {\n params,\n });\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Queries / allocations\n // -----------------------------------------------------------------------\n async queryPayments(body: PayPaymentsQueryRequest): Promise<PayPaymentsQueryResponse> {\n const {data} = await http.post<PayPaymentsQueryResponse>(\"/payments/query\", body);\n return data;\n },\n\n async getAllocationsByTarget(\n body: PayAllocationsByTargetRequest\n ): Promise<PayAllocationsByTargetResponse> {\n const {data} = await http.post<PayAllocationsByTargetResponse>(\n \"/allocations/by-target\",\n body\n );\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Bulk refs\n // -----------------------------------------------------------------------\n intentsRefs: (uids: string[], opts?: any) =>\n intents.bulkRefs(uids, opts) as Promise<PayIntentsRefsResponse>,\n\n attemptsRefs: (uids: string[], opts?: any) =>\n attempts.bulkRefs(uids, opts) as Promise<PayAttemptsRefsResponse>,\n\n transactionsRefs: (uids: string[], opts?: any) =>\n transactions.bulkRefs(uids, opts) as Promise<PayTransactionsRefsResponse>,\n\n refundsRefs: (uids: string[], opts?: any) =>\n refunds.bulkRefs(uids, opts) as Promise<PayRefundsRefsResponse>,\n\n allocationsRefs: (uids: string[], opts?: any) =>\n allocations.bulkRefs(uids, opts) as Promise<PayAllocationsRefsResponse>,\n\n providerAccountsRefs: (uids: string[], opts?: any) =>\n providerAccounts.bulkRefs(uids, opts) as Promise<PayProviderAccountsRefsResponse>,\n\n paymentMethodsRefs: (uids: string[], opts?: any) =>\n paymentMethods.bulkRefs(uids, opts) as Promise<PayPaymentMethodsRefsResponse>,\n };\n}\n"],"mappings":"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","names":[]}