@sereel/sdk 0.2.3 → 0.2.5

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.cjs CHANGED
@@ -299,7 +299,7 @@ function isRuleSummary(value, ctx, path) {
299
299
  );
300
300
  return true;
301
301
  }
302
- function isTrexClaimTopic(value, ctx, path) {
302
+ function isClaimTopic(value, ctx, path) {
303
303
  const v = asRecord(value);
304
304
  if (!ctx.check(v !== void 0, path, "object", value)) return false;
305
305
  ctx.check(
@@ -384,6 +384,91 @@ function isNativeCurrency(value, ctx, path) {
384
384
  );
385
385
  return true;
386
386
  }
387
+ function isKycTierLimits(value, ctx, path) {
388
+ const v = asRecord(value);
389
+ if (!ctx.check(v !== void 0, path, "object", value)) return false;
390
+ ctx.check(
391
+ isFiniteNumber(v.daily_investment_limit_usd),
392
+ `${path}.daily_investment_limit_usd`,
393
+ "finite number",
394
+ v.daily_investment_limit_usd
395
+ );
396
+ ctx.check(
397
+ isFiniteNumber(v.monthly_investment_limit_usd),
398
+ `${path}.monthly_investment_limit_usd`,
399
+ "finite number",
400
+ v.monthly_investment_limit_usd
401
+ );
402
+ return true;
403
+ }
404
+ function isKycTierVerification(value, ctx, path) {
405
+ const v = asRecord(value);
406
+ if (!ctx.check(v !== void 0, path, "object", value)) return false;
407
+ ctx.check(
408
+ isBoolean(v.identity_verified),
409
+ `${path}.identity_verified`,
410
+ "boolean",
411
+ v.identity_verified
412
+ );
413
+ ctx.check(
414
+ isBoolean(v.liveness_verified),
415
+ `${path}.liveness_verified`,
416
+ "boolean",
417
+ v.liveness_verified
418
+ );
419
+ ctx.check(
420
+ isBoolean(v.aml_verified),
421
+ `${path}.aml_verified`,
422
+ "boolean",
423
+ v.aml_verified
424
+ );
425
+ ctx.check(
426
+ isBoolean(v.pep_check),
427
+ `${path}.pep_check`,
428
+ "boolean",
429
+ v.pep_check
430
+ );
431
+ ctx.check(
432
+ isBoolean(v.address_verified),
433
+ `${path}.address_verified`,
434
+ "boolean",
435
+ v.address_verified
436
+ );
437
+ ctx.check(
438
+ isBoolean(v.tax_verified),
439
+ `${path}.tax_verified`,
440
+ "boolean",
441
+ v.tax_verified
442
+ );
443
+ ctx.check(
444
+ isBoolean(v.source_of_funds_verified),
445
+ `${path}.source_of_funds_verified`,
446
+ "boolean",
447
+ v.source_of_funds_verified
448
+ );
449
+ ctx.check(
450
+ isBoolean(v.business_verification),
451
+ `${path}.business_verification`,
452
+ "boolean",
453
+ v.business_verification
454
+ );
455
+ return true;
456
+ }
457
+ function isKycTier(value, ctx, path) {
458
+ const v = asRecord(value);
459
+ if (!ctx.check(v !== void 0, path, "object", value)) return false;
460
+ ctx.check(isString(v.id), `${path}.id`, "string", v.id);
461
+ ctx.check(isString(v.name), `${path}.name`, "string", v.name);
462
+ ctx.check(
463
+ isFiniteNumber(v.claim_id),
464
+ `${path}.claim_id`,
465
+ "finite number",
466
+ v.claim_id
467
+ );
468
+ isKycTierLimits(v.limits, ctx, `${path}.limits`);
469
+ isKycTierVerification(v.verification, ctx, `${path}.verification`);
470
+ return true;
471
+ }
387
472
  function isNetworkDetails(value, ctx, path) {
388
473
  const v = asRecord(value);
389
474
  if (!ctx.check(v !== void 0, path, "object", value)) return false;
@@ -565,6 +650,12 @@ function isBookSummary(value, ctx, path) {
565
650
  );
566
651
  isFundConfig(v.fund_config, ctx, `${path}.fund_config`);
567
652
  isIssuanceStatus(v.status, ctx, `${path}.status`);
653
+ ctx.check(
654
+ isNullableString(v.visibility),
655
+ `${path}.visibility`,
656
+ "string | null",
657
+ v.visibility
658
+ );
568
659
  ctx.check(
569
660
  isNullableString(v.created_at),
570
661
  `${path}.created_at`,
@@ -651,16 +742,16 @@ function isSecurityDetails(value, ctx, path) {
651
742
  isRuleEngineSummary(v.rule_engine, ctx, `${path}.rule_engine`);
652
743
  }
653
744
  isNetworkDetails(v.network, ctx, `${path}.network`);
654
- if (v.trex_claim_topics !== null && v.trex_claim_topics !== void 0) {
745
+ if (v.claim_topics !== null && v.claim_topics !== void 0) {
655
746
  const topicsOk = ctx.check(
656
- Array.isArray(v.trex_claim_topics),
657
- `${path}.trex_claim_topics`,
747
+ Array.isArray(v.claim_topics),
748
+ `${path}.claim_topics`,
658
749
  "array",
659
- v.trex_claim_topics
750
+ v.claim_topics
660
751
  );
661
752
  if (topicsOk) {
662
- v.trex_claim_topics.forEach(
663
- (topic, i) => isTrexClaimTopic(topic, ctx, `${path}.trex_claim_topics[${i}]`)
753
+ v.claim_topics.forEach(
754
+ (topic, i) => isClaimTopic(topic, ctx, `${path}.claim_topics[${i}]`)
664
755
  );
665
756
  }
666
757
  }
@@ -689,10 +780,10 @@ function isSecurityDetails(value, ctx, path) {
689
780
  v.trex_identity_registry_address
690
781
  );
691
782
  ctx.check(
692
- isNullableString(v.trex_claim_topics_registry_address),
693
- `${path}.trex_claim_topics_registry_address`,
783
+ isNullableString(v.claim_topics_registry_address),
784
+ `${path}.claim_topics_registry_address`,
694
785
  "string | null",
695
- v.trex_claim_topics_registry_address
786
+ v.claim_topics_registry_address
696
787
  );
697
788
  ctx.check(
698
789
  isNullableString(v.trex_trusted_issuers_registry_address),
@@ -700,6 +791,18 @@ function isSecurityDetails(value, ctx, path) {
700
791
  "string | null",
701
792
  v.trex_trusted_issuers_registry_address
702
793
  );
794
+ ctx.check(
795
+ isNullableString(v.asset_category),
796
+ `${path}.asset_category`,
797
+ "string | null",
798
+ v.asset_category
799
+ );
800
+ ctx.check(
801
+ typeof v.apy === "number" || v.apy === null,
802
+ `${path}.apy`,
803
+ "number | null",
804
+ v.apy
805
+ );
703
806
  return true;
704
807
  }
705
808
  function buildValidationError(value, failures) {
@@ -771,6 +874,33 @@ function validateSdkNetworksResponse(value) {
771
874
  }
772
875
  return value;
773
876
  }
877
+ function validateSdkKycTiersResponse(value) {
878
+ const ctx = new ValidationContext();
879
+ ctx.check(isRecord(value), "<root>", "object", value);
880
+ if (isRecord(value)) {
881
+ ctx.check(
882
+ isFiniteNumber(value.count),
883
+ "<root>.count",
884
+ "finite number",
885
+ value.count
886
+ );
887
+ const dataOk = ctx.check(
888
+ isRecord(value.data),
889
+ "<root>.data",
890
+ "object",
891
+ value.data
892
+ );
893
+ if (dataOk) {
894
+ for (const [key, tier] of Object.entries(value.data)) {
895
+ isKycTier(tier, ctx, `<root>.data["${key}"]`);
896
+ }
897
+ }
898
+ }
899
+ if (ctx.failures.length > 0) {
900
+ throw buildValidationError(value, ctx.failures);
901
+ }
902
+ return value;
903
+ }
774
904
 
775
905
  // src/client.ts
776
906
  function createClient(config) {
@@ -805,6 +935,9 @@ function createClient(config) {
805
935
  },
806
936
  getNetworks() {
807
937
  return requestJson(resolved, "/sdk/networks", validateSdkNetworksResponse);
938
+ },
939
+ getKycTiers() {
940
+ return requestJson(resolved, "/sdk/kyc_tiers", validateSdkKycTiersResponse);
808
941
  }
809
942
  };
810
943
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/config.ts","../src/transport.ts","../src/validation.ts","../src/client.ts"],"sourcesContent":["export { createClient } from \"./client\";\nexport { ENVIRONMENT_BASE_URLS, resolveBaseUrl } from \"./config\";\nexport {\n ForbiddenError,\n HttpError,\n InvalidConfigurationError,\n MalformedResponseError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n ServerError,\n SereelSdkError,\n TimeoutError,\n UnauthorizedError,\n} from \"./errors\";\nexport type {\n ClientConfig,\n IssuanceStatus,\n NativeCurrency,\n NetworkDetails,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkBookSummary,\n SdkFundConfig,\n SdkIssuerSummary,\n SdkNetworksResponse,\n SdkRuleEngineSummary,\n SdkRuleSummary,\n SdkSecurityDetails,\n SdkTrexClaimTopic,\n SdkTokenPartner,\n SdkTokenProspectus,\n SereelEnvironment,\n SereelSdkClient,\n} from \"./types\";\n","export interface SereelSdkErrorOptions {\n status?: number;\n code?: string;\n cause?: unknown;\n details?: unknown;\n}\n\nexport class SereelSdkError extends Error {\n readonly status: number | undefined;\n readonly code: string | undefined;\n readonly details?: unknown;\n\n constructor(message: string, options: SereelSdkErrorOptions = {}) {\n super(message, options.cause ? { cause: options.cause } : undefined);\n this.name = new.target.name;\n this.status = options.status;\n this.code = options.code;\n this.details = options.details;\n }\n}\n\nexport class InvalidConfigurationError extends SereelSdkError {}\n\nexport class NetworkError extends SereelSdkError {}\n\nexport class HttpError extends SereelSdkError {}\n\nexport class UnauthorizedError extends HttpError {}\n\nexport class ForbiddenError extends HttpError {}\n\nexport class NotFoundError extends HttpError {}\n\nexport class RateLimitError extends HttpError {}\n\nexport class ServerError extends HttpError {}\n\nexport class TimeoutError extends SereelSdkError {}\n\nexport class MalformedResponseError extends SereelSdkError {}\n","import { InvalidConfigurationError } from \"./errors\";\nimport type { ClientConfig, SereelEnvironment } from \"./types\";\n\nexport const ENVIRONMENT_BASE_URLS: Record<SereelEnvironment, string> = {\n devnet: \"https://api-lazer.sereel.com\",\n testnet: \"https://api-lazer-v2.sereel.com\",\n mainnet: \"https://cahokia.sereel.com\",\n};\n\nexport interface ResolvedClientConfig {\n environment: SereelEnvironment;\n apiKey: string;\n timeoutMs: number;\n baseUrl: string;\n fetch: typeof fetch;\n}\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nfunction getFetchImplementation(\n providedFetch: ClientConfig[\"fetch\"],\n): typeof fetch {\n if (providedFetch) {\n return providedFetch;\n }\n\n if (typeof globalThis.fetch === \"function\") {\n return globalThis.fetch.bind(globalThis);\n }\n\n throw new InvalidConfigurationError(\n \"No fetch implementation is available. Provide config.fetch in this runtime.\",\n );\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n const trimmed = baseUrl.trim();\n\n if (!trimmed) {\n throw new InvalidConfigurationError(\"baseUrl must not be empty when provided.\");\n }\n\n try {\n return new URL(trimmed).toString().replace(/\\/+$/, \"\");\n } catch (cause) {\n throw new InvalidConfigurationError(\"baseUrl must be a valid absolute URL.\", {\n cause,\n });\n }\n}\n\nexport function resolveBaseUrl(\n environment: SereelEnvironment,\n baseUrl?: string,\n): string {\n if (baseUrl) {\n return normalizeBaseUrl(baseUrl);\n }\n\n return ENVIRONMENT_BASE_URLS[environment];\n}\n\nexport function resolveClientConfig(config: ClientConfig): ResolvedClientConfig {\n const apiKey = config.apiKey.trim();\n\n if (!apiKey) {\n throw new InvalidConfigurationError(\"apiKey must not be empty.\");\n }\n\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new InvalidConfigurationError(\"timeoutMs must be a positive number.\");\n }\n\n return {\n environment: config.environment,\n apiKey,\n timeoutMs,\n baseUrl: resolveBaseUrl(config.environment, config.baseUrl),\n fetch: getFetchImplementation(config.fetch),\n };\n}\n","import {\n ForbiddenError,\n HttpError,\n MalformedResponseError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n ServerError,\n TimeoutError,\n UnauthorizedError,\n} from \"./errors\";\nimport type { ResolvedClientConfig } from \"./config\";\n\ninterface ApiErrorBody {\n error?: string;\n message?: string;\n}\n\nfunction createTimeoutSignal(timeoutMs: number): {\n signal: AbortSignal;\n cleanup: () => void;\n} {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n\n return {\n signal: controller.signal,\n cleanup: () => clearTimeout(timeout),\n };\n}\n\nasync function parseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text) as unknown;\n } catch (cause) {\n throw new MalformedResponseError(\"Received a non-JSON response body.\", {\n cause,\n status: response.status,\n details: text,\n });\n }\n}\n\nfunction getErrorMessage(status: number, body: unknown): string {\n if (body && typeof body === \"object\") {\n const apiError = body as ApiErrorBody;\n if (typeof apiError.error === \"string\" && apiError.error.trim()) {\n return apiError.error;\n }\n if (typeof apiError.message === \"string\" && apiError.message.trim()) {\n return apiError.message;\n }\n }\n\n return `Request failed with status ${status}.`;\n}\n\nfunction toHttpError(status: number, body: unknown): HttpError {\n const message = getErrorMessage(status, body);\n const options = { status, details: body };\n\n if (status === 401) {\n return new UnauthorizedError(message, options);\n }\n if (status === 403) {\n return new ForbiddenError(message, options);\n }\n if (status === 404) {\n return new NotFoundError(message, options);\n }\n if (status === 429) {\n return new RateLimitError(message, options);\n }\n if (status >= 500) {\n return new ServerError(message, options);\n }\n\n return new HttpError(message, options);\n}\n\nfunction isAbortError(error: unknown): error is Error {\n return (\n error instanceof Error &&\n (error.name === \"AbortError\" || error.constructor.name === \"AbortError\")\n );\n}\n\nfunction wrapNetworkError(error: unknown): Error {\n if (error instanceof NetworkError) {\n return error;\n }\n\n const message =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : \"Network request failed.\";\n\n return new NetworkError(message, { cause: error });\n}\n\nexport async function requestJson<T>(\n config: ResolvedClientConfig,\n path: string,\n validate: (value: unknown) => T,\n): Promise<T> {\n const { signal, cleanup } = createTimeoutSignal(config.timeoutMs);\n\n try {\n const response = await config.fetch(`${config.baseUrl}${path}`, {\n method: \"GET\",\n signal,\n headers: {\n accept: \"application/json\",\n \"x-api-key\": config.apiKey,\n },\n });\n\n const body = await parseBody(response);\n if (!response.ok) {\n throw toHttpError(response.status, body);\n }\n\n return validate(body);\n } catch (error) {\n if (\n error instanceof HttpError ||\n error instanceof MalformedResponseError ||\n error instanceof NetworkError\n ) {\n throw error;\n }\n\n if (isAbortError(error)) {\n throw new TimeoutError(\n `Request timed out after ${config.timeoutMs}ms.`,\n { cause: error },\n );\n }\n\n throw wrapNetworkError(error);\n } finally {\n cleanup();\n }\n}\n","import { MalformedResponseError } from \"./errors\";\nimport type {\n NativeCurrency,\n NetworkDetails,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkBookSummary,\n SdkFundConfig,\n SdkIssuerSummary,\n SdkRuleEngineSummary,\n SdkRuleSummary,\n SdkSecurityDetails,\n SdkTokenPartner,\n SdkTokenProspectus,\n} from \"./types\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nfunction isNullableString(value: unknown): value is string | null {\n return typeof value === \"string\" || value === null;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n\ninterface ValidationFailure {\n path: string;\n expected: string;\n received: unknown;\n}\n\nclass ValidationContext {\n failures: ValidationFailure[] = [];\n\n check(\n condition: boolean,\n path: string,\n expected: string,\n received: unknown,\n ): boolean {\n if (!condition) {\n this.failures.push({ path, expected, received });\n }\n return condition;\n }\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isProspectus(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkTokenProspectus {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.url), `${path}.url`, \"string\", v!.url);\n return true;\n}\n\nfunction isTokenPartner(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkTokenPartner {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.partner_name),\n `${path}.partner_name`,\n \"string\",\n v!.partner_name,\n );\n ctx.check(\n isString(v!.partner_logo),\n `${path}.partner_logo`,\n \"string\",\n v!.partner_logo,\n );\n ctx.check(\n isString(v!.partner_role),\n `${path}.partner_role`,\n \"string\",\n v!.partner_role,\n );\n return true;\n}\n\nfunction isRuleSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkRuleSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.rule_address),\n `${path}.rule_address`,\n \"string\",\n v!.rule_address,\n );\n ctx.check(\n isString(v!.rule_type),\n `${path}.rule_type`,\n \"string\",\n v!.rule_type,\n );\n return true;\n}\n\nfunction isTrexClaimTopic(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is import(\"./types\").SdkTrexClaimTopic {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isFiniteNumber(v!.value),\n `${path}.value`,\n \"finite number\",\n v!.value,\n );\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.label), `${path}.label`, \"string\", v!.label);\n return true;\n}\n\nfunction isRuleEngineSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkRuleEngineSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isString(v!.rule_engine_address),\n `${path}.rule_engine_address`,\n \"string\",\n v!.rule_engine_address,\n );\n const rulesOk = ctx.check(\n Array.isArray(v!.rules),\n `${path}.rules`,\n \"array\",\n v!.rules,\n );\n if (rulesOk) {\n (v!.rules as unknown[]).forEach((rule, i) =>\n isRuleSummary(rule, ctx, `${path}.rules[${i}]`),\n );\n }\n return true;\n}\n\nfunction isIssuerSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkIssuerSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.id), `${path}.id`, \"string\", v!.id);\n ctx.check(\n isString(v!.legal_name),\n `${path}.legal_name`,\n \"string\",\n v!.legal_name,\n );\n ctx.check(\n isNullableString(v!.display_name),\n `${path}.display_name`,\n \"string | null\",\n v!.display_name,\n );\n ctx.check(\n isString(v!.jurisdiction),\n `${path}.jurisdiction`,\n \"string\",\n v!.jurisdiction,\n );\n ctx.check(\n isNullableString(v!.website),\n `${path}.website`,\n \"string | null\",\n v!.website,\n );\n ctx.check(\n isNullableString(v!.logo_url),\n `${path}.logo_url`,\n \"string | null\",\n v!.logo_url,\n );\n return true;\n}\n\nfunction isNativeCurrency(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is NativeCurrency {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.symbol), `${path}.symbol`, \"string\", v!.symbol);\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isFiniteNumber(v!.decimals),\n `${path}.decimals`,\n \"finite number\",\n v!.decimals,\n );\n return true;\n}\n\nfunction isNetworkDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is NetworkDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.family), `${path}.family`, \"string\", v!.family);\n ctx.check(\n isFiniteNumber(v!.chain_id) || v!.chain_id === null,\n `${path}.chain_id`,\n \"number | null\",\n v!.chain_id,\n );\n isNativeCurrency(v!.native_currency, ctx, `${path}.native_currency`);\n ctx.check(\n isString(v!.rpc_endpoint),\n `${path}.rpc_endpoint`,\n \"string\",\n v!.rpc_endpoint,\n );\n const explorerOk = ctx.check(\n Array.isArray(v!.explorer_urls),\n `${path}.explorer_urls`,\n \"string[]\",\n v!.explorer_urls,\n );\n if (explorerOk) {\n (v!.explorer_urls as unknown[]).forEach((url, i) =>\n ctx.check(\n isString(url),\n `${path}.explorer_urls[${i}]`,\n \"string\",\n url,\n ),\n );\n }\n ctx.check(\n isBoolean(v!.is_testnet),\n `${path}.is_testnet`,\n \"boolean\",\n v!.is_testnet,\n );\n return true;\n}\n\nfunction isFundConfig(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkFundConfig {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.nav_staleness_threshold),\n `${path}.nav_staleness_threshold`,\n \"string\",\n v!.nav_staleness_threshold,\n );\n ctx.check(\n isString(v!.min_subscription),\n `${path}.min_subscription`,\n \"string\",\n v!.min_subscription,\n );\n ctx.check(\n isString(v!.min_redemption),\n `${path}.min_redemption`,\n \"string\",\n v!.min_redemption,\n );\n ctx.check(\n isString(v!.entry_fee_bps),\n `${path}.entry_fee_bps`,\n \"string\",\n v!.entry_fee_bps,\n );\n ctx.check(\n isString(v!.exit_fee_bps),\n `${path}.exit_fee_bps`,\n \"string\",\n v!.exit_fee_bps,\n );\n ctx.check(\n isString(v!.redemption_gate_bps),\n `${path}.redemption_gate_bps`,\n \"string\",\n v!.redemption_gate_bps,\n );\n ctx.check(\n isString(v!.management_fee_bps_per_annum),\n `${path}.management_fee_bps_per_annum`,\n \"string\",\n v!.management_fee_bps_per_annum,\n );\n return true;\n}\n\nconst ISSUANCE_STATUSES = new Set([\n \"OPEN\",\n \"CLOSED\",\n \"FINALIZED\",\n \"SETTLED\",\n \"CANCELLED\",\n]);\n\nfunction isIssuanceStatus(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkBookSummary[\"status\"] {\n return ctx.check(\n isString(value) && ISSUANCE_STATUSES.has(value),\n path,\n `one of ${[...ISSUANCE_STATUSES].join(\", \")}`,\n value,\n );\n}\n\nfunction isBookSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkBookSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.id) || v!.id === null,\n `${path}.id`,\n \"string | null\",\n v!.id,\n );\n ctx.check(\n isString(v!.organization_id),\n `${path}.organization_id`,\n \"string\",\n v!.organization_id,\n );\n ctx.check(\n isNullableString(v!.name),\n `${path}.name`,\n \"string | null\",\n v!.name,\n );\n ctx.check(\n isNullableString(v!.book_type),\n `${path}.book_type`,\n \"string | null\",\n v!.book_type,\n );\n ctx.check(\n isString(v!.token_address),\n `${path}.token_address`,\n \"string\",\n v!.token_address,\n );\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(\n isString(v!.settlement_token),\n `${path}.settlement_token`,\n \"string\",\n v!.settlement_token,\n );\n ctx.check(\n isString(v!.order_book_address),\n `${path}.order_book_address`,\n \"string\",\n v!.order_book_address,\n );\n ctx.check(\n isString(v!.fund_address),\n `${path}.fund_address`,\n \"string\",\n v!.fund_address,\n );\n ctx.check(\n isString(v!.fund_id),\n `${path}.fund_id`,\n \"string\",\n v!.fund_id,\n );\n ctx.check(\n isString(v!.initial_nav),\n `${path}.initial_nav`,\n \"string\",\n v!.initial_nav,\n );\n isFundConfig(v!.fund_config, ctx, `${path}.fund_config`);\n isIssuanceStatus(v!.status, ctx, `${path}.status`);\n ctx.check(\n isNullableString(v!.created_at),\n `${path}.created_at`,\n \"string | null\",\n v!.created_at,\n );\n return true;\n}\n\nfunction isSecurityDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkSecurityDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n\n ctx.check(\n isString(v!.token_address),\n `${path}.token_address`,\n \"string\",\n v!.token_address,\n );\n ctx.check(\n isString(v!.token_name),\n `${path}.token_name`,\n \"string\",\n v!.token_name,\n );\n ctx.check(\n isString(v!.token_symbol),\n `${path}.token_symbol`,\n \"string\",\n v!.token_symbol,\n );\n ctx.check(\n isString(v!.token_decimal),\n `${path}.token_decimal`,\n \"string\",\n v!.token_decimal,\n );\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(\n isString(v!.token_type),\n `${path}.token_type`,\n \"string\",\n v!.token_type,\n );\n ctx.check(isString(v!.admin), `${path}.admin`, \"string\", v!.admin);\n ctx.check(\n isNullableString(v!.icon_url),\n `${path}.icon_url`,\n \"string | null\",\n v!.icon_url,\n );\n ctx.check(\n isNullableString(v!.created_at),\n `${path}.created_at`,\n \"string | null\",\n v!.created_at,\n );\n\n if (v!.prospectus !== null && v!.prospectus !== undefined) {\n isProspectus(v!.prospectus, ctx, `${path}.prospectus`);\n }\n\n if (v!.issuer !== null && v!.issuer !== undefined) {\n isIssuerSummary(v!.issuer, ctx, `${path}.issuer`);\n }\n\n if (v!.book !== null && v!.book !== undefined) {\n isBookSummary(v!.book, ctx, `${path}.book`);\n }\n\n if (v!.partners !== null && v!.partners !== undefined) {\n const partnersOk = ctx.check(\n Array.isArray(v!.partners),\n `${path}.partners`,\n \"array\",\n v!.partners,\n );\n if (partnersOk) {\n (v!.partners as unknown[]).forEach((partner, i) =>\n isTokenPartner(partner, ctx, `${path}.partners[${i}]`),\n );\n }\n }\n\n if (v!.rule_engine !== null && v!.rule_engine !== undefined) {\n isRuleEngineSummary(v!.rule_engine, ctx, `${path}.rule_engine`);\n }\n\n isNetworkDetails(v!.network, ctx, `${path}.network`);\n\n if (v!.trex_claim_topics !== null && v!.trex_claim_topics !== undefined) {\n const topicsOk = ctx.check(\n Array.isArray(v!.trex_claim_topics),\n `${path}.trex_claim_topics`,\n \"array\",\n v!.trex_claim_topics,\n );\n if (topicsOk) {\n (v!.trex_claim_topics as unknown[]).forEach((topic, i) =>\n isTrexClaimTopic(topic, ctx, `${path}.trex_claim_topics[${i}]`),\n );\n }\n }\n\n if (v!.trex_issuers !== null && v!.trex_issuers !== undefined) {\n const issuersOk = ctx.check(\n Array.isArray(v!.trex_issuers),\n `${path}.trex_issuers`,\n \"string[]\",\n v!.trex_issuers,\n );\n if (issuersOk) {\n (v!.trex_issuers as unknown[]).forEach((issuer, i) =>\n ctx.check(\n isString(issuer),\n `${path}.trex_issuers[${i}]`,\n \"string\",\n issuer,\n ),\n );\n }\n }\n\n ctx.check(\n isNullableString(v!.trex_identity_registry_address),\n `${path}.trex_identity_registry_address`,\n \"string | null\",\n v!.trex_identity_registry_address,\n );\n ctx.check(\n isNullableString(v!.trex_claim_topics_registry_address),\n `${path}.trex_claim_topics_registry_address`,\n \"string | null\",\n v!.trex_claim_topics_registry_address,\n );\n ctx.check(\n isNullableString(v!.trex_trusted_issuers_registry_address),\n `${path}.trex_trusted_issuers_registry_address`,\n \"string | null\",\n v!.trex_trusted_issuers_registry_address,\n );\n\n return true;\n}\n\nfunction buildValidationError(\n value: unknown,\n failures: ValidationFailure[],\n): MalformedResponseError {\n const summary = failures\n .slice(0, 5)\n .map(\n (f) =>\n `${f.path}: expected ${f.expected}, got ${JSON.stringify(f.received)}`,\n )\n .join(\"; \");\n\n const message =\n failures.length > 5\n ? `Received an invalid SDK response shape (${failures.length} issues). First 5: ${summary}`\n : `Received an invalid SDK response shape. ${summary}`;\n\n return new MalformedResponseError(message, {\n details: { failures: failures.slice(0, 20), value },\n });\n}\n\nexport function validateSdkAssetsResponse(value: unknown): SdkAssetsResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(Array.isArray(value.data), \"<root>.data\", \"array\", value.data);\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n if (Array.isArray(value.data)) {\n (value.data as unknown[]).forEach((item, i) =>\n isSecurityDetails(item, ctx, `<root>.data[${i}]`),\n );\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as SdkAssetsResponse;\n}\n\nexport function validateSdkAssetResponse(value: unknown): SdkAssetResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n isSecurityDetails(value.data, ctx, \"<root>.data\");\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as SdkAssetResponse;\n}\n\nexport function validateSdkNetworksResponse(value: unknown): import(\"./types\").SdkNetworksResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n const dataOk = ctx.check(\n isRecord(value.data),\n \"<root>.data\",\n \"object\",\n value.data,\n );\n if (dataOk) {\n for (const [key, network] of Object.entries(value.data as Record<string, unknown>)) {\n isNetworkDetails(network, ctx, `<root>.data[\"${key}\"]`);\n }\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as import(\"./types\").SdkNetworksResponse;\n}\n","import { resolveClientConfig } from \"./config\";\nimport { InvalidConfigurationError } from \"./errors\";\nimport { requestJson } from \"./transport\";\nimport type {\n ClientConfig,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkNetworksResponse,\n SereelSdkClient,\n} from \"./types\";\nimport {\n validateSdkAssetResponse,\n validateSdkAssetsResponse,\n validateSdkNetworksResponse,\n} from \"./validation\";\n\nexport function createClient(config: ClientConfig): SereelSdkClient {\n const resolved = resolveClientConfig(config);\n\n return {\n getAssets(): Promise<SdkAssetsResponse> {\n return requestJson(resolved, \"/sdk/assets\", validateSdkAssetsResponse);\n },\n\n getAssetByTokenAddress(tokenAddress: string): Promise<SdkAssetResponse> {\n const trimmedTokenAddress = tokenAddress.trim();\n if (!trimmedTokenAddress) {\n throw new InvalidConfigurationError(\n \"tokenAddress must not be empty.\",\n );\n }\n\n return requestJson(\n resolved,\n `/sdk/assets/${encodeURIComponent(trimmedTokenAddress)}`,\n validateSdkAssetResponse,\n );\n },\n\n getAssetsByIssuer(issuerId: string): Promise<SdkAssetsResponse> {\n const trimmedIssuerId = issuerId.trim();\n if (!trimmedIssuerId) {\n throw new InvalidConfigurationError(\"issuerId must not be empty.\");\n }\n\n return requestJson(\n resolved,\n `/sdk/assets/issuer/${encodeURIComponent(trimmedIssuerId)}`,\n validateSdkAssetsResponse,\n );\n },\n\n getNetworks(): Promise<SdkNetworksResponse> {\n return requestJson(resolved, \"/sdk/networks\", validateSdkNetworksResponse);\n },\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/config.ts","../src/transport.ts","../src/validation.ts","../src/client.ts"],"sourcesContent":["export { createClient } from \"./client\";\nexport { ENVIRONMENT_BASE_URLS, resolveBaseUrl } from \"./config\";\nexport {\n ForbiddenError,\n HttpError,\n InvalidConfigurationError,\n MalformedResponseError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n ServerError,\n SereelSdkError,\n TimeoutError,\n UnauthorizedError,\n} from \"./errors\";\nexport type {\n ClientConfig,\n IssuanceStatus,\n KycTier,\n KycTierLimits,\n KycTierVerification,\n NativeCurrency,\n NetworkDetails,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkBookSummary,\n SdkFundConfig,\n SdkIssuerSummary,\n SdkKycTiersResponse,\n SdkNetworksResponse,\n SdkRuleEngineSummary,\n SdkRuleSummary,\n SdkSecurityDetails,\n SdkClaimTopic,\n SdkTokenPartner,\n SdkTokenProspectus,\n SereelEnvironment,\n SereelSdkClient,\n} from \"./types\";\n","export interface SereelSdkErrorOptions {\n status?: number;\n code?: string;\n cause?: unknown;\n details?: unknown;\n}\n\nexport class SereelSdkError extends Error {\n readonly status: number | undefined;\n readonly code: string | undefined;\n readonly details?: unknown;\n\n constructor(message: string, options: SereelSdkErrorOptions = {}) {\n super(message, options.cause ? { cause: options.cause } : undefined);\n this.name = new.target.name;\n this.status = options.status;\n this.code = options.code;\n this.details = options.details;\n }\n}\n\nexport class InvalidConfigurationError extends SereelSdkError {}\n\nexport class NetworkError extends SereelSdkError {}\n\nexport class HttpError extends SereelSdkError {}\n\nexport class UnauthorizedError extends HttpError {}\n\nexport class ForbiddenError extends HttpError {}\n\nexport class NotFoundError extends HttpError {}\n\nexport class RateLimitError extends HttpError {}\n\nexport class ServerError extends HttpError {}\n\nexport class TimeoutError extends SereelSdkError {}\n\nexport class MalformedResponseError extends SereelSdkError {}\n","import { InvalidConfigurationError } from \"./errors\";\nimport type { ClientConfig, SereelEnvironment } from \"./types\";\n\nexport const ENVIRONMENT_BASE_URLS: Record<SereelEnvironment, string> = {\n devnet: \"https://api-lazer.sereel.com\",\n testnet: \"https://api-lazer-v2.sereel.com\",\n mainnet: \"https://cahokia.sereel.com\",\n};\n\nexport interface ResolvedClientConfig {\n environment: SereelEnvironment;\n apiKey: string;\n timeoutMs: number;\n baseUrl: string;\n fetch: typeof fetch;\n}\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nfunction getFetchImplementation(\n providedFetch: ClientConfig[\"fetch\"],\n): typeof fetch {\n if (providedFetch) {\n return providedFetch;\n }\n\n if (typeof globalThis.fetch === \"function\") {\n return globalThis.fetch.bind(globalThis);\n }\n\n throw new InvalidConfigurationError(\n \"No fetch implementation is available. Provide config.fetch in this runtime.\",\n );\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n const trimmed = baseUrl.trim();\n\n if (!trimmed) {\n throw new InvalidConfigurationError(\"baseUrl must not be empty when provided.\");\n }\n\n try {\n return new URL(trimmed).toString().replace(/\\/+$/, \"\");\n } catch (cause) {\n throw new InvalidConfigurationError(\"baseUrl must be a valid absolute URL.\", {\n cause,\n });\n }\n}\n\nexport function resolveBaseUrl(\n environment: SereelEnvironment,\n baseUrl?: string,\n): string {\n if (baseUrl) {\n return normalizeBaseUrl(baseUrl);\n }\n\n return ENVIRONMENT_BASE_URLS[environment];\n}\n\nexport function resolveClientConfig(config: ClientConfig): ResolvedClientConfig {\n const apiKey = config.apiKey.trim();\n\n if (!apiKey) {\n throw new InvalidConfigurationError(\"apiKey must not be empty.\");\n }\n\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new InvalidConfigurationError(\"timeoutMs must be a positive number.\");\n }\n\n return {\n environment: config.environment,\n apiKey,\n timeoutMs,\n baseUrl: resolveBaseUrl(config.environment, config.baseUrl),\n fetch: getFetchImplementation(config.fetch),\n };\n}\n","import {\n ForbiddenError,\n HttpError,\n MalformedResponseError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n ServerError,\n TimeoutError,\n UnauthorizedError,\n} from \"./errors\";\nimport type { ResolvedClientConfig } from \"./config\";\n\ninterface ApiErrorBody {\n error?: string;\n message?: string;\n}\n\nfunction createTimeoutSignal(timeoutMs: number): {\n signal: AbortSignal;\n cleanup: () => void;\n} {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n\n return {\n signal: controller.signal,\n cleanup: () => clearTimeout(timeout),\n };\n}\n\nasync function parseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text) as unknown;\n } catch (cause) {\n throw new MalformedResponseError(\"Received a non-JSON response body.\", {\n cause,\n status: response.status,\n details: text,\n });\n }\n}\n\nfunction getErrorMessage(status: number, body: unknown): string {\n if (body && typeof body === \"object\") {\n const apiError = body as ApiErrorBody;\n if (typeof apiError.error === \"string\" && apiError.error.trim()) {\n return apiError.error;\n }\n if (typeof apiError.message === \"string\" && apiError.message.trim()) {\n return apiError.message;\n }\n }\n\n return `Request failed with status ${status}.`;\n}\n\nfunction toHttpError(status: number, body: unknown): HttpError {\n const message = getErrorMessage(status, body);\n const options = { status, details: body };\n\n if (status === 401) {\n return new UnauthorizedError(message, options);\n }\n if (status === 403) {\n return new ForbiddenError(message, options);\n }\n if (status === 404) {\n return new NotFoundError(message, options);\n }\n if (status === 429) {\n return new RateLimitError(message, options);\n }\n if (status >= 500) {\n return new ServerError(message, options);\n }\n\n return new HttpError(message, options);\n}\n\nfunction isAbortError(error: unknown): error is Error {\n return (\n error instanceof Error &&\n (error.name === \"AbortError\" || error.constructor.name === \"AbortError\")\n );\n}\n\nfunction wrapNetworkError(error: unknown): Error {\n if (error instanceof NetworkError) {\n return error;\n }\n\n const message =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : \"Network request failed.\";\n\n return new NetworkError(message, { cause: error });\n}\n\nexport async function requestJson<T>(\n config: ResolvedClientConfig,\n path: string,\n validate: (value: unknown) => T,\n): Promise<T> {\n const { signal, cleanup } = createTimeoutSignal(config.timeoutMs);\n\n try {\n const response = await config.fetch(`${config.baseUrl}${path}`, {\n method: \"GET\",\n signal,\n headers: {\n accept: \"application/json\",\n \"x-api-key\": config.apiKey,\n },\n });\n\n const body = await parseBody(response);\n if (!response.ok) {\n throw toHttpError(response.status, body);\n }\n\n return validate(body);\n } catch (error) {\n if (\n error instanceof HttpError ||\n error instanceof MalformedResponseError ||\n error instanceof NetworkError\n ) {\n throw error;\n }\n\n if (isAbortError(error)) {\n throw new TimeoutError(\n `Request timed out after ${config.timeoutMs}ms.`,\n { cause: error },\n );\n }\n\n throw wrapNetworkError(error);\n } finally {\n cleanup();\n }\n}\n","import { MalformedResponseError } from \"./errors\";\nimport type {\n KycTier,\n KycTierLimits,\n KycTierVerification,\n NativeCurrency,\n NetworkDetails,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkBookSummary,\n SdkFundConfig,\n SdkIssuerSummary,\n SdkRuleEngineSummary,\n SdkRuleSummary,\n SdkSecurityDetails,\n SdkTokenPartner,\n SdkTokenProspectus,\n} from \"./types\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nfunction isNullableString(value: unknown): value is string | null {\n return typeof value === \"string\" || value === null;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n\ninterface ValidationFailure {\n path: string;\n expected: string;\n received: unknown;\n}\n\nclass ValidationContext {\n failures: ValidationFailure[] = [];\n\n check(\n condition: boolean,\n path: string,\n expected: string,\n received: unknown,\n ): boolean {\n if (!condition) {\n this.failures.push({ path, expected, received });\n }\n return condition;\n }\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isProspectus(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkTokenProspectus {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.url), `${path}.url`, \"string\", v!.url);\n return true;\n}\n\nfunction isTokenPartner(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkTokenPartner {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.partner_name),\n `${path}.partner_name`,\n \"string\",\n v!.partner_name,\n );\n ctx.check(\n isString(v!.partner_logo),\n `${path}.partner_logo`,\n \"string\",\n v!.partner_logo,\n );\n ctx.check(\n isString(v!.partner_role),\n `${path}.partner_role`,\n \"string\",\n v!.partner_role,\n );\n return true;\n}\n\nfunction isRuleSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkRuleSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.rule_address),\n `${path}.rule_address`,\n \"string\",\n v!.rule_address,\n );\n ctx.check(\n isString(v!.rule_type),\n `${path}.rule_type`,\n \"string\",\n v!.rule_type,\n );\n return true;\n}\n\nfunction isClaimTopic(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is import(\"./types\").SdkClaimTopic {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isFiniteNumber(v!.value),\n `${path}.value`,\n \"finite number\",\n v!.value,\n );\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.label), `${path}.label`, \"string\", v!.label);\n return true;\n}\n\nfunction isRuleEngineSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkRuleEngineSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isString(v!.rule_engine_address),\n `${path}.rule_engine_address`,\n \"string\",\n v!.rule_engine_address,\n );\n const rulesOk = ctx.check(\n Array.isArray(v!.rules),\n `${path}.rules`,\n \"array\",\n v!.rules,\n );\n if (rulesOk) {\n (v!.rules as unknown[]).forEach((rule, i) =>\n isRuleSummary(rule, ctx, `${path}.rules[${i}]`),\n );\n }\n return true;\n}\n\nfunction isIssuerSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkIssuerSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.id), `${path}.id`, \"string\", v!.id);\n ctx.check(\n isString(v!.legal_name),\n `${path}.legal_name`,\n \"string\",\n v!.legal_name,\n );\n ctx.check(\n isNullableString(v!.display_name),\n `${path}.display_name`,\n \"string | null\",\n v!.display_name,\n );\n ctx.check(\n isString(v!.jurisdiction),\n `${path}.jurisdiction`,\n \"string\",\n v!.jurisdiction,\n );\n ctx.check(\n isNullableString(v!.website),\n `${path}.website`,\n \"string | null\",\n v!.website,\n );\n ctx.check(\n isNullableString(v!.logo_url),\n `${path}.logo_url`,\n \"string | null\",\n v!.logo_url,\n );\n return true;\n}\n\nfunction isNativeCurrency(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is NativeCurrency {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.symbol), `${path}.symbol`, \"string\", v!.symbol);\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isFiniteNumber(v!.decimals),\n `${path}.decimals`,\n \"finite number\",\n v!.decimals,\n );\n return true;\n}\n\nfunction isKycTierLimits(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is KycTierLimits {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isFiniteNumber(v!.daily_investment_limit_usd),\n `${path}.daily_investment_limit_usd`,\n \"finite number\",\n v!.daily_investment_limit_usd,\n );\n ctx.check(\n isFiniteNumber(v!.monthly_investment_limit_usd),\n `${path}.monthly_investment_limit_usd`,\n \"finite number\",\n v!.monthly_investment_limit_usd,\n );\n return true;\n}\n\nfunction isKycTierVerification(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is KycTierVerification {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isBoolean(v!.identity_verified),\n `${path}.identity_verified`,\n \"boolean\",\n v!.identity_verified,\n );\n ctx.check(\n isBoolean(v!.liveness_verified),\n `${path}.liveness_verified`,\n \"boolean\",\n v!.liveness_verified,\n );\n ctx.check(\n isBoolean(v!.aml_verified),\n `${path}.aml_verified`,\n \"boolean\",\n v!.aml_verified,\n );\n ctx.check(\n isBoolean(v!.pep_check),\n `${path}.pep_check`,\n \"boolean\",\n v!.pep_check,\n );\n ctx.check(\n isBoolean(v!.address_verified),\n `${path}.address_verified`,\n \"boolean\",\n v!.address_verified,\n );\n ctx.check(\n isBoolean(v!.tax_verified),\n `${path}.tax_verified`,\n \"boolean\",\n v!.tax_verified,\n );\n ctx.check(\n isBoolean(v!.source_of_funds_verified),\n `${path}.source_of_funds_verified`,\n \"boolean\",\n v!.source_of_funds_verified,\n );\n ctx.check(\n isBoolean(v!.business_verification),\n `${path}.business_verification`,\n \"boolean\",\n v!.business_verification,\n );\n return true;\n}\n\nfunction isKycTier(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is KycTier {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.id), `${path}.id`, \"string\", v!.id);\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isFiniteNumber(v!.claim_id),\n `${path}.claim_id`,\n \"finite number\",\n v!.claim_id,\n );\n isKycTierLimits(v!.limits, ctx, `${path}.limits`);\n isKycTierVerification(v!.verification, ctx, `${path}.verification`);\n return true;\n}\n\nfunction isNetworkDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is NetworkDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.family), `${path}.family`, \"string\", v!.family);\n ctx.check(\n isFiniteNumber(v!.chain_id) || v!.chain_id === null,\n `${path}.chain_id`,\n \"number | null\",\n v!.chain_id,\n );\n isNativeCurrency(v!.native_currency, ctx, `${path}.native_currency`);\n ctx.check(\n isString(v!.rpc_endpoint),\n `${path}.rpc_endpoint`,\n \"string\",\n v!.rpc_endpoint,\n );\n const explorerOk = ctx.check(\n Array.isArray(v!.explorer_urls),\n `${path}.explorer_urls`,\n \"string[]\",\n v!.explorer_urls,\n );\n if (explorerOk) {\n (v!.explorer_urls as unknown[]).forEach((url, i) =>\n ctx.check(\n isString(url),\n `${path}.explorer_urls[${i}]`,\n \"string\",\n url,\n ),\n );\n }\n ctx.check(\n isBoolean(v!.is_testnet),\n `${path}.is_testnet`,\n \"boolean\",\n v!.is_testnet,\n );\n return true;\n}\n\nfunction isFundConfig(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkFundConfig {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.nav_staleness_threshold),\n `${path}.nav_staleness_threshold`,\n \"string\",\n v!.nav_staleness_threshold,\n );\n ctx.check(\n isString(v!.min_subscription),\n `${path}.min_subscription`,\n \"string\",\n v!.min_subscription,\n );\n ctx.check(\n isString(v!.min_redemption),\n `${path}.min_redemption`,\n \"string\",\n v!.min_redemption,\n );\n ctx.check(\n isString(v!.entry_fee_bps),\n `${path}.entry_fee_bps`,\n \"string\",\n v!.entry_fee_bps,\n );\n ctx.check(\n isString(v!.exit_fee_bps),\n `${path}.exit_fee_bps`,\n \"string\",\n v!.exit_fee_bps,\n );\n ctx.check(\n isString(v!.redemption_gate_bps),\n `${path}.redemption_gate_bps`,\n \"string\",\n v!.redemption_gate_bps,\n );\n ctx.check(\n isString(v!.management_fee_bps_per_annum),\n `${path}.management_fee_bps_per_annum`,\n \"string\",\n v!.management_fee_bps_per_annum,\n );\n return true;\n}\n\nconst ISSUANCE_STATUSES = new Set([\n \"OPEN\",\n \"CLOSED\",\n \"FINALIZED\",\n \"SETTLED\",\n \"CANCELLED\",\n]);\n\nfunction isIssuanceStatus(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkBookSummary[\"status\"] {\n return ctx.check(\n isString(value) && ISSUANCE_STATUSES.has(value),\n path,\n `one of ${[...ISSUANCE_STATUSES].join(\", \")}`,\n value,\n );\n}\n\nfunction isBookSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkBookSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.id) || v!.id === null,\n `${path}.id`,\n \"string | null\",\n v!.id,\n );\n ctx.check(\n isString(v!.organization_id),\n `${path}.organization_id`,\n \"string\",\n v!.organization_id,\n );\n ctx.check(\n isNullableString(v!.name),\n `${path}.name`,\n \"string | null\",\n v!.name,\n );\n ctx.check(\n isNullableString(v!.book_type),\n `${path}.book_type`,\n \"string | null\",\n v!.book_type,\n );\n ctx.check(\n isString(v!.token_address),\n `${path}.token_address`,\n \"string\",\n v!.token_address,\n );\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(\n isString(v!.settlement_token),\n `${path}.settlement_token`,\n \"string\",\n v!.settlement_token,\n );\n ctx.check(\n isString(v!.order_book_address),\n `${path}.order_book_address`,\n \"string\",\n v!.order_book_address,\n );\n ctx.check(\n isString(v!.fund_address),\n `${path}.fund_address`,\n \"string\",\n v!.fund_address,\n );\n ctx.check(\n isString(v!.fund_id),\n `${path}.fund_id`,\n \"string\",\n v!.fund_id,\n );\n ctx.check(\n isString(v!.initial_nav),\n `${path}.initial_nav`,\n \"string\",\n v!.initial_nav,\n );\n isFundConfig(v!.fund_config, ctx, `${path}.fund_config`);\n isIssuanceStatus(v!.status, ctx, `${path}.status`);\n ctx.check(\n isNullableString(v!.visibility),\n `${path}.visibility`,\n \"string | null\",\n v!.visibility,\n );\n ctx.check(\n isNullableString(v!.created_at),\n `${path}.created_at`,\n \"string | null\",\n v!.created_at,\n );\n return true;\n}\n\nfunction isSecurityDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkSecurityDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n\n ctx.check(\n isString(v!.token_address),\n `${path}.token_address`,\n \"string\",\n v!.token_address,\n );\n ctx.check(\n isString(v!.token_name),\n `${path}.token_name`,\n \"string\",\n v!.token_name,\n );\n ctx.check(\n isString(v!.token_symbol),\n `${path}.token_symbol`,\n \"string\",\n v!.token_symbol,\n );\n ctx.check(\n isString(v!.token_decimal),\n `${path}.token_decimal`,\n \"string\",\n v!.token_decimal,\n );\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(\n isString(v!.token_type),\n `${path}.token_type`,\n \"string\",\n v!.token_type,\n );\n ctx.check(isString(v!.admin), `${path}.admin`, \"string\", v!.admin);\n ctx.check(\n isNullableString(v!.icon_url),\n `${path}.icon_url`,\n \"string | null\",\n v!.icon_url,\n );\n ctx.check(\n isNullableString(v!.created_at),\n `${path}.created_at`,\n \"string | null\",\n v!.created_at,\n );\n\n if (v!.prospectus !== null && v!.prospectus !== undefined) {\n isProspectus(v!.prospectus, ctx, `${path}.prospectus`);\n }\n\n if (v!.issuer !== null && v!.issuer !== undefined) {\n isIssuerSummary(v!.issuer, ctx, `${path}.issuer`);\n }\n\n if (v!.book !== null && v!.book !== undefined) {\n isBookSummary(v!.book, ctx, `${path}.book`);\n }\n\n if (v!.partners !== null && v!.partners !== undefined) {\n const partnersOk = ctx.check(\n Array.isArray(v!.partners),\n `${path}.partners`,\n \"array\",\n v!.partners,\n );\n if (partnersOk) {\n (v!.partners as unknown[]).forEach((partner, i) =>\n isTokenPartner(partner, ctx, `${path}.partners[${i}]`),\n );\n }\n }\n\n if (v!.rule_engine !== null && v!.rule_engine !== undefined) {\n isRuleEngineSummary(v!.rule_engine, ctx, `${path}.rule_engine`);\n }\n\n isNetworkDetails(v!.network, ctx, `${path}.network`);\n\n if (v!.claim_topics !== null && v!.claim_topics !== undefined) {\n const topicsOk = ctx.check(\n Array.isArray(v!.claim_topics),\n `${path}.claim_topics`,\n \"array\",\n v!.claim_topics,\n );\n if (topicsOk) {\n (v!.claim_topics as unknown[]).forEach((topic, i) =>\n isClaimTopic(topic, ctx, `${path}.claim_topics[${i}]`),\n );\n }\n }\n\n if (v!.trex_issuers !== null && v!.trex_issuers !== undefined) {\n const issuersOk = ctx.check(\n Array.isArray(v!.trex_issuers),\n `${path}.trex_issuers`,\n \"string[]\",\n v!.trex_issuers,\n );\n if (issuersOk) {\n (v!.trex_issuers as unknown[]).forEach((issuer, i) =>\n ctx.check(\n isString(issuer),\n `${path}.trex_issuers[${i}]`,\n \"string\",\n issuer,\n ),\n );\n }\n }\n\n ctx.check(\n isNullableString(v!.trex_identity_registry_address),\n `${path}.trex_identity_registry_address`,\n \"string | null\",\n v!.trex_identity_registry_address,\n );\n ctx.check(\n isNullableString(v!.claim_topics_registry_address),\n `${path}.claim_topics_registry_address`,\n \"string | null\",\n v!.claim_topics_registry_address,\n );\n ctx.check(\n isNullableString(v!.trex_trusted_issuers_registry_address),\n `${path}.trex_trusted_issuers_registry_address`,\n \"string | null\",\n v!.trex_trusted_issuers_registry_address,\n );\n\n ctx.check(\n isNullableString(v!.asset_category),\n `${path}.asset_category`,\n \"string | null\",\n v!.asset_category,\n );\n ctx.check(\n typeof v!.apy === \"number\" || v!.apy === null,\n `${path}.apy`,\n \"number | null\",\n v!.apy,\n );\n\n return true;\n}\n\nfunction buildValidationError(\n value: unknown,\n failures: ValidationFailure[],\n): MalformedResponseError {\n const summary = failures\n .slice(0, 5)\n .map(\n (f) =>\n `${f.path}: expected ${f.expected}, got ${JSON.stringify(f.received)}`,\n )\n .join(\"; \");\n\n const message =\n failures.length > 5\n ? `Received an invalid SDK response shape (${failures.length} issues). First 5: ${summary}`\n : `Received an invalid SDK response shape. ${summary}`;\n\n return new MalformedResponseError(message, {\n details: { failures: failures.slice(0, 20), value },\n });\n}\n\nexport function validateSdkAssetsResponse(value: unknown): SdkAssetsResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(Array.isArray(value.data), \"<root>.data\", \"array\", value.data);\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n if (Array.isArray(value.data)) {\n (value.data as unknown[]).forEach((item, i) =>\n isSecurityDetails(item, ctx, `<root>.data[${i}]`),\n );\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as SdkAssetsResponse;\n}\n\nexport function validateSdkAssetResponse(value: unknown): SdkAssetResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n isSecurityDetails(value.data, ctx, \"<root>.data\");\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as SdkAssetResponse;\n}\n\nexport function validateSdkNetworksResponse(value: unknown): import(\"./types\").SdkNetworksResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n const dataOk = ctx.check(\n isRecord(value.data),\n \"<root>.data\",\n \"object\",\n value.data,\n );\n if (dataOk) {\n for (const [key, network] of Object.entries(value.data as Record<string, unknown>)) {\n isNetworkDetails(network, ctx, `<root>.data[\"${key}\"]`);\n }\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as import(\"./types\").SdkNetworksResponse;\n}\n\nexport function validateSdkKycTiersResponse(value: unknown): import(\"./types\").SdkKycTiersResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n const dataOk = ctx.check(\n isRecord(value.data),\n \"<root>.data\",\n \"object\",\n value.data,\n );\n if (dataOk) {\n for (const [key, tier] of Object.entries(value.data as Record<string, unknown>)) {\n isKycTier(tier, ctx, `<root>.data[\"${key}\"]`);\n }\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as import(\"./types\").SdkKycTiersResponse;\n}\n","import { resolveClientConfig } from \"./config\";\nimport { InvalidConfigurationError } from \"./errors\";\nimport { requestJson } from \"./transport\";\nimport type {\n ClientConfig,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkKycTiersResponse,\n SdkNetworksResponse,\n SereelSdkClient,\n} from \"./types\";\nimport {\n validateSdkAssetResponse,\n validateSdkAssetsResponse,\n validateSdkKycTiersResponse,\n validateSdkNetworksResponse,\n} from \"./validation\";\n\nexport function createClient(config: ClientConfig): SereelSdkClient {\n const resolved = resolveClientConfig(config);\n\n return {\n getAssets(): Promise<SdkAssetsResponse> {\n return requestJson(resolved, \"/sdk/assets\", validateSdkAssetsResponse);\n },\n\n getAssetByTokenAddress(tokenAddress: string): Promise<SdkAssetResponse> {\n const trimmedTokenAddress = tokenAddress.trim();\n if (!trimmedTokenAddress) {\n throw new InvalidConfigurationError(\n \"tokenAddress must not be empty.\",\n );\n }\n\n return requestJson(\n resolved,\n `/sdk/assets/${encodeURIComponent(trimmedTokenAddress)}`,\n validateSdkAssetResponse,\n );\n },\n\n getAssetsByIssuer(issuerId: string): Promise<SdkAssetsResponse> {\n const trimmedIssuerId = issuerId.trim();\n if (!trimmedIssuerId) {\n throw new InvalidConfigurationError(\"issuerId must not be empty.\");\n }\n\n return requestJson(\n resolved,\n `/sdk/assets/issuer/${encodeURIComponent(trimmedIssuerId)}`,\n validateSdkAssetsResponse,\n );\n },\n\n getNetworks(): Promise<SdkNetworksResponse> {\n return requestJson(resolved, \"/sdk/networks\", validateSdkNetworksResponse);\n },\n\n getKycTiers(): Promise<SdkKycTiersResponse> {\n return requestJson(resolved, \"/sdk/kyc_tiers\", validateSdkKycTiersResponse);\n },\n };\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.cts CHANGED
@@ -39,7 +39,7 @@ interface SdkRuleEngineSummary {
39
39
  rule_engine_address: string;
40
40
  rules: SdkRuleSummary[];
41
41
  }
42
- interface SdkTrexClaimTopic {
42
+ interface SdkClaimTopic {
43
43
  value: number;
44
44
  name: string;
45
45
  label: string;
@@ -61,11 +61,13 @@ interface SdkSecurityDetails {
61
61
  rule_engine: SdkRuleEngineSummary | null;
62
62
  network: NetworkDetails;
63
63
  created_at: string | null;
64
- trex_claim_topics: SdkTrexClaimTopic[] | null;
64
+ claim_topics: SdkClaimTopic[] | null;
65
65
  trex_issuers: string[] | null;
66
66
  trex_identity_registry_address: string | null;
67
- trex_claim_topics_registry_address: string | null;
67
+ claim_topics_registry_address: string | null;
68
68
  trex_trusted_issuers_registry_address: string | null;
69
+ asset_category: string | null;
70
+ apy: number | null;
69
71
  }
70
72
  interface SdkIssuerSummary {
71
73
  id: string;
@@ -99,6 +101,7 @@ interface SdkBookSummary {
99
101
  initial_nav: string;
100
102
  fund_config: SdkFundConfig;
101
103
  status: IssuanceStatus;
104
+ visibility: string | null;
102
105
  created_at: string | null;
103
106
  }
104
107
  interface SdkAssetsResponse {
@@ -112,11 +115,37 @@ interface SdkNetworksResponse {
112
115
  data: Record<string, NetworkDetails>;
113
116
  count: number;
114
117
  }
118
+ interface KycTierLimits {
119
+ daily_investment_limit_usd: number;
120
+ monthly_investment_limit_usd: number;
121
+ }
122
+ interface KycTierVerification {
123
+ identity_verified: boolean;
124
+ liveness_verified: boolean;
125
+ aml_verified: boolean;
126
+ pep_check: boolean;
127
+ address_verified: boolean;
128
+ tax_verified: boolean;
129
+ source_of_funds_verified: boolean;
130
+ business_verification: boolean;
131
+ }
132
+ interface KycTier {
133
+ id: string;
134
+ name: string;
135
+ claim_id: number;
136
+ limits: KycTierLimits;
137
+ verification: KycTierVerification;
138
+ }
139
+ interface SdkKycTiersResponse {
140
+ data: Record<string, KycTier>;
141
+ count: number;
142
+ }
115
143
  interface SereelSdkClient {
116
144
  getAssets(): Promise<SdkAssetsResponse>;
117
145
  getAssetByTokenAddress(tokenAddress: string): Promise<SdkAssetResponse>;
118
146
  getAssetsByIssuer(issuerId: string): Promise<SdkAssetsResponse>;
119
147
  getNetworks(): Promise<SdkNetworksResponse>;
148
+ getKycTiers(): Promise<SdkKycTiersResponse>;
120
149
  }
121
150
 
122
151
  declare function createClient(config: ClientConfig): SereelSdkClient;
@@ -157,4 +186,4 @@ declare class TimeoutError extends SereelSdkError {
157
186
  declare class MalformedResponseError extends SereelSdkError {
158
187
  }
159
188
 
160
- export { type ClientConfig, ENVIRONMENT_BASE_URLS, ForbiddenError, HttpError, InvalidConfigurationError, type IssuanceStatus, MalformedResponseError, type NativeCurrency, type NetworkDetails, NetworkError, NotFoundError, RateLimitError, type SdkAssetResponse, type SdkAssetsResponse, type SdkBookSummary, type SdkFundConfig, type SdkIssuerSummary, type SdkNetworksResponse, type SdkRuleEngineSummary, type SdkRuleSummary, type SdkSecurityDetails, type SdkTokenPartner, type SdkTokenProspectus, type SdkTrexClaimTopic, type SereelEnvironment, type SereelSdkClient, SereelSdkError, ServerError, TimeoutError, UnauthorizedError, createClient, resolveBaseUrl };
189
+ export { type ClientConfig, ENVIRONMENT_BASE_URLS, ForbiddenError, HttpError, InvalidConfigurationError, type IssuanceStatus, type KycTier, type KycTierLimits, type KycTierVerification, MalformedResponseError, type NativeCurrency, type NetworkDetails, NetworkError, NotFoundError, RateLimitError, type SdkAssetResponse, type SdkAssetsResponse, type SdkBookSummary, type SdkClaimTopic, type SdkFundConfig, type SdkIssuerSummary, type SdkKycTiersResponse, type SdkNetworksResponse, type SdkRuleEngineSummary, type SdkRuleSummary, type SdkSecurityDetails, type SdkTokenPartner, type SdkTokenProspectus, type SereelEnvironment, type SereelSdkClient, SereelSdkError, ServerError, TimeoutError, UnauthorizedError, createClient, resolveBaseUrl };
package/dist/index.d.ts CHANGED
@@ -39,7 +39,7 @@ interface SdkRuleEngineSummary {
39
39
  rule_engine_address: string;
40
40
  rules: SdkRuleSummary[];
41
41
  }
42
- interface SdkTrexClaimTopic {
42
+ interface SdkClaimTopic {
43
43
  value: number;
44
44
  name: string;
45
45
  label: string;
@@ -61,11 +61,13 @@ interface SdkSecurityDetails {
61
61
  rule_engine: SdkRuleEngineSummary | null;
62
62
  network: NetworkDetails;
63
63
  created_at: string | null;
64
- trex_claim_topics: SdkTrexClaimTopic[] | null;
64
+ claim_topics: SdkClaimTopic[] | null;
65
65
  trex_issuers: string[] | null;
66
66
  trex_identity_registry_address: string | null;
67
- trex_claim_topics_registry_address: string | null;
67
+ claim_topics_registry_address: string | null;
68
68
  trex_trusted_issuers_registry_address: string | null;
69
+ asset_category: string | null;
70
+ apy: number | null;
69
71
  }
70
72
  interface SdkIssuerSummary {
71
73
  id: string;
@@ -99,6 +101,7 @@ interface SdkBookSummary {
99
101
  initial_nav: string;
100
102
  fund_config: SdkFundConfig;
101
103
  status: IssuanceStatus;
104
+ visibility: string | null;
102
105
  created_at: string | null;
103
106
  }
104
107
  interface SdkAssetsResponse {
@@ -112,11 +115,37 @@ interface SdkNetworksResponse {
112
115
  data: Record<string, NetworkDetails>;
113
116
  count: number;
114
117
  }
118
+ interface KycTierLimits {
119
+ daily_investment_limit_usd: number;
120
+ monthly_investment_limit_usd: number;
121
+ }
122
+ interface KycTierVerification {
123
+ identity_verified: boolean;
124
+ liveness_verified: boolean;
125
+ aml_verified: boolean;
126
+ pep_check: boolean;
127
+ address_verified: boolean;
128
+ tax_verified: boolean;
129
+ source_of_funds_verified: boolean;
130
+ business_verification: boolean;
131
+ }
132
+ interface KycTier {
133
+ id: string;
134
+ name: string;
135
+ claim_id: number;
136
+ limits: KycTierLimits;
137
+ verification: KycTierVerification;
138
+ }
139
+ interface SdkKycTiersResponse {
140
+ data: Record<string, KycTier>;
141
+ count: number;
142
+ }
115
143
  interface SereelSdkClient {
116
144
  getAssets(): Promise<SdkAssetsResponse>;
117
145
  getAssetByTokenAddress(tokenAddress: string): Promise<SdkAssetResponse>;
118
146
  getAssetsByIssuer(issuerId: string): Promise<SdkAssetsResponse>;
119
147
  getNetworks(): Promise<SdkNetworksResponse>;
148
+ getKycTiers(): Promise<SdkKycTiersResponse>;
120
149
  }
121
150
 
122
151
  declare function createClient(config: ClientConfig): SereelSdkClient;
@@ -157,4 +186,4 @@ declare class TimeoutError extends SereelSdkError {
157
186
  declare class MalformedResponseError extends SereelSdkError {
158
187
  }
159
188
 
160
- export { type ClientConfig, ENVIRONMENT_BASE_URLS, ForbiddenError, HttpError, InvalidConfigurationError, type IssuanceStatus, MalformedResponseError, type NativeCurrency, type NetworkDetails, NetworkError, NotFoundError, RateLimitError, type SdkAssetResponse, type SdkAssetsResponse, type SdkBookSummary, type SdkFundConfig, type SdkIssuerSummary, type SdkNetworksResponse, type SdkRuleEngineSummary, type SdkRuleSummary, type SdkSecurityDetails, type SdkTokenPartner, type SdkTokenProspectus, type SdkTrexClaimTopic, type SereelEnvironment, type SereelSdkClient, SereelSdkError, ServerError, TimeoutError, UnauthorizedError, createClient, resolveBaseUrl };
189
+ export { type ClientConfig, ENVIRONMENT_BASE_URLS, ForbiddenError, HttpError, InvalidConfigurationError, type IssuanceStatus, type KycTier, type KycTierLimits, type KycTierVerification, MalformedResponseError, type NativeCurrency, type NetworkDetails, NetworkError, NotFoundError, RateLimitError, type SdkAssetResponse, type SdkAssetsResponse, type SdkBookSummary, type SdkClaimTopic, type SdkFundConfig, type SdkIssuerSummary, type SdkKycTiersResponse, type SdkNetworksResponse, type SdkRuleEngineSummary, type SdkRuleSummary, type SdkSecurityDetails, type SdkTokenPartner, type SdkTokenProspectus, type SereelEnvironment, type SereelSdkClient, SereelSdkError, ServerError, TimeoutError, UnauthorizedError, createClient, resolveBaseUrl };
package/dist/index.js CHANGED
@@ -260,7 +260,7 @@ function isRuleSummary(value, ctx, path) {
260
260
  );
261
261
  return true;
262
262
  }
263
- function isTrexClaimTopic(value, ctx, path) {
263
+ function isClaimTopic(value, ctx, path) {
264
264
  const v = asRecord(value);
265
265
  if (!ctx.check(v !== void 0, path, "object", value)) return false;
266
266
  ctx.check(
@@ -345,6 +345,91 @@ function isNativeCurrency(value, ctx, path) {
345
345
  );
346
346
  return true;
347
347
  }
348
+ function isKycTierLimits(value, ctx, path) {
349
+ const v = asRecord(value);
350
+ if (!ctx.check(v !== void 0, path, "object", value)) return false;
351
+ ctx.check(
352
+ isFiniteNumber(v.daily_investment_limit_usd),
353
+ `${path}.daily_investment_limit_usd`,
354
+ "finite number",
355
+ v.daily_investment_limit_usd
356
+ );
357
+ ctx.check(
358
+ isFiniteNumber(v.monthly_investment_limit_usd),
359
+ `${path}.monthly_investment_limit_usd`,
360
+ "finite number",
361
+ v.monthly_investment_limit_usd
362
+ );
363
+ return true;
364
+ }
365
+ function isKycTierVerification(value, ctx, path) {
366
+ const v = asRecord(value);
367
+ if (!ctx.check(v !== void 0, path, "object", value)) return false;
368
+ ctx.check(
369
+ isBoolean(v.identity_verified),
370
+ `${path}.identity_verified`,
371
+ "boolean",
372
+ v.identity_verified
373
+ );
374
+ ctx.check(
375
+ isBoolean(v.liveness_verified),
376
+ `${path}.liveness_verified`,
377
+ "boolean",
378
+ v.liveness_verified
379
+ );
380
+ ctx.check(
381
+ isBoolean(v.aml_verified),
382
+ `${path}.aml_verified`,
383
+ "boolean",
384
+ v.aml_verified
385
+ );
386
+ ctx.check(
387
+ isBoolean(v.pep_check),
388
+ `${path}.pep_check`,
389
+ "boolean",
390
+ v.pep_check
391
+ );
392
+ ctx.check(
393
+ isBoolean(v.address_verified),
394
+ `${path}.address_verified`,
395
+ "boolean",
396
+ v.address_verified
397
+ );
398
+ ctx.check(
399
+ isBoolean(v.tax_verified),
400
+ `${path}.tax_verified`,
401
+ "boolean",
402
+ v.tax_verified
403
+ );
404
+ ctx.check(
405
+ isBoolean(v.source_of_funds_verified),
406
+ `${path}.source_of_funds_verified`,
407
+ "boolean",
408
+ v.source_of_funds_verified
409
+ );
410
+ ctx.check(
411
+ isBoolean(v.business_verification),
412
+ `${path}.business_verification`,
413
+ "boolean",
414
+ v.business_verification
415
+ );
416
+ return true;
417
+ }
418
+ function isKycTier(value, ctx, path) {
419
+ const v = asRecord(value);
420
+ if (!ctx.check(v !== void 0, path, "object", value)) return false;
421
+ ctx.check(isString(v.id), `${path}.id`, "string", v.id);
422
+ ctx.check(isString(v.name), `${path}.name`, "string", v.name);
423
+ ctx.check(
424
+ isFiniteNumber(v.claim_id),
425
+ `${path}.claim_id`,
426
+ "finite number",
427
+ v.claim_id
428
+ );
429
+ isKycTierLimits(v.limits, ctx, `${path}.limits`);
430
+ isKycTierVerification(v.verification, ctx, `${path}.verification`);
431
+ return true;
432
+ }
348
433
  function isNetworkDetails(value, ctx, path) {
349
434
  const v = asRecord(value);
350
435
  if (!ctx.check(v !== void 0, path, "object", value)) return false;
@@ -526,6 +611,12 @@ function isBookSummary(value, ctx, path) {
526
611
  );
527
612
  isFundConfig(v.fund_config, ctx, `${path}.fund_config`);
528
613
  isIssuanceStatus(v.status, ctx, `${path}.status`);
614
+ ctx.check(
615
+ isNullableString(v.visibility),
616
+ `${path}.visibility`,
617
+ "string | null",
618
+ v.visibility
619
+ );
529
620
  ctx.check(
530
621
  isNullableString(v.created_at),
531
622
  `${path}.created_at`,
@@ -612,16 +703,16 @@ function isSecurityDetails(value, ctx, path) {
612
703
  isRuleEngineSummary(v.rule_engine, ctx, `${path}.rule_engine`);
613
704
  }
614
705
  isNetworkDetails(v.network, ctx, `${path}.network`);
615
- if (v.trex_claim_topics !== null && v.trex_claim_topics !== void 0) {
706
+ if (v.claim_topics !== null && v.claim_topics !== void 0) {
616
707
  const topicsOk = ctx.check(
617
- Array.isArray(v.trex_claim_topics),
618
- `${path}.trex_claim_topics`,
708
+ Array.isArray(v.claim_topics),
709
+ `${path}.claim_topics`,
619
710
  "array",
620
- v.trex_claim_topics
711
+ v.claim_topics
621
712
  );
622
713
  if (topicsOk) {
623
- v.trex_claim_topics.forEach(
624
- (topic, i) => isTrexClaimTopic(topic, ctx, `${path}.trex_claim_topics[${i}]`)
714
+ v.claim_topics.forEach(
715
+ (topic, i) => isClaimTopic(topic, ctx, `${path}.claim_topics[${i}]`)
625
716
  );
626
717
  }
627
718
  }
@@ -650,10 +741,10 @@ function isSecurityDetails(value, ctx, path) {
650
741
  v.trex_identity_registry_address
651
742
  );
652
743
  ctx.check(
653
- isNullableString(v.trex_claim_topics_registry_address),
654
- `${path}.trex_claim_topics_registry_address`,
744
+ isNullableString(v.claim_topics_registry_address),
745
+ `${path}.claim_topics_registry_address`,
655
746
  "string | null",
656
- v.trex_claim_topics_registry_address
747
+ v.claim_topics_registry_address
657
748
  );
658
749
  ctx.check(
659
750
  isNullableString(v.trex_trusted_issuers_registry_address),
@@ -661,6 +752,18 @@ function isSecurityDetails(value, ctx, path) {
661
752
  "string | null",
662
753
  v.trex_trusted_issuers_registry_address
663
754
  );
755
+ ctx.check(
756
+ isNullableString(v.asset_category),
757
+ `${path}.asset_category`,
758
+ "string | null",
759
+ v.asset_category
760
+ );
761
+ ctx.check(
762
+ typeof v.apy === "number" || v.apy === null,
763
+ `${path}.apy`,
764
+ "number | null",
765
+ v.apy
766
+ );
664
767
  return true;
665
768
  }
666
769
  function buildValidationError(value, failures) {
@@ -732,6 +835,33 @@ function validateSdkNetworksResponse(value) {
732
835
  }
733
836
  return value;
734
837
  }
838
+ function validateSdkKycTiersResponse(value) {
839
+ const ctx = new ValidationContext();
840
+ ctx.check(isRecord(value), "<root>", "object", value);
841
+ if (isRecord(value)) {
842
+ ctx.check(
843
+ isFiniteNumber(value.count),
844
+ "<root>.count",
845
+ "finite number",
846
+ value.count
847
+ );
848
+ const dataOk = ctx.check(
849
+ isRecord(value.data),
850
+ "<root>.data",
851
+ "object",
852
+ value.data
853
+ );
854
+ if (dataOk) {
855
+ for (const [key, tier] of Object.entries(value.data)) {
856
+ isKycTier(tier, ctx, `<root>.data["${key}"]`);
857
+ }
858
+ }
859
+ }
860
+ if (ctx.failures.length > 0) {
861
+ throw buildValidationError(value, ctx.failures);
862
+ }
863
+ return value;
864
+ }
735
865
 
736
866
  // src/client.ts
737
867
  function createClient(config) {
@@ -766,6 +896,9 @@ function createClient(config) {
766
896
  },
767
897
  getNetworks() {
768
898
  return requestJson(resolved, "/sdk/networks", validateSdkNetworksResponse);
899
+ },
900
+ getKycTiers() {
901
+ return requestJson(resolved, "/sdk/kyc_tiers", validateSdkKycTiersResponse);
769
902
  }
770
903
  };
771
904
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/config.ts","../src/transport.ts","../src/validation.ts","../src/client.ts"],"sourcesContent":["export interface SereelSdkErrorOptions {\n status?: number;\n code?: string;\n cause?: unknown;\n details?: unknown;\n}\n\nexport class SereelSdkError extends Error {\n readonly status: number | undefined;\n readonly code: string | undefined;\n readonly details?: unknown;\n\n constructor(message: string, options: SereelSdkErrorOptions = {}) {\n super(message, options.cause ? { cause: options.cause } : undefined);\n this.name = new.target.name;\n this.status = options.status;\n this.code = options.code;\n this.details = options.details;\n }\n}\n\nexport class InvalidConfigurationError extends SereelSdkError {}\n\nexport class NetworkError extends SereelSdkError {}\n\nexport class HttpError extends SereelSdkError {}\n\nexport class UnauthorizedError extends HttpError {}\n\nexport class ForbiddenError extends HttpError {}\n\nexport class NotFoundError extends HttpError {}\n\nexport class RateLimitError extends HttpError {}\n\nexport class ServerError extends HttpError {}\n\nexport class TimeoutError extends SereelSdkError {}\n\nexport class MalformedResponseError extends SereelSdkError {}\n","import { InvalidConfigurationError } from \"./errors\";\nimport type { ClientConfig, SereelEnvironment } from \"./types\";\n\nexport const ENVIRONMENT_BASE_URLS: Record<SereelEnvironment, string> = {\n devnet: \"https://api-lazer.sereel.com\",\n testnet: \"https://api-lazer-v2.sereel.com\",\n mainnet: \"https://cahokia.sereel.com\",\n};\n\nexport interface ResolvedClientConfig {\n environment: SereelEnvironment;\n apiKey: string;\n timeoutMs: number;\n baseUrl: string;\n fetch: typeof fetch;\n}\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nfunction getFetchImplementation(\n providedFetch: ClientConfig[\"fetch\"],\n): typeof fetch {\n if (providedFetch) {\n return providedFetch;\n }\n\n if (typeof globalThis.fetch === \"function\") {\n return globalThis.fetch.bind(globalThis);\n }\n\n throw new InvalidConfigurationError(\n \"No fetch implementation is available. Provide config.fetch in this runtime.\",\n );\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n const trimmed = baseUrl.trim();\n\n if (!trimmed) {\n throw new InvalidConfigurationError(\"baseUrl must not be empty when provided.\");\n }\n\n try {\n return new URL(trimmed).toString().replace(/\\/+$/, \"\");\n } catch (cause) {\n throw new InvalidConfigurationError(\"baseUrl must be a valid absolute URL.\", {\n cause,\n });\n }\n}\n\nexport function resolveBaseUrl(\n environment: SereelEnvironment,\n baseUrl?: string,\n): string {\n if (baseUrl) {\n return normalizeBaseUrl(baseUrl);\n }\n\n return ENVIRONMENT_BASE_URLS[environment];\n}\n\nexport function resolveClientConfig(config: ClientConfig): ResolvedClientConfig {\n const apiKey = config.apiKey.trim();\n\n if (!apiKey) {\n throw new InvalidConfigurationError(\"apiKey must not be empty.\");\n }\n\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new InvalidConfigurationError(\"timeoutMs must be a positive number.\");\n }\n\n return {\n environment: config.environment,\n apiKey,\n timeoutMs,\n baseUrl: resolveBaseUrl(config.environment, config.baseUrl),\n fetch: getFetchImplementation(config.fetch),\n };\n}\n","import {\n ForbiddenError,\n HttpError,\n MalformedResponseError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n ServerError,\n TimeoutError,\n UnauthorizedError,\n} from \"./errors\";\nimport type { ResolvedClientConfig } from \"./config\";\n\ninterface ApiErrorBody {\n error?: string;\n message?: string;\n}\n\nfunction createTimeoutSignal(timeoutMs: number): {\n signal: AbortSignal;\n cleanup: () => void;\n} {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n\n return {\n signal: controller.signal,\n cleanup: () => clearTimeout(timeout),\n };\n}\n\nasync function parseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text) as unknown;\n } catch (cause) {\n throw new MalformedResponseError(\"Received a non-JSON response body.\", {\n cause,\n status: response.status,\n details: text,\n });\n }\n}\n\nfunction getErrorMessage(status: number, body: unknown): string {\n if (body && typeof body === \"object\") {\n const apiError = body as ApiErrorBody;\n if (typeof apiError.error === \"string\" && apiError.error.trim()) {\n return apiError.error;\n }\n if (typeof apiError.message === \"string\" && apiError.message.trim()) {\n return apiError.message;\n }\n }\n\n return `Request failed with status ${status}.`;\n}\n\nfunction toHttpError(status: number, body: unknown): HttpError {\n const message = getErrorMessage(status, body);\n const options = { status, details: body };\n\n if (status === 401) {\n return new UnauthorizedError(message, options);\n }\n if (status === 403) {\n return new ForbiddenError(message, options);\n }\n if (status === 404) {\n return new NotFoundError(message, options);\n }\n if (status === 429) {\n return new RateLimitError(message, options);\n }\n if (status >= 500) {\n return new ServerError(message, options);\n }\n\n return new HttpError(message, options);\n}\n\nfunction isAbortError(error: unknown): error is Error {\n return (\n error instanceof Error &&\n (error.name === \"AbortError\" || error.constructor.name === \"AbortError\")\n );\n}\n\nfunction wrapNetworkError(error: unknown): Error {\n if (error instanceof NetworkError) {\n return error;\n }\n\n const message =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : \"Network request failed.\";\n\n return new NetworkError(message, { cause: error });\n}\n\nexport async function requestJson<T>(\n config: ResolvedClientConfig,\n path: string,\n validate: (value: unknown) => T,\n): Promise<T> {\n const { signal, cleanup } = createTimeoutSignal(config.timeoutMs);\n\n try {\n const response = await config.fetch(`${config.baseUrl}${path}`, {\n method: \"GET\",\n signal,\n headers: {\n accept: \"application/json\",\n \"x-api-key\": config.apiKey,\n },\n });\n\n const body = await parseBody(response);\n if (!response.ok) {\n throw toHttpError(response.status, body);\n }\n\n return validate(body);\n } catch (error) {\n if (\n error instanceof HttpError ||\n error instanceof MalformedResponseError ||\n error instanceof NetworkError\n ) {\n throw error;\n }\n\n if (isAbortError(error)) {\n throw new TimeoutError(\n `Request timed out after ${config.timeoutMs}ms.`,\n { cause: error },\n );\n }\n\n throw wrapNetworkError(error);\n } finally {\n cleanup();\n }\n}\n","import { MalformedResponseError } from \"./errors\";\nimport type {\n NativeCurrency,\n NetworkDetails,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkBookSummary,\n SdkFundConfig,\n SdkIssuerSummary,\n SdkRuleEngineSummary,\n SdkRuleSummary,\n SdkSecurityDetails,\n SdkTokenPartner,\n SdkTokenProspectus,\n} from \"./types\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nfunction isNullableString(value: unknown): value is string | null {\n return typeof value === \"string\" || value === null;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n\ninterface ValidationFailure {\n path: string;\n expected: string;\n received: unknown;\n}\n\nclass ValidationContext {\n failures: ValidationFailure[] = [];\n\n check(\n condition: boolean,\n path: string,\n expected: string,\n received: unknown,\n ): boolean {\n if (!condition) {\n this.failures.push({ path, expected, received });\n }\n return condition;\n }\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isProspectus(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkTokenProspectus {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.url), `${path}.url`, \"string\", v!.url);\n return true;\n}\n\nfunction isTokenPartner(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkTokenPartner {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.partner_name),\n `${path}.partner_name`,\n \"string\",\n v!.partner_name,\n );\n ctx.check(\n isString(v!.partner_logo),\n `${path}.partner_logo`,\n \"string\",\n v!.partner_logo,\n );\n ctx.check(\n isString(v!.partner_role),\n `${path}.partner_role`,\n \"string\",\n v!.partner_role,\n );\n return true;\n}\n\nfunction isRuleSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkRuleSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.rule_address),\n `${path}.rule_address`,\n \"string\",\n v!.rule_address,\n );\n ctx.check(\n isString(v!.rule_type),\n `${path}.rule_type`,\n \"string\",\n v!.rule_type,\n );\n return true;\n}\n\nfunction isTrexClaimTopic(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is import(\"./types\").SdkTrexClaimTopic {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isFiniteNumber(v!.value),\n `${path}.value`,\n \"finite number\",\n v!.value,\n );\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.label), `${path}.label`, \"string\", v!.label);\n return true;\n}\n\nfunction isRuleEngineSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkRuleEngineSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isString(v!.rule_engine_address),\n `${path}.rule_engine_address`,\n \"string\",\n v!.rule_engine_address,\n );\n const rulesOk = ctx.check(\n Array.isArray(v!.rules),\n `${path}.rules`,\n \"array\",\n v!.rules,\n );\n if (rulesOk) {\n (v!.rules as unknown[]).forEach((rule, i) =>\n isRuleSummary(rule, ctx, `${path}.rules[${i}]`),\n );\n }\n return true;\n}\n\nfunction isIssuerSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkIssuerSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.id), `${path}.id`, \"string\", v!.id);\n ctx.check(\n isString(v!.legal_name),\n `${path}.legal_name`,\n \"string\",\n v!.legal_name,\n );\n ctx.check(\n isNullableString(v!.display_name),\n `${path}.display_name`,\n \"string | null\",\n v!.display_name,\n );\n ctx.check(\n isString(v!.jurisdiction),\n `${path}.jurisdiction`,\n \"string\",\n v!.jurisdiction,\n );\n ctx.check(\n isNullableString(v!.website),\n `${path}.website`,\n \"string | null\",\n v!.website,\n );\n ctx.check(\n isNullableString(v!.logo_url),\n `${path}.logo_url`,\n \"string | null\",\n v!.logo_url,\n );\n return true;\n}\n\nfunction isNativeCurrency(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is NativeCurrency {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.symbol), `${path}.symbol`, \"string\", v!.symbol);\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isFiniteNumber(v!.decimals),\n `${path}.decimals`,\n \"finite number\",\n v!.decimals,\n );\n return true;\n}\n\nfunction isNetworkDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is NetworkDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.family), `${path}.family`, \"string\", v!.family);\n ctx.check(\n isFiniteNumber(v!.chain_id) || v!.chain_id === null,\n `${path}.chain_id`,\n \"number | null\",\n v!.chain_id,\n );\n isNativeCurrency(v!.native_currency, ctx, `${path}.native_currency`);\n ctx.check(\n isString(v!.rpc_endpoint),\n `${path}.rpc_endpoint`,\n \"string\",\n v!.rpc_endpoint,\n );\n const explorerOk = ctx.check(\n Array.isArray(v!.explorer_urls),\n `${path}.explorer_urls`,\n \"string[]\",\n v!.explorer_urls,\n );\n if (explorerOk) {\n (v!.explorer_urls as unknown[]).forEach((url, i) =>\n ctx.check(\n isString(url),\n `${path}.explorer_urls[${i}]`,\n \"string\",\n url,\n ),\n );\n }\n ctx.check(\n isBoolean(v!.is_testnet),\n `${path}.is_testnet`,\n \"boolean\",\n v!.is_testnet,\n );\n return true;\n}\n\nfunction isFundConfig(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkFundConfig {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.nav_staleness_threshold),\n `${path}.nav_staleness_threshold`,\n \"string\",\n v!.nav_staleness_threshold,\n );\n ctx.check(\n isString(v!.min_subscription),\n `${path}.min_subscription`,\n \"string\",\n v!.min_subscription,\n );\n ctx.check(\n isString(v!.min_redemption),\n `${path}.min_redemption`,\n \"string\",\n v!.min_redemption,\n );\n ctx.check(\n isString(v!.entry_fee_bps),\n `${path}.entry_fee_bps`,\n \"string\",\n v!.entry_fee_bps,\n );\n ctx.check(\n isString(v!.exit_fee_bps),\n `${path}.exit_fee_bps`,\n \"string\",\n v!.exit_fee_bps,\n );\n ctx.check(\n isString(v!.redemption_gate_bps),\n `${path}.redemption_gate_bps`,\n \"string\",\n v!.redemption_gate_bps,\n );\n ctx.check(\n isString(v!.management_fee_bps_per_annum),\n `${path}.management_fee_bps_per_annum`,\n \"string\",\n v!.management_fee_bps_per_annum,\n );\n return true;\n}\n\nconst ISSUANCE_STATUSES = new Set([\n \"OPEN\",\n \"CLOSED\",\n \"FINALIZED\",\n \"SETTLED\",\n \"CANCELLED\",\n]);\n\nfunction isIssuanceStatus(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkBookSummary[\"status\"] {\n return ctx.check(\n isString(value) && ISSUANCE_STATUSES.has(value),\n path,\n `one of ${[...ISSUANCE_STATUSES].join(\", \")}`,\n value,\n );\n}\n\nfunction isBookSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkBookSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.id) || v!.id === null,\n `${path}.id`,\n \"string | null\",\n v!.id,\n );\n ctx.check(\n isString(v!.organization_id),\n `${path}.organization_id`,\n \"string\",\n v!.organization_id,\n );\n ctx.check(\n isNullableString(v!.name),\n `${path}.name`,\n \"string | null\",\n v!.name,\n );\n ctx.check(\n isNullableString(v!.book_type),\n `${path}.book_type`,\n \"string | null\",\n v!.book_type,\n );\n ctx.check(\n isString(v!.token_address),\n `${path}.token_address`,\n \"string\",\n v!.token_address,\n );\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(\n isString(v!.settlement_token),\n `${path}.settlement_token`,\n \"string\",\n v!.settlement_token,\n );\n ctx.check(\n isString(v!.order_book_address),\n `${path}.order_book_address`,\n \"string\",\n v!.order_book_address,\n );\n ctx.check(\n isString(v!.fund_address),\n `${path}.fund_address`,\n \"string\",\n v!.fund_address,\n );\n ctx.check(\n isString(v!.fund_id),\n `${path}.fund_id`,\n \"string\",\n v!.fund_id,\n );\n ctx.check(\n isString(v!.initial_nav),\n `${path}.initial_nav`,\n \"string\",\n v!.initial_nav,\n );\n isFundConfig(v!.fund_config, ctx, `${path}.fund_config`);\n isIssuanceStatus(v!.status, ctx, `${path}.status`);\n ctx.check(\n isNullableString(v!.created_at),\n `${path}.created_at`,\n \"string | null\",\n v!.created_at,\n );\n return true;\n}\n\nfunction isSecurityDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkSecurityDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n\n ctx.check(\n isString(v!.token_address),\n `${path}.token_address`,\n \"string\",\n v!.token_address,\n );\n ctx.check(\n isString(v!.token_name),\n `${path}.token_name`,\n \"string\",\n v!.token_name,\n );\n ctx.check(\n isString(v!.token_symbol),\n `${path}.token_symbol`,\n \"string\",\n v!.token_symbol,\n );\n ctx.check(\n isString(v!.token_decimal),\n `${path}.token_decimal`,\n \"string\",\n v!.token_decimal,\n );\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(\n isString(v!.token_type),\n `${path}.token_type`,\n \"string\",\n v!.token_type,\n );\n ctx.check(isString(v!.admin), `${path}.admin`, \"string\", v!.admin);\n ctx.check(\n isNullableString(v!.icon_url),\n `${path}.icon_url`,\n \"string | null\",\n v!.icon_url,\n );\n ctx.check(\n isNullableString(v!.created_at),\n `${path}.created_at`,\n \"string | null\",\n v!.created_at,\n );\n\n if (v!.prospectus !== null && v!.prospectus !== undefined) {\n isProspectus(v!.prospectus, ctx, `${path}.prospectus`);\n }\n\n if (v!.issuer !== null && v!.issuer !== undefined) {\n isIssuerSummary(v!.issuer, ctx, `${path}.issuer`);\n }\n\n if (v!.book !== null && v!.book !== undefined) {\n isBookSummary(v!.book, ctx, `${path}.book`);\n }\n\n if (v!.partners !== null && v!.partners !== undefined) {\n const partnersOk = ctx.check(\n Array.isArray(v!.partners),\n `${path}.partners`,\n \"array\",\n v!.partners,\n );\n if (partnersOk) {\n (v!.partners as unknown[]).forEach((partner, i) =>\n isTokenPartner(partner, ctx, `${path}.partners[${i}]`),\n );\n }\n }\n\n if (v!.rule_engine !== null && v!.rule_engine !== undefined) {\n isRuleEngineSummary(v!.rule_engine, ctx, `${path}.rule_engine`);\n }\n\n isNetworkDetails(v!.network, ctx, `${path}.network`);\n\n if (v!.trex_claim_topics !== null && v!.trex_claim_topics !== undefined) {\n const topicsOk = ctx.check(\n Array.isArray(v!.trex_claim_topics),\n `${path}.trex_claim_topics`,\n \"array\",\n v!.trex_claim_topics,\n );\n if (topicsOk) {\n (v!.trex_claim_topics as unknown[]).forEach((topic, i) =>\n isTrexClaimTopic(topic, ctx, `${path}.trex_claim_topics[${i}]`),\n );\n }\n }\n\n if (v!.trex_issuers !== null && v!.trex_issuers !== undefined) {\n const issuersOk = ctx.check(\n Array.isArray(v!.trex_issuers),\n `${path}.trex_issuers`,\n \"string[]\",\n v!.trex_issuers,\n );\n if (issuersOk) {\n (v!.trex_issuers as unknown[]).forEach((issuer, i) =>\n ctx.check(\n isString(issuer),\n `${path}.trex_issuers[${i}]`,\n \"string\",\n issuer,\n ),\n );\n }\n }\n\n ctx.check(\n isNullableString(v!.trex_identity_registry_address),\n `${path}.trex_identity_registry_address`,\n \"string | null\",\n v!.trex_identity_registry_address,\n );\n ctx.check(\n isNullableString(v!.trex_claim_topics_registry_address),\n `${path}.trex_claim_topics_registry_address`,\n \"string | null\",\n v!.trex_claim_topics_registry_address,\n );\n ctx.check(\n isNullableString(v!.trex_trusted_issuers_registry_address),\n `${path}.trex_trusted_issuers_registry_address`,\n \"string | null\",\n v!.trex_trusted_issuers_registry_address,\n );\n\n return true;\n}\n\nfunction buildValidationError(\n value: unknown,\n failures: ValidationFailure[],\n): MalformedResponseError {\n const summary = failures\n .slice(0, 5)\n .map(\n (f) =>\n `${f.path}: expected ${f.expected}, got ${JSON.stringify(f.received)}`,\n )\n .join(\"; \");\n\n const message =\n failures.length > 5\n ? `Received an invalid SDK response shape (${failures.length} issues). First 5: ${summary}`\n : `Received an invalid SDK response shape. ${summary}`;\n\n return new MalformedResponseError(message, {\n details: { failures: failures.slice(0, 20), value },\n });\n}\n\nexport function validateSdkAssetsResponse(value: unknown): SdkAssetsResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(Array.isArray(value.data), \"<root>.data\", \"array\", value.data);\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n if (Array.isArray(value.data)) {\n (value.data as unknown[]).forEach((item, i) =>\n isSecurityDetails(item, ctx, `<root>.data[${i}]`),\n );\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as SdkAssetsResponse;\n}\n\nexport function validateSdkAssetResponse(value: unknown): SdkAssetResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n isSecurityDetails(value.data, ctx, \"<root>.data\");\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as SdkAssetResponse;\n}\n\nexport function validateSdkNetworksResponse(value: unknown): import(\"./types\").SdkNetworksResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n const dataOk = ctx.check(\n isRecord(value.data),\n \"<root>.data\",\n \"object\",\n value.data,\n );\n if (dataOk) {\n for (const [key, network] of Object.entries(value.data as Record<string, unknown>)) {\n isNetworkDetails(network, ctx, `<root>.data[\"${key}\"]`);\n }\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as import(\"./types\").SdkNetworksResponse;\n}\n","import { resolveClientConfig } from \"./config\";\nimport { InvalidConfigurationError } from \"./errors\";\nimport { requestJson } from \"./transport\";\nimport type {\n ClientConfig,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkNetworksResponse,\n SereelSdkClient,\n} from \"./types\";\nimport {\n validateSdkAssetResponse,\n validateSdkAssetsResponse,\n validateSdkNetworksResponse,\n} from \"./validation\";\n\nexport function createClient(config: ClientConfig): SereelSdkClient {\n const resolved = resolveClientConfig(config);\n\n return {\n getAssets(): Promise<SdkAssetsResponse> {\n return requestJson(resolved, \"/sdk/assets\", validateSdkAssetsResponse);\n },\n\n getAssetByTokenAddress(tokenAddress: string): Promise<SdkAssetResponse> {\n const trimmedTokenAddress = tokenAddress.trim();\n if (!trimmedTokenAddress) {\n throw new InvalidConfigurationError(\n \"tokenAddress must not be empty.\",\n );\n }\n\n return requestJson(\n resolved,\n `/sdk/assets/${encodeURIComponent(trimmedTokenAddress)}`,\n validateSdkAssetResponse,\n );\n },\n\n getAssetsByIssuer(issuerId: string): Promise<SdkAssetsResponse> {\n const trimmedIssuerId = issuerId.trim();\n if (!trimmedIssuerId) {\n throw new InvalidConfigurationError(\"issuerId must not be empty.\");\n }\n\n return requestJson(\n resolved,\n `/sdk/assets/issuer/${encodeURIComponent(trimmedIssuerId)}`,\n validateSdkAssetsResponse,\n );\n },\n\n getNetworks(): Promise<SdkNetworksResponse> {\n return requestJson(resolved, \"/sdk/networks\", validateSdkNetworksResponse);\n },\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/config.ts","../src/transport.ts","../src/validation.ts","../src/client.ts"],"sourcesContent":["export interface SereelSdkErrorOptions {\n status?: number;\n code?: string;\n cause?: unknown;\n details?: unknown;\n}\n\nexport class SereelSdkError extends Error {\n readonly status: number | undefined;\n readonly code: string | undefined;\n readonly details?: unknown;\n\n constructor(message: string, options: SereelSdkErrorOptions = {}) {\n super(message, options.cause ? { cause: options.cause } : undefined);\n this.name = new.target.name;\n this.status = options.status;\n this.code = options.code;\n this.details = options.details;\n }\n}\n\nexport class InvalidConfigurationError extends SereelSdkError {}\n\nexport class NetworkError extends SereelSdkError {}\n\nexport class HttpError extends SereelSdkError {}\n\nexport class UnauthorizedError extends HttpError {}\n\nexport class ForbiddenError extends HttpError {}\n\nexport class NotFoundError extends HttpError {}\n\nexport class RateLimitError extends HttpError {}\n\nexport class ServerError extends HttpError {}\n\nexport class TimeoutError extends SereelSdkError {}\n\nexport class MalformedResponseError extends SereelSdkError {}\n","import { InvalidConfigurationError } from \"./errors\";\nimport type { ClientConfig, SereelEnvironment } from \"./types\";\n\nexport const ENVIRONMENT_BASE_URLS: Record<SereelEnvironment, string> = {\n devnet: \"https://api-lazer.sereel.com\",\n testnet: \"https://api-lazer-v2.sereel.com\",\n mainnet: \"https://cahokia.sereel.com\",\n};\n\nexport interface ResolvedClientConfig {\n environment: SereelEnvironment;\n apiKey: string;\n timeoutMs: number;\n baseUrl: string;\n fetch: typeof fetch;\n}\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nfunction getFetchImplementation(\n providedFetch: ClientConfig[\"fetch\"],\n): typeof fetch {\n if (providedFetch) {\n return providedFetch;\n }\n\n if (typeof globalThis.fetch === \"function\") {\n return globalThis.fetch.bind(globalThis);\n }\n\n throw new InvalidConfigurationError(\n \"No fetch implementation is available. Provide config.fetch in this runtime.\",\n );\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n const trimmed = baseUrl.trim();\n\n if (!trimmed) {\n throw new InvalidConfigurationError(\"baseUrl must not be empty when provided.\");\n }\n\n try {\n return new URL(trimmed).toString().replace(/\\/+$/, \"\");\n } catch (cause) {\n throw new InvalidConfigurationError(\"baseUrl must be a valid absolute URL.\", {\n cause,\n });\n }\n}\n\nexport function resolveBaseUrl(\n environment: SereelEnvironment,\n baseUrl?: string,\n): string {\n if (baseUrl) {\n return normalizeBaseUrl(baseUrl);\n }\n\n return ENVIRONMENT_BASE_URLS[environment];\n}\n\nexport function resolveClientConfig(config: ClientConfig): ResolvedClientConfig {\n const apiKey = config.apiKey.trim();\n\n if (!apiKey) {\n throw new InvalidConfigurationError(\"apiKey must not be empty.\");\n }\n\n const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new InvalidConfigurationError(\"timeoutMs must be a positive number.\");\n }\n\n return {\n environment: config.environment,\n apiKey,\n timeoutMs,\n baseUrl: resolveBaseUrl(config.environment, config.baseUrl),\n fetch: getFetchImplementation(config.fetch),\n };\n}\n","import {\n ForbiddenError,\n HttpError,\n MalformedResponseError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n ServerError,\n TimeoutError,\n UnauthorizedError,\n} from \"./errors\";\nimport type { ResolvedClientConfig } from \"./config\";\n\ninterface ApiErrorBody {\n error?: string;\n message?: string;\n}\n\nfunction createTimeoutSignal(timeoutMs: number): {\n signal: AbortSignal;\n cleanup: () => void;\n} {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n\n return {\n signal: controller.signal,\n cleanup: () => clearTimeout(timeout),\n };\n}\n\nasync function parseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text) as unknown;\n } catch (cause) {\n throw new MalformedResponseError(\"Received a non-JSON response body.\", {\n cause,\n status: response.status,\n details: text,\n });\n }\n}\n\nfunction getErrorMessage(status: number, body: unknown): string {\n if (body && typeof body === \"object\") {\n const apiError = body as ApiErrorBody;\n if (typeof apiError.error === \"string\" && apiError.error.trim()) {\n return apiError.error;\n }\n if (typeof apiError.message === \"string\" && apiError.message.trim()) {\n return apiError.message;\n }\n }\n\n return `Request failed with status ${status}.`;\n}\n\nfunction toHttpError(status: number, body: unknown): HttpError {\n const message = getErrorMessage(status, body);\n const options = { status, details: body };\n\n if (status === 401) {\n return new UnauthorizedError(message, options);\n }\n if (status === 403) {\n return new ForbiddenError(message, options);\n }\n if (status === 404) {\n return new NotFoundError(message, options);\n }\n if (status === 429) {\n return new RateLimitError(message, options);\n }\n if (status >= 500) {\n return new ServerError(message, options);\n }\n\n return new HttpError(message, options);\n}\n\nfunction isAbortError(error: unknown): error is Error {\n return (\n error instanceof Error &&\n (error.name === \"AbortError\" || error.constructor.name === \"AbortError\")\n );\n}\n\nfunction wrapNetworkError(error: unknown): Error {\n if (error instanceof NetworkError) {\n return error;\n }\n\n const message =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : \"Network request failed.\";\n\n return new NetworkError(message, { cause: error });\n}\n\nexport async function requestJson<T>(\n config: ResolvedClientConfig,\n path: string,\n validate: (value: unknown) => T,\n): Promise<T> {\n const { signal, cleanup } = createTimeoutSignal(config.timeoutMs);\n\n try {\n const response = await config.fetch(`${config.baseUrl}${path}`, {\n method: \"GET\",\n signal,\n headers: {\n accept: \"application/json\",\n \"x-api-key\": config.apiKey,\n },\n });\n\n const body = await parseBody(response);\n if (!response.ok) {\n throw toHttpError(response.status, body);\n }\n\n return validate(body);\n } catch (error) {\n if (\n error instanceof HttpError ||\n error instanceof MalformedResponseError ||\n error instanceof NetworkError\n ) {\n throw error;\n }\n\n if (isAbortError(error)) {\n throw new TimeoutError(\n `Request timed out after ${config.timeoutMs}ms.`,\n { cause: error },\n );\n }\n\n throw wrapNetworkError(error);\n } finally {\n cleanup();\n }\n}\n","import { MalformedResponseError } from \"./errors\";\nimport type {\n KycTier,\n KycTierLimits,\n KycTierVerification,\n NativeCurrency,\n NetworkDetails,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkBookSummary,\n SdkFundConfig,\n SdkIssuerSummary,\n SdkRuleEngineSummary,\n SdkRuleSummary,\n SdkSecurityDetails,\n SdkTokenPartner,\n SdkTokenProspectus,\n} from \"./types\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nfunction isNullableString(value: unknown): value is string | null {\n return typeof value === \"string\" || value === null;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n\ninterface ValidationFailure {\n path: string;\n expected: string;\n received: unknown;\n}\n\nclass ValidationContext {\n failures: ValidationFailure[] = [];\n\n check(\n condition: boolean,\n path: string,\n expected: string,\n received: unknown,\n ): boolean {\n if (!condition) {\n this.failures.push({ path, expected, received });\n }\n return condition;\n }\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return isRecord(value) ? value : undefined;\n}\n\nfunction isProspectus(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkTokenProspectus {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.url), `${path}.url`, \"string\", v!.url);\n return true;\n}\n\nfunction isTokenPartner(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkTokenPartner {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.partner_name),\n `${path}.partner_name`,\n \"string\",\n v!.partner_name,\n );\n ctx.check(\n isString(v!.partner_logo),\n `${path}.partner_logo`,\n \"string\",\n v!.partner_logo,\n );\n ctx.check(\n isString(v!.partner_role),\n `${path}.partner_role`,\n \"string\",\n v!.partner_role,\n );\n return true;\n}\n\nfunction isRuleSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkRuleSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.rule_address),\n `${path}.rule_address`,\n \"string\",\n v!.rule_address,\n );\n ctx.check(\n isString(v!.rule_type),\n `${path}.rule_type`,\n \"string\",\n v!.rule_type,\n );\n return true;\n}\n\nfunction isClaimTopic(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is import(\"./types\").SdkClaimTopic {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isFiniteNumber(v!.value),\n `${path}.value`,\n \"finite number\",\n v!.value,\n );\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.label), `${path}.label`, \"string\", v!.label);\n return true;\n}\n\nfunction isRuleEngineSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkRuleEngineSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isString(v!.rule_engine_address),\n `${path}.rule_engine_address`,\n \"string\",\n v!.rule_engine_address,\n );\n const rulesOk = ctx.check(\n Array.isArray(v!.rules),\n `${path}.rules`,\n \"array\",\n v!.rules,\n );\n if (rulesOk) {\n (v!.rules as unknown[]).forEach((rule, i) =>\n isRuleSummary(rule, ctx, `${path}.rules[${i}]`),\n );\n }\n return true;\n}\n\nfunction isIssuerSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkIssuerSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.id), `${path}.id`, \"string\", v!.id);\n ctx.check(\n isString(v!.legal_name),\n `${path}.legal_name`,\n \"string\",\n v!.legal_name,\n );\n ctx.check(\n isNullableString(v!.display_name),\n `${path}.display_name`,\n \"string | null\",\n v!.display_name,\n );\n ctx.check(\n isString(v!.jurisdiction),\n `${path}.jurisdiction`,\n \"string\",\n v!.jurisdiction,\n );\n ctx.check(\n isNullableString(v!.website),\n `${path}.website`,\n \"string | null\",\n v!.website,\n );\n ctx.check(\n isNullableString(v!.logo_url),\n `${path}.logo_url`,\n \"string | null\",\n v!.logo_url,\n );\n return true;\n}\n\nfunction isNativeCurrency(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is NativeCurrency {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.symbol), `${path}.symbol`, \"string\", v!.symbol);\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isFiniteNumber(v!.decimals),\n `${path}.decimals`,\n \"finite number\",\n v!.decimals,\n );\n return true;\n}\n\nfunction isKycTierLimits(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is KycTierLimits {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isFiniteNumber(v!.daily_investment_limit_usd),\n `${path}.daily_investment_limit_usd`,\n \"finite number\",\n v!.daily_investment_limit_usd,\n );\n ctx.check(\n isFiniteNumber(v!.monthly_investment_limit_usd),\n `${path}.monthly_investment_limit_usd`,\n \"finite number\",\n v!.monthly_investment_limit_usd,\n );\n return true;\n}\n\nfunction isKycTierVerification(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is KycTierVerification {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isBoolean(v!.identity_verified),\n `${path}.identity_verified`,\n \"boolean\",\n v!.identity_verified,\n );\n ctx.check(\n isBoolean(v!.liveness_verified),\n `${path}.liveness_verified`,\n \"boolean\",\n v!.liveness_verified,\n );\n ctx.check(\n isBoolean(v!.aml_verified),\n `${path}.aml_verified`,\n \"boolean\",\n v!.aml_verified,\n );\n ctx.check(\n isBoolean(v!.pep_check),\n `${path}.pep_check`,\n \"boolean\",\n v!.pep_check,\n );\n ctx.check(\n isBoolean(v!.address_verified),\n `${path}.address_verified`,\n \"boolean\",\n v!.address_verified,\n );\n ctx.check(\n isBoolean(v!.tax_verified),\n `${path}.tax_verified`,\n \"boolean\",\n v!.tax_verified,\n );\n ctx.check(\n isBoolean(v!.source_of_funds_verified),\n `${path}.source_of_funds_verified`,\n \"boolean\",\n v!.source_of_funds_verified,\n );\n ctx.check(\n isBoolean(v!.business_verification),\n `${path}.business_verification`,\n \"boolean\",\n v!.business_verification,\n );\n return true;\n}\n\nfunction isKycTier(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is KycTier {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.id), `${path}.id`, \"string\", v!.id);\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(\n isFiniteNumber(v!.claim_id),\n `${path}.claim_id`,\n \"finite number\",\n v!.claim_id,\n );\n isKycTierLimits(v!.limits, ctx, `${path}.limits`);\n isKycTierVerification(v!.verification, ctx, `${path}.verification`);\n return true;\n}\n\nfunction isNetworkDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is NetworkDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(isString(v!.name), `${path}.name`, \"string\", v!.name);\n ctx.check(isString(v!.family), `${path}.family`, \"string\", v!.family);\n ctx.check(\n isFiniteNumber(v!.chain_id) || v!.chain_id === null,\n `${path}.chain_id`,\n \"number | null\",\n v!.chain_id,\n );\n isNativeCurrency(v!.native_currency, ctx, `${path}.native_currency`);\n ctx.check(\n isString(v!.rpc_endpoint),\n `${path}.rpc_endpoint`,\n \"string\",\n v!.rpc_endpoint,\n );\n const explorerOk = ctx.check(\n Array.isArray(v!.explorer_urls),\n `${path}.explorer_urls`,\n \"string[]\",\n v!.explorer_urls,\n );\n if (explorerOk) {\n (v!.explorer_urls as unknown[]).forEach((url, i) =>\n ctx.check(\n isString(url),\n `${path}.explorer_urls[${i}]`,\n \"string\",\n url,\n ),\n );\n }\n ctx.check(\n isBoolean(v!.is_testnet),\n `${path}.is_testnet`,\n \"boolean\",\n v!.is_testnet,\n );\n return true;\n}\n\nfunction isFundConfig(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkFundConfig {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.nav_staleness_threshold),\n `${path}.nav_staleness_threshold`,\n \"string\",\n v!.nav_staleness_threshold,\n );\n ctx.check(\n isString(v!.min_subscription),\n `${path}.min_subscription`,\n \"string\",\n v!.min_subscription,\n );\n ctx.check(\n isString(v!.min_redemption),\n `${path}.min_redemption`,\n \"string\",\n v!.min_redemption,\n );\n ctx.check(\n isString(v!.entry_fee_bps),\n `${path}.entry_fee_bps`,\n \"string\",\n v!.entry_fee_bps,\n );\n ctx.check(\n isString(v!.exit_fee_bps),\n `${path}.exit_fee_bps`,\n \"string\",\n v!.exit_fee_bps,\n );\n ctx.check(\n isString(v!.redemption_gate_bps),\n `${path}.redemption_gate_bps`,\n \"string\",\n v!.redemption_gate_bps,\n );\n ctx.check(\n isString(v!.management_fee_bps_per_annum),\n `${path}.management_fee_bps_per_annum`,\n \"string\",\n v!.management_fee_bps_per_annum,\n );\n return true;\n}\n\nconst ISSUANCE_STATUSES = new Set([\n \"OPEN\",\n \"CLOSED\",\n \"FINALIZED\",\n \"SETTLED\",\n \"CANCELLED\",\n]);\n\nfunction isIssuanceStatus(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkBookSummary[\"status\"] {\n return ctx.check(\n isString(value) && ISSUANCE_STATUSES.has(value),\n path,\n `one of ${[...ISSUANCE_STATUSES].join(\", \")}`,\n value,\n );\n}\n\nfunction isBookSummary(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkBookSummary {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(\n isString(v!.id) || v!.id === null,\n `${path}.id`,\n \"string | null\",\n v!.id,\n );\n ctx.check(\n isString(v!.organization_id),\n `${path}.organization_id`,\n \"string\",\n v!.organization_id,\n );\n ctx.check(\n isNullableString(v!.name),\n `${path}.name`,\n \"string | null\",\n v!.name,\n );\n ctx.check(\n isNullableString(v!.book_type),\n `${path}.book_type`,\n \"string | null\",\n v!.book_type,\n );\n ctx.check(\n isString(v!.token_address),\n `${path}.token_address`,\n \"string\",\n v!.token_address,\n );\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(\n isString(v!.settlement_token),\n `${path}.settlement_token`,\n \"string\",\n v!.settlement_token,\n );\n ctx.check(\n isString(v!.order_book_address),\n `${path}.order_book_address`,\n \"string\",\n v!.order_book_address,\n );\n ctx.check(\n isString(v!.fund_address),\n `${path}.fund_address`,\n \"string\",\n v!.fund_address,\n );\n ctx.check(\n isString(v!.fund_id),\n `${path}.fund_id`,\n \"string\",\n v!.fund_id,\n );\n ctx.check(\n isString(v!.initial_nav),\n `${path}.initial_nav`,\n \"string\",\n v!.initial_nav,\n );\n isFundConfig(v!.fund_config, ctx, `${path}.fund_config`);\n isIssuanceStatus(v!.status, ctx, `${path}.status`);\n ctx.check(\n isNullableString(v!.visibility),\n `${path}.visibility`,\n \"string | null\",\n v!.visibility,\n );\n ctx.check(\n isNullableString(v!.created_at),\n `${path}.created_at`,\n \"string | null\",\n v!.created_at,\n );\n return true;\n}\n\nfunction isSecurityDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is SdkSecurityDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n\n ctx.check(\n isString(v!.token_address),\n `${path}.token_address`,\n \"string\",\n v!.token_address,\n );\n ctx.check(\n isString(v!.token_name),\n `${path}.token_name`,\n \"string\",\n v!.token_name,\n );\n ctx.check(\n isString(v!.token_symbol),\n `${path}.token_symbol`,\n \"string\",\n v!.token_symbol,\n );\n ctx.check(\n isString(v!.token_decimal),\n `${path}.token_decimal`,\n \"string\",\n v!.token_decimal,\n );\n ctx.check(\n isString(v!.network_id),\n `${path}.network_id`,\n \"string\",\n v!.network_id,\n );\n ctx.check(\n isString(v!.token_type),\n `${path}.token_type`,\n \"string\",\n v!.token_type,\n );\n ctx.check(isString(v!.admin), `${path}.admin`, \"string\", v!.admin);\n ctx.check(\n isNullableString(v!.icon_url),\n `${path}.icon_url`,\n \"string | null\",\n v!.icon_url,\n );\n ctx.check(\n isNullableString(v!.created_at),\n `${path}.created_at`,\n \"string | null\",\n v!.created_at,\n );\n\n if (v!.prospectus !== null && v!.prospectus !== undefined) {\n isProspectus(v!.prospectus, ctx, `${path}.prospectus`);\n }\n\n if (v!.issuer !== null && v!.issuer !== undefined) {\n isIssuerSummary(v!.issuer, ctx, `${path}.issuer`);\n }\n\n if (v!.book !== null && v!.book !== undefined) {\n isBookSummary(v!.book, ctx, `${path}.book`);\n }\n\n if (v!.partners !== null && v!.partners !== undefined) {\n const partnersOk = ctx.check(\n Array.isArray(v!.partners),\n `${path}.partners`,\n \"array\",\n v!.partners,\n );\n if (partnersOk) {\n (v!.partners as unknown[]).forEach((partner, i) =>\n isTokenPartner(partner, ctx, `${path}.partners[${i}]`),\n );\n }\n }\n\n if (v!.rule_engine !== null && v!.rule_engine !== undefined) {\n isRuleEngineSummary(v!.rule_engine, ctx, `${path}.rule_engine`);\n }\n\n isNetworkDetails(v!.network, ctx, `${path}.network`);\n\n if (v!.claim_topics !== null && v!.claim_topics !== undefined) {\n const topicsOk = ctx.check(\n Array.isArray(v!.claim_topics),\n `${path}.claim_topics`,\n \"array\",\n v!.claim_topics,\n );\n if (topicsOk) {\n (v!.claim_topics as unknown[]).forEach((topic, i) =>\n isClaimTopic(topic, ctx, `${path}.claim_topics[${i}]`),\n );\n }\n }\n\n if (v!.trex_issuers !== null && v!.trex_issuers !== undefined) {\n const issuersOk = ctx.check(\n Array.isArray(v!.trex_issuers),\n `${path}.trex_issuers`,\n \"string[]\",\n v!.trex_issuers,\n );\n if (issuersOk) {\n (v!.trex_issuers as unknown[]).forEach((issuer, i) =>\n ctx.check(\n isString(issuer),\n `${path}.trex_issuers[${i}]`,\n \"string\",\n issuer,\n ),\n );\n }\n }\n\n ctx.check(\n isNullableString(v!.trex_identity_registry_address),\n `${path}.trex_identity_registry_address`,\n \"string | null\",\n v!.trex_identity_registry_address,\n );\n ctx.check(\n isNullableString(v!.claim_topics_registry_address),\n `${path}.claim_topics_registry_address`,\n \"string | null\",\n v!.claim_topics_registry_address,\n );\n ctx.check(\n isNullableString(v!.trex_trusted_issuers_registry_address),\n `${path}.trex_trusted_issuers_registry_address`,\n \"string | null\",\n v!.trex_trusted_issuers_registry_address,\n );\n\n ctx.check(\n isNullableString(v!.asset_category),\n `${path}.asset_category`,\n \"string | null\",\n v!.asset_category,\n );\n ctx.check(\n typeof v!.apy === \"number\" || v!.apy === null,\n `${path}.apy`,\n \"number | null\",\n v!.apy,\n );\n\n return true;\n}\n\nfunction buildValidationError(\n value: unknown,\n failures: ValidationFailure[],\n): MalformedResponseError {\n const summary = failures\n .slice(0, 5)\n .map(\n (f) =>\n `${f.path}: expected ${f.expected}, got ${JSON.stringify(f.received)}`,\n )\n .join(\"; \");\n\n const message =\n failures.length > 5\n ? `Received an invalid SDK response shape (${failures.length} issues). First 5: ${summary}`\n : `Received an invalid SDK response shape. ${summary}`;\n\n return new MalformedResponseError(message, {\n details: { failures: failures.slice(0, 20), value },\n });\n}\n\nexport function validateSdkAssetsResponse(value: unknown): SdkAssetsResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(Array.isArray(value.data), \"<root>.data\", \"array\", value.data);\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n if (Array.isArray(value.data)) {\n (value.data as unknown[]).forEach((item, i) =>\n isSecurityDetails(item, ctx, `<root>.data[${i}]`),\n );\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as SdkAssetsResponse;\n}\n\nexport function validateSdkAssetResponse(value: unknown): SdkAssetResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n isSecurityDetails(value.data, ctx, \"<root>.data\");\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as SdkAssetResponse;\n}\n\nexport function validateSdkNetworksResponse(value: unknown): import(\"./types\").SdkNetworksResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n const dataOk = ctx.check(\n isRecord(value.data),\n \"<root>.data\",\n \"object\",\n value.data,\n );\n if (dataOk) {\n for (const [key, network] of Object.entries(value.data as Record<string, unknown>)) {\n isNetworkDetails(network, ctx, `<root>.data[\"${key}\"]`);\n }\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as import(\"./types\").SdkNetworksResponse;\n}\n\nexport function validateSdkKycTiersResponse(value: unknown): import(\"./types\").SdkKycTiersResponse {\n const ctx = new ValidationContext();\n\n ctx.check(isRecord(value), \"<root>\", \"object\", value);\n if (isRecord(value)) {\n ctx.check(\n isFiniteNumber(value.count),\n \"<root>.count\",\n \"finite number\",\n value.count,\n );\n const dataOk = ctx.check(\n isRecord(value.data),\n \"<root>.data\",\n \"object\",\n value.data,\n );\n if (dataOk) {\n for (const [key, tier] of Object.entries(value.data as Record<string, unknown>)) {\n isKycTier(tier, ctx, `<root>.data[\"${key}\"]`);\n }\n }\n }\n\n if (ctx.failures.length > 0) {\n throw buildValidationError(value, ctx.failures);\n }\n\n return value as unknown as import(\"./types\").SdkKycTiersResponse;\n}\n","import { resolveClientConfig } from \"./config\";\nimport { InvalidConfigurationError } from \"./errors\";\nimport { requestJson } from \"./transport\";\nimport type {\n ClientConfig,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkKycTiersResponse,\n SdkNetworksResponse,\n SereelSdkClient,\n} from \"./types\";\nimport {\n validateSdkAssetResponse,\n validateSdkAssetsResponse,\n validateSdkKycTiersResponse,\n validateSdkNetworksResponse,\n} from \"./validation\";\n\nexport function createClient(config: ClientConfig): SereelSdkClient {\n const resolved = resolveClientConfig(config);\n\n return {\n getAssets(): Promise<SdkAssetsResponse> {\n return requestJson(resolved, \"/sdk/assets\", validateSdkAssetsResponse);\n },\n\n getAssetByTokenAddress(tokenAddress: string): Promise<SdkAssetResponse> {\n const trimmedTokenAddress = tokenAddress.trim();\n if (!trimmedTokenAddress) {\n throw new InvalidConfigurationError(\n \"tokenAddress must not be empty.\",\n );\n }\n\n return requestJson(\n resolved,\n `/sdk/assets/${encodeURIComponent(trimmedTokenAddress)}`,\n validateSdkAssetResponse,\n );\n },\n\n getAssetsByIssuer(issuerId: string): Promise<SdkAssetsResponse> {\n const trimmedIssuerId = issuerId.trim();\n if (!trimmedIssuerId) {\n throw new InvalidConfigurationError(\"issuerId must not be empty.\");\n }\n\n return requestJson(\n resolved,\n `/sdk/assets/issuer/${encodeURIComponent(trimmedIssuerId)}`,\n validateSdkAssetsResponse,\n );\n },\n\n getNetworks(): Promise<SdkNetworksResponse> {\n return requestJson(resolved, \"/sdk/networks\", validateSdkNetworksResponse);\n },\n\n getKycTiers(): Promise<SdkKycTiersResponse> {\n return requestJson(resolved, \"/sdk/kyc_tiers\", validateSdkKycTiersResponse);\n },\n };\n}\n"],"mappings":";AAOO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,SAAiB,UAAiC,CAAC,GAAG;AAChE,UAAM,SAAS,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,MAAS;AACnE,SAAK,OAAO,WAAW;AACvB,SAAK,SAAS,QAAQ;AACtB,SAAK,OAAO,QAAQ;AACpB,SAAK,UAAU,QAAQ;AAAA,EACzB;AACF;AAEO,IAAM,4BAAN,cAAwC,eAAe;AAAC;AAExD,IAAM,eAAN,cAA2B,eAAe;AAAC;AAE3C,IAAM,YAAN,cAAwB,eAAe;AAAC;AAExC,IAAM,oBAAN,cAAgC,UAAU;AAAC;AAE3C,IAAM,iBAAN,cAA6B,UAAU;AAAC;AAExC,IAAM,gBAAN,cAA4B,UAAU;AAAC;AAEvC,IAAM,iBAAN,cAA6B,UAAU;AAAC;AAExC,IAAM,cAAN,cAA0B,UAAU;AAAC;AAErC,IAAM,eAAN,cAA2B,eAAe;AAAC;AAE3C,IAAM,yBAAN,cAAqC,eAAe;AAAC;;;ACpCrD,IAAM,wBAA2D;AAAA,EACtE,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACX;AAUA,IAAM,qBAAqB;AAE3B,SAAS,uBACP,eACc;AACd,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,WAAW,UAAU,YAAY;AAC1C,WAAO,WAAW,MAAM,KAAK,UAAU;AAAA,EACzC;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,SAAyB;AACjD,QAAM,UAAU,QAAQ,KAAK;AAE7B,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,0BAA0B,0CAA0C;AAAA,EAChF;AAEA,MAAI;AACF,WAAO,IAAI,IAAI,OAAO,EAAE,SAAS,EAAE,QAAQ,QAAQ,EAAE;AAAA,EACvD,SAAS,OAAO;AACd,UAAM,IAAI,0BAA0B,yCAAyC;AAAA,MAC3E;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,SAAS,eACd,aACA,SACQ;AACR,MAAI,SAAS;AACX,WAAO,iBAAiB,OAAO;AAAA,EACjC;AAEA,SAAO,sBAAsB,WAAW;AAC1C;AAEO,SAAS,oBAAoB,QAA4C;AAC9E,QAAM,SAAS,OAAO,OAAO,KAAK;AAElC,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,0BAA0B,2BAA2B;AAAA,EACjE;AAEA,QAAM,YAAY,OAAO,aAAa;AACtC,MAAI,CAAC,OAAO,SAAS,SAAS,KAAK,aAAa,GAAG;AACjD,UAAM,IAAI,0BAA0B,sCAAsC;AAAA,EAC5E;AAEA,SAAO;AAAA,IACL,aAAa,OAAO;AAAA,IACpB;AAAA,IACA;AAAA,IACA,SAAS,eAAe,OAAO,aAAa,OAAO,OAAO;AAAA,IAC1D,OAAO,uBAAuB,OAAO,KAAK;AAAA,EAC5C;AACF;;;AC/DA,SAAS,oBAAoB,WAG3B;AACA,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,UAAU,WAAW,MAAM,WAAW,MAAM,GAAG,SAAS;AAE9D,SAAO;AAAA,IACL,QAAQ,WAAW;AAAA,IACnB,SAAS,MAAM,aAAa,OAAO;AAAA,EACrC;AACF;AAEA,eAAe,UAAU,UAAsC;AAC7D,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,MAAI;AACF,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB,SAAS,OAAO;AACd,UAAM,IAAI,uBAAuB,sCAAsC;AAAA,MACrE;AAAA,MACA,QAAQ,SAAS;AAAA,MACjB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACF;AAEA,SAAS,gBAAgB,QAAgB,MAAuB;AAC9D,MAAI,QAAQ,OAAO,SAAS,UAAU;AACpC,UAAM,WAAW;AACjB,QAAI,OAAO,SAAS,UAAU,YAAY,SAAS,MAAM,KAAK,GAAG;AAC/D,aAAO,SAAS;AAAA,IAClB;AACA,QAAI,OAAO,SAAS,YAAY,YAAY,SAAS,QAAQ,KAAK,GAAG;AACnE,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,8BAA8B,MAAM;AAC7C;AAEA,SAAS,YAAY,QAAgB,MAA0B;AAC7D,QAAM,UAAU,gBAAgB,QAAQ,IAAI;AAC5C,QAAM,UAAU,EAAE,QAAQ,SAAS,KAAK;AAExC,MAAI,WAAW,KAAK;AAClB,WAAO,IAAI,kBAAkB,SAAS,OAAO;AAAA,EAC/C;AACA,MAAI,WAAW,KAAK;AAClB,WAAO,IAAI,eAAe,SAAS,OAAO;AAAA,EAC5C;AACA,MAAI,WAAW,KAAK;AAClB,WAAO,IAAI,cAAc,SAAS,OAAO;AAAA,EAC3C;AACA,MAAI,WAAW,KAAK;AAClB,WAAO,IAAI,eAAe,SAAS,OAAO;AAAA,EAC5C;AACA,MAAI,UAAU,KAAK;AACjB,WAAO,IAAI,YAAY,SAAS,OAAO;AAAA,EACzC;AAEA,SAAO,IAAI,UAAU,SAAS,OAAO;AACvC;AAEA,SAAS,aAAa,OAAgC;AACpD,SACE,iBAAiB,UAChB,MAAM,SAAS,gBAAgB,MAAM,YAAY,SAAS;AAE/D;AAEA,SAAS,iBAAiB,OAAuB;AAC/C,MAAI,iBAAiB,cAAc;AACjC,WAAO;AAAA,EACT;AAEA,QAAM,UACJ,iBAAiB,QACb,MAAM,UACN,OAAO,UAAU,WACf,QACA;AAER,SAAO,IAAI,aAAa,SAAS,EAAE,OAAO,MAAM,CAAC;AACnD;AAEA,eAAsB,YACpB,QACA,MACA,UACY;AACZ,QAAM,EAAE,QAAQ,QAAQ,IAAI,oBAAoB,OAAO,SAAS;AAEhE,MAAI;AACF,UAAM,WAAW,MAAM,OAAO,MAAM,GAAG,OAAO,OAAO,GAAG,IAAI,IAAI;AAAA,MAC9D,QAAQ;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,aAAa,OAAO;AAAA,MACtB;AAAA,IACF,CAAC;AAED,UAAM,OAAO,MAAM,UAAU,QAAQ;AACrC,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,YAAY,SAAS,QAAQ,IAAI;AAAA,IACzC;AAEA,WAAO,SAAS,IAAI;AAAA,EACtB,SAAS,OAAO;AACd,QACE,iBAAiB,aACjB,iBAAiB,0BACjB,iBAAiB,cACjB;AACA,YAAM;AAAA,IACR;AAEA,QAAI,aAAa,KAAK,GAAG;AACvB,YAAM,IAAI;AAAA,QACR,2BAA2B,OAAO,SAAS;AAAA,QAC3C,EAAE,OAAO,MAAM;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,iBAAiB,KAAK;AAAA,EAC9B,UAAE;AACA,YAAQ;AAAA,EACV;AACF;;;ACnIA,SAAS,SAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEA,SAAS,SAAS,OAAiC;AACjD,SAAO,OAAO,UAAU;AAC1B;AAEA,SAAS,iBAAiB,OAAwC;AAChE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEA,SAAS,eAAe,OAAiC;AACvD,SAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK;AAC3D;AAEA,SAAS,UAAU,OAAkC;AACnD,SAAO,OAAO,UAAU;AAC1B;AAQA,IAAM,oBAAN,MAAwB;AAAA,EACtB,WAAgC,CAAC;AAAA,EAEjC,MACE,WACA,MACA,UACA,UACS;AACT,QAAI,CAAC,WAAW;AACd,WAAK,SAAS,KAAK,EAAE,MAAM,UAAU,SAAS,CAAC;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,SAAS,OAAqD;AACrE,SAAO,SAAS,KAAK,IAAI,QAAQ;AACnC;AAEA,SAAS,aACP,OACA,KACA,MAC6B;AAC7B,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI,MAAM,SAAS,EAAG,IAAI,GAAG,GAAG,IAAI,SAAS,UAAU,EAAG,IAAI;AAC9D,MAAI,MAAM,SAAS,EAAG,GAAG,GAAG,GAAG,IAAI,QAAQ,UAAU,EAAG,GAAG;AAC3D,SAAO;AACT;AAEA,SAAS,eACP,OACA,KACA,MAC0B;AAC1B,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI;AAAA,IACF,SAAS,EAAG,YAAY;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,YAAY;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,YAAY;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,SAAO;AACT;AAEA,SAAS,cACP,OACA,KACA,MACyB;AACzB,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI;AAAA,IACF,SAAS,EAAG,YAAY;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,SAAS;AAAA,IACrB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,SAAO;AACT;AAEA,SAAS,aACP,OACA,KACA,MAC0C;AAC1C,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI;AAAA,IACF,eAAe,EAAG,KAAK;AAAA,IACvB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI,MAAM,SAAS,EAAG,IAAI,GAAG,GAAG,IAAI,SAAS,UAAU,EAAG,IAAI;AAC9D,MAAI,MAAM,SAAS,EAAG,KAAK,GAAG,GAAG,IAAI,UAAU,UAAU,EAAG,KAAK;AACjE,SAAO;AACT;AAEA,SAAS,oBACP,OACA,KACA,MAC+B;AAC/B,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI,MAAM,SAAS,EAAG,IAAI,GAAG,GAAG,IAAI,SAAS,UAAU,EAAG,IAAI;AAC9D,MAAI;AAAA,IACF,SAAS,EAAG,mBAAmB;AAAA,IAC/B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,QAAM,UAAU,IAAI;AAAA,IAClB,MAAM,QAAQ,EAAG,KAAK;AAAA,IACtB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI,SAAS;AACX,IAAC,EAAG,MAAoB;AAAA,MAAQ,CAAC,MAAM,MACrC,cAAc,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG;AAAA,IAChD;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,gBACP,OACA,KACA,MAC2B;AAC3B,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI,MAAM,SAAS,EAAG,EAAE,GAAG,GAAG,IAAI,OAAO,UAAU,EAAG,EAAE;AACxD,MAAI;AAAA,IACF,SAAS,EAAG,UAAU;AAAA,IACtB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,iBAAiB,EAAG,YAAY;AAAA,IAChC,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,YAAY;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,iBAAiB,EAAG,OAAO;AAAA,IAC3B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,iBAAiB,EAAG,QAAQ;AAAA,IAC5B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,SAAO;AACT;AAEA,SAAS,iBACP,OACA,KACA,MACyB;AACzB,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI,MAAM,SAAS,EAAG,MAAM,GAAG,GAAG,IAAI,WAAW,UAAU,EAAG,MAAM;AACpE,MAAI,MAAM,SAAS,EAAG,IAAI,GAAG,GAAG,IAAI,SAAS,UAAU,EAAG,IAAI;AAC9D,MAAI;AAAA,IACF,eAAe,EAAG,QAAQ;AAAA,IAC1B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,SAAO;AACT;AAEA,SAAS,gBACP,OACA,KACA,MACwB;AACxB,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI;AAAA,IACF,eAAe,EAAG,0BAA0B;AAAA,IAC5C,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,eAAe,EAAG,4BAA4B;AAAA,IAC9C,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,SAAO;AACT;AAEA,SAAS,sBACP,OACA,KACA,MAC8B;AAC9B,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI;AAAA,IACF,UAAU,EAAG,iBAAiB;AAAA,IAC9B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,UAAU,EAAG,iBAAiB;AAAA,IAC9B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,UAAU,EAAG,YAAY;AAAA,IACzB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,UAAU,EAAG,SAAS;AAAA,IACtB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,UAAU,EAAG,gBAAgB;AAAA,IAC7B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,UAAU,EAAG,YAAY;AAAA,IACzB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,UAAU,EAAG,wBAAwB;AAAA,IACrC,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,UAAU,EAAG,qBAAqB;AAAA,IAClC,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,SAAO;AACT;AAEA,SAAS,UACP,OACA,KACA,MACkB;AAClB,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI,MAAM,SAAS,EAAG,EAAE,GAAG,GAAG,IAAI,OAAO,UAAU,EAAG,EAAE;AACxD,MAAI,MAAM,SAAS,EAAG,IAAI,GAAG,GAAG,IAAI,SAAS,UAAU,EAAG,IAAI;AAC9D,MAAI;AAAA,IACF,eAAe,EAAG,QAAQ;AAAA,IAC1B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,kBAAgB,EAAG,QAAQ,KAAK,GAAG,IAAI,SAAS;AAChD,wBAAsB,EAAG,cAAc,KAAK,GAAG,IAAI,eAAe;AAClE,SAAO;AACT;AAEA,SAAS,iBACP,OACA,KACA,MACyB;AACzB,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI;AAAA,IACF,SAAS,EAAG,UAAU;AAAA,IACtB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI,MAAM,SAAS,EAAG,IAAI,GAAG,GAAG,IAAI,SAAS,UAAU,EAAG,IAAI;AAC9D,MAAI,MAAM,SAAS,EAAG,MAAM,GAAG,GAAG,IAAI,WAAW,UAAU,EAAG,MAAM;AACpE,MAAI;AAAA,IACF,eAAe,EAAG,QAAQ,KAAK,EAAG,aAAa;AAAA,IAC/C,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,mBAAiB,EAAG,iBAAiB,KAAK,GAAG,IAAI,kBAAkB;AACnE,MAAI;AAAA,IACF,SAAS,EAAG,YAAY;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,QAAM,aAAa,IAAI;AAAA,IACrB,MAAM,QAAQ,EAAG,aAAa;AAAA,IAC9B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI,YAAY;AACd,IAAC,EAAG,cAA4B;AAAA,MAAQ,CAAC,KAAK,MAC5C,IAAI;AAAA,QACF,SAAS,GAAG;AAAA,QACZ,GAAG,IAAI,kBAAkB,CAAC;AAAA,QAC1B;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI;AAAA,IACF,UAAU,EAAG,UAAU;AAAA,IACvB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,SAAO;AACT;AAEA,SAAS,aACP,OACA,KACA,MACwB;AACxB,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI;AAAA,IACF,SAAS,EAAG,uBAAuB;AAAA,IACnC,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,gBAAgB;AAAA,IAC5B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,cAAc;AAAA,IAC1B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,aAAa;AAAA,IACzB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,YAAY;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,mBAAmB;AAAA,IAC/B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,4BAA4B;AAAA,IACxC,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,SAAO;AACT;AAEA,IAAM,oBAAoB,oBAAI,IAAI;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,iBACP,OACA,KACA,MACmC;AACnC,SAAO,IAAI;AAAA,IACT,SAAS,KAAK,KAAK,kBAAkB,IAAI,KAAK;AAAA,IAC9C;AAAA,IACA,UAAU,CAAC,GAAG,iBAAiB,EAAE,KAAK,IAAI,CAAC;AAAA,IAC3C;AAAA,EACF;AACF;AAEA,SAAS,cACP,OACA,KACA,MACyB;AACzB,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAC/D,MAAI;AAAA,IACF,SAAS,EAAG,EAAE,KAAK,EAAG,OAAO;AAAA,IAC7B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,eAAe;AAAA,IAC3B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,iBAAiB,EAAG,IAAI;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,iBAAiB,EAAG,SAAS;AAAA,IAC7B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,aAAa;AAAA,IACzB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,UAAU;AAAA,IACtB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,gBAAgB;AAAA,IAC5B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,kBAAkB;AAAA,IAC9B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,YAAY;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,OAAO;AAAA,IACnB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,WAAW;AAAA,IACvB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,eAAa,EAAG,aAAa,KAAK,GAAG,IAAI,cAAc;AACvD,mBAAiB,EAAG,QAAQ,KAAK,GAAG,IAAI,SAAS;AACjD,MAAI;AAAA,IACF,iBAAiB,EAAG,UAAU;AAAA,IAC9B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,iBAAiB,EAAG,UAAU;AAAA,IAC9B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,SAAO;AACT;AAEA,SAAS,kBACP,OACA,KACA,MAC6B;AAC7B,QAAM,IAAI,SAAS,KAAK;AACxB,MAAI,CAAC,IAAI,MAAM,MAAM,QAAW,MAAM,UAAU,KAAK,EAAG,QAAO;AAE/D,MAAI;AAAA,IACF,SAAS,EAAG,aAAa;AAAA,IACzB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,UAAU;AAAA,IACtB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,YAAY;AAAA,IACxB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,aAAa;AAAA,IACzB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,UAAU;AAAA,IACtB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,SAAS,EAAG,UAAU;AAAA,IACtB,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI,MAAM,SAAS,EAAG,KAAK,GAAG,GAAG,IAAI,UAAU,UAAU,EAAG,KAAK;AACjE,MAAI;AAAA,IACF,iBAAiB,EAAG,QAAQ;AAAA,IAC5B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,iBAAiB,EAAG,UAAU;AAAA,IAC9B,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AAEA,MAAI,EAAG,eAAe,QAAQ,EAAG,eAAe,QAAW;AACzD,iBAAa,EAAG,YAAY,KAAK,GAAG,IAAI,aAAa;AAAA,EACvD;AAEA,MAAI,EAAG,WAAW,QAAQ,EAAG,WAAW,QAAW;AACjD,oBAAgB,EAAG,QAAQ,KAAK,GAAG,IAAI,SAAS;AAAA,EAClD;AAEA,MAAI,EAAG,SAAS,QAAQ,EAAG,SAAS,QAAW;AAC7C,kBAAc,EAAG,MAAM,KAAK,GAAG,IAAI,OAAO;AAAA,EAC5C;AAEA,MAAI,EAAG,aAAa,QAAQ,EAAG,aAAa,QAAW;AACrD,UAAM,aAAa,IAAI;AAAA,MACrB,MAAM,QAAQ,EAAG,QAAQ;AAAA,MACzB,GAAG,IAAI;AAAA,MACP;AAAA,MACA,EAAG;AAAA,IACL;AACA,QAAI,YAAY;AACd,MAAC,EAAG,SAAuB;AAAA,QAAQ,CAAC,SAAS,MAC3C,eAAe,SAAS,KAAK,GAAG,IAAI,aAAa,CAAC,GAAG;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,EAAG,gBAAgB,QAAQ,EAAG,gBAAgB,QAAW;AAC3D,wBAAoB,EAAG,aAAa,KAAK,GAAG,IAAI,cAAc;AAAA,EAChE;AAEA,mBAAiB,EAAG,SAAS,KAAK,GAAG,IAAI,UAAU;AAEnD,MAAI,EAAG,iBAAiB,QAAQ,EAAG,iBAAiB,QAAW;AAC7D,UAAM,WAAW,IAAI;AAAA,MACnB,MAAM,QAAQ,EAAG,YAAY;AAAA,MAC7B,GAAG,IAAI;AAAA,MACP;AAAA,MACA,EAAG;AAAA,IACL;AACA,QAAI,UAAU;AACZ,MAAC,EAAG,aAA2B;AAAA,QAAQ,CAAC,OAAO,MAC7C,aAAa,OAAO,KAAK,GAAG,IAAI,iBAAiB,CAAC,GAAG;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,EAAG,iBAAiB,QAAQ,EAAG,iBAAiB,QAAW;AAC7D,UAAM,YAAY,IAAI;AAAA,MACpB,MAAM,QAAQ,EAAG,YAAY;AAAA,MAC7B,GAAG,IAAI;AAAA,MACP;AAAA,MACA,EAAG;AAAA,IACL;AACA,QAAI,WAAW;AACb,MAAC,EAAG,aAA2B;AAAA,QAAQ,CAAC,QAAQ,MAC9C,IAAI;AAAA,UACF,SAAS,MAAM;AAAA,UACf,GAAG,IAAI,iBAAiB,CAAC;AAAA,UACzB;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AAAA,IACF,iBAAiB,EAAG,8BAA8B;AAAA,IAClD,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,iBAAiB,EAAG,6BAA6B;AAAA,IACjD,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,iBAAiB,EAAG,qCAAqC;AAAA,IACzD,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AAEA,MAAI;AAAA,IACF,iBAAiB,EAAG,cAAc;AAAA,IAClC,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AACA,MAAI;AAAA,IACF,OAAO,EAAG,QAAQ,YAAY,EAAG,QAAQ;AAAA,IACzC,GAAG,IAAI;AAAA,IACP;AAAA,IACA,EAAG;AAAA,EACL;AAEA,SAAO;AACT;AAEA,SAAS,qBACP,OACA,UACwB;AACxB,QAAM,UAAU,SACb,MAAM,GAAG,CAAC,EACV;AAAA,IACC,CAAC,MACC,GAAG,EAAE,IAAI,cAAc,EAAE,QAAQ,SAAS,KAAK,UAAU,EAAE,QAAQ,CAAC;AAAA,EACxE,EACC,KAAK,IAAI;AAEZ,QAAM,UACJ,SAAS,SAAS,IACd,2CAA2C,SAAS,MAAM,sBAAsB,OAAO,KACvF,2CAA2C,OAAO;AAExD,SAAO,IAAI,uBAAuB,SAAS;AAAA,IACzC,SAAS,EAAE,UAAU,SAAS,MAAM,GAAG,EAAE,GAAG,MAAM;AAAA,EACpD,CAAC;AACH;AAEO,SAAS,0BAA0B,OAAmC;AAC3E,QAAM,MAAM,IAAI,kBAAkB;AAElC,MAAI,MAAM,SAAS,KAAK,GAAG,UAAU,UAAU,KAAK;AACpD,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI,MAAM,MAAM,QAAQ,MAAM,IAAI,GAAG,eAAe,SAAS,MAAM,IAAI;AACvE,QAAI;AAAA,MACF,eAAe,MAAM,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR;AACA,QAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAC7B,MAAC,MAAM,KAAmB;AAAA,QAAQ,CAAC,MAAM,MACvC,kBAAkB,MAAM,KAAK,eAAe,CAAC,GAAG;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,IAAI,SAAS,SAAS,GAAG;AAC3B,UAAM,qBAAqB,OAAO,IAAI,QAAQ;AAAA,EAChD;AAEA,SAAO;AACT;AAEO,SAAS,yBAAyB,OAAkC;AACzE,QAAM,MAAM,IAAI,kBAAkB;AAElC,MAAI,MAAM,SAAS,KAAK,GAAG,UAAU,UAAU,KAAK;AACpD,MAAI,SAAS,KAAK,GAAG;AACnB,sBAAkB,MAAM,MAAM,KAAK,aAAa;AAAA,EAClD;AAEA,MAAI,IAAI,SAAS,SAAS,GAAG;AAC3B,UAAM,qBAAqB,OAAO,IAAI,QAAQ;AAAA,EAChD;AAEA,SAAO;AACT;AAEO,SAAS,4BAA4B,OAAuD;AACjG,QAAM,MAAM,IAAI,kBAAkB;AAElC,MAAI,MAAM,SAAS,KAAK,GAAG,UAAU,UAAU,KAAK;AACpD,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI;AAAA,MACF,eAAe,MAAM,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR;AACA,UAAM,SAAS,IAAI;AAAA,MACjB,SAAS,MAAM,IAAI;AAAA,MACnB;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR;AACA,QAAI,QAAQ;AACV,iBAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,MAAM,IAA+B,GAAG;AAClF,yBAAiB,SAAS,KAAK,gBAAgB,GAAG,IAAI;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,IAAI,SAAS,SAAS,GAAG;AAC3B,UAAM,qBAAqB,OAAO,IAAI,QAAQ;AAAA,EAChD;AAEA,SAAO;AACT;AAEO,SAAS,4BAA4B,OAAuD;AACjG,QAAM,MAAM,IAAI,kBAAkB;AAElC,MAAI,MAAM,SAAS,KAAK,GAAG,UAAU,UAAU,KAAK;AACpD,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI;AAAA,MACF,eAAe,MAAM,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR;AACA,UAAM,SAAS,IAAI;AAAA,MACjB,SAAS,MAAM,IAAI;AAAA,MACnB;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR;AACA,QAAI,QAAQ;AACV,iBAAW,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,MAAM,IAA+B,GAAG;AAC/E,kBAAU,MAAM,KAAK,gBAAgB,GAAG,IAAI;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAEA,MAAI,IAAI,SAAS,SAAS,GAAG;AAC3B,UAAM,qBAAqB,OAAO,IAAI,QAAQ;AAAA,EAChD;AAEA,SAAO;AACT;;;AC3yBO,SAAS,aAAa,QAAuC;AAClE,QAAM,WAAW,oBAAoB,MAAM;AAE3C,SAAO;AAAA,IACL,YAAwC;AACtC,aAAO,YAAY,UAAU,eAAe,yBAAyB;AAAA,IACvE;AAAA,IAEA,uBAAuB,cAAiD;AACtE,YAAM,sBAAsB,aAAa,KAAK;AAC9C,UAAI,CAAC,qBAAqB;AACxB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL;AAAA,QACA,eAAe,mBAAmB,mBAAmB,CAAC;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,kBAAkB,UAA8C;AAC9D,YAAM,kBAAkB,SAAS,KAAK;AACtC,UAAI,CAAC,iBAAiB;AACpB,cAAM,IAAI,0BAA0B,6BAA6B;AAAA,MACnE;AAEA,aAAO;AAAA,QACL;AAAA,QACA,sBAAsB,mBAAmB,eAAe,CAAC;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,cAA4C;AAC1C,aAAO,YAAY,UAAU,iBAAiB,2BAA2B;AAAA,IAC3E;AAAA,IAEA,cAA4C;AAC1C,aAAO,YAAY,UAAU,kBAAkB,2BAA2B;AAAA,IAC5E;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sereel/sdk",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "description": "TypeScript SDK for Sereel asset read endpoints",
5
5
  "license": "MIT",
6
6
  "type": "module",