@sereel/sdk 0.2.8 → 0.2.10

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/README.md CHANGED
@@ -190,9 +190,9 @@ Public-facing details about the organisation that issued the token.
190
190
  ```ts
191
191
  interface SdkIssuerSummary {
192
192
  id: string;
193
- legal_name: string;
193
+ legal_name: string | null;
194
194
  display_name: string | null;
195
- jurisdiction: string;
195
+ jurisdiction: string | null;
196
196
  website: string | null;
197
197
  logo_url: string | null;
198
198
  }
@@ -230,6 +230,9 @@ interface SdkBookSummary {
230
230
  initial_nav: string;
231
231
  fund_config: SdkFundConfig;
232
232
  status: IssuanceStatus;
233
+ visibility: string | null;
234
+ target_raise?: string | null; // raw settlement token units
235
+ target_raise_deadline?: string | null; // ISO-8601 close date/time
233
236
  created_at: string | null;
234
237
  }
235
238
  ```
package/dist/index.cjs CHANGED
@@ -340,9 +340,9 @@ function isIssuerSummary(value, ctx, path) {
340
340
  if (!ctx.check(v !== void 0, path, "object", value)) return false;
341
341
  ctx.check(isString(v.id), `${path}.id`, "string", v.id);
342
342
  ctx.check(
343
- isString(v.legal_name),
343
+ isNullableString(v.legal_name),
344
344
  `${path}.legal_name`,
345
- "string",
345
+ "string | null",
346
346
  v.legal_name
347
347
  );
348
348
  ctx.check(
@@ -352,9 +352,9 @@ function isIssuerSummary(value, ctx, path) {
352
352
  v.display_name
353
353
  );
354
354
  ctx.check(
355
- isString(v.jurisdiction),
355
+ isNullableString(v.jurisdiction),
356
356
  `${path}.jurisdiction`,
357
- "string",
357
+ "string | null",
358
358
  v.jurisdiction
359
359
  );
360
360
  ctx.check(
@@ -765,6 +765,18 @@ function isBookSummary(value, ctx, path) {
765
765
  "string | null",
766
766
  v.visibility
767
767
  );
768
+ ctx.check(
769
+ v.target_raise === void 0 || isNullableString(v.target_raise),
770
+ `${path}.target_raise`,
771
+ "string | null | undefined",
772
+ v.target_raise
773
+ );
774
+ ctx.check(
775
+ v.target_raise_deadline === void 0 || isNullableString(v.target_raise_deadline),
776
+ `${path}.target_raise_deadline`,
777
+ "string | null | undefined",
778
+ v.target_raise_deadline
779
+ );
768
780
  ctx.check(
769
781
  isNullableString(v.created_at),
770
782
  `${path}.created_at`,
@@ -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 ComplianceFactoryDetails,\n IssuanceStatus,\n KycTier,\n KycTierLimits,\n KycTierVerification,\n NativeCurrency,\n NetworkDetails,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkBookSummary,\n SdkComplianceFactoriesResponse,\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 ComplianceFactoryDetails,\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 isComplianceFactoryDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is ComplianceFactoryDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.deployer), `${path}.deployer`, \"string\", v!.deployer);\n ctx.check(isString(v!.salt), `${path}.salt`, \"string\", v!.salt);\n ctx.check(isString(v!.timestamp), `${path}.timestamp`, \"string\", v!.timestamp);\n ctx.check(\n isString(v!.identity_implementation),\n `${path}.identity_implementation`,\n \"string\",\n v!.identity_implementation,\n );\n ctx.check(\n isString(v!.implementation_authority),\n `${path}.implementation_authority`,\n \"string\",\n v!.implementation_authority,\n );\n ctx.check(isString(v!.id_factory), `${path}.id_factory`, \"string\", v!.id_factory);\n ctx.check(isString(v!.gateway), `${path}.gateway`, \"string\", v!.gateway);\n ctx.check(\n isString(v!.trex_implementation_authority),\n `${path}.trex_implementation_authority`,\n \"string\",\n v!.trex_implementation_authority,\n );\n ctx.check(\n isString(v!.erc3643_token_impl),\n `${path}.erc3643_token_impl`,\n \"string\",\n v!.erc3643_token_impl,\n );\n ctx.check(\n isString(v!.erc3643_modular_compliance_impl),\n `${path}.erc3643_modular_compliance_impl`,\n \"string\",\n v!.erc3643_modular_compliance_impl,\n );\n ctx.check(\n isString(v!.erc3643_identity_registry_storage),\n `${path}.erc3643_identity_registry_storage`,\n \"string\",\n v!.erc3643_identity_registry_storage,\n );\n ctx.check(\n isString(v!.erc3643_claim_topics_registry),\n `${path}.erc3643_claim_topics_registry`,\n \"string\",\n v!.erc3643_claim_topics_registry,\n );\n ctx.check(\n isString(v!.erc3643_trusted_issuers_registry),\n `${path}.erc3643_trusted_issuers_registry`,\n \"string\",\n v!.erc3643_trusted_issuers_registry,\n );\n ctx.check(\n isString(v!.erc3643_identity_registry),\n `${path}.erc3643_identity_registry`,\n \"string\",\n v!.erc3643_identity_registry,\n );\n ctx.check(isString(v!.claim_issuer), `${path}.claim_issuer`, \"string\", v!.claim_issuer);\n ctx.check(\n isString(v!.claim_issuer_management_key),\n `${path}.claim_issuer_management_key`,\n \"string\",\n v!.claim_issuer_management_key,\n );\n ctx.check(\n isString(v!.claim_signer_address),\n `${path}.claim_signer_address`,\n \"string\",\n v!.claim_signer_address,\n );\n ctx.check(\n isString(v!.token_implementation),\n `${path}.token_implementation`,\n \"string\",\n v!.token_implementation,\n );\n ctx.check(\n isString(v!.modular_compliance_implementation),\n `${path}.modular_compliance_implementation`,\n \"string\",\n v!.modular_compliance_implementation,\n );\n ctx.check(\n isString(v!.trex_factory_implementation_authority),\n `${path}.trex_factory_implementation_authority`,\n \"string\",\n v!.trex_factory_implementation_authority,\n );\n ctx.check(isString(v!.trex_factory), `${path}.trex_factory`, \"string\", v!.trex_factory);\n ctx.check(isString(v!.trex_gateway), `${path}.trex_gateway`, \"string\", v!.trex_gateway);\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 isNullableString(v!.settlement_token_name),\n `${path}.settlement_token_name`,\n \"string | null\",\n v!.settlement_token_name,\n );\n ctx.check(\n isNullableString(v!.settlement_token_symbol),\n `${path}.settlement_token_symbol`,\n \"string | null\",\n v!.settlement_token_symbol,\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(isString(v!.org_id), `${path}.org_id`, \"string\", v!.org_id);\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!.compliance_factory !== null && v!.compliance_factory !== undefined) {\n isComplianceFactoryDetails(v!.compliance_factory, ctx, `${path}.compliance_factory`);\n }\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 validateSdkComplianceFactoriesResponse(\n value: unknown,\n): import(\"./types\").SdkComplianceFactoriesResponse {\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, factory] of Object.entries(value.data as Record<string, unknown>)) {\n isComplianceFactoryDetails(factory, 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\").SdkComplianceFactoriesResponse;\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 SdkComplianceFactoriesResponse,\n SdkKycTiersResponse,\n SdkNetworksResponse,\n SereelSdkClient,\n} from \"./types\";\nimport {\n validateSdkAssetResponse,\n validateSdkAssetsResponse,\n validateSdkComplianceFactoriesResponse,\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 getComplianceFactories(): Promise<SdkComplianceFactoriesResponse> {\n return requestJson(\n resolved,\n \"/sdk/compliance-factories\",\n validateSdkComplianceFactoriesResponse,\n );\n },\n\n getKycTiers(): Promise<SdkKycTiersResponse> {\n return requestJson(resolved, \"/sdk/kyc_tiers\", validateSdkKycTiersResponse);\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 ComplianceFactoryDetails,\n IssuanceStatus,\n KycTier,\n KycTierLimits,\n KycTierVerification,\n NativeCurrency,\n NetworkDetails,\n SdkAssetResponse,\n SdkAssetsResponse,\n SdkBookSummary,\n SdkComplianceFactoriesResponse,\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 ComplianceFactoryDetails,\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 isNullableString(v!.legal_name),\n `${path}.legal_name`,\n \"string | null\",\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 isNullableString(v!.jurisdiction),\n `${path}.jurisdiction`,\n \"string | null\",\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 isComplianceFactoryDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is ComplianceFactoryDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.deployer), `${path}.deployer`, \"string\", v!.deployer);\n ctx.check(isString(v!.salt), `${path}.salt`, \"string\", v!.salt);\n ctx.check(isString(v!.timestamp), `${path}.timestamp`, \"string\", v!.timestamp);\n ctx.check(\n isString(v!.identity_implementation),\n `${path}.identity_implementation`,\n \"string\",\n v!.identity_implementation,\n );\n ctx.check(\n isString(v!.implementation_authority),\n `${path}.implementation_authority`,\n \"string\",\n v!.implementation_authority,\n );\n ctx.check(isString(v!.id_factory), `${path}.id_factory`, \"string\", v!.id_factory);\n ctx.check(isString(v!.gateway), `${path}.gateway`, \"string\", v!.gateway);\n ctx.check(\n isString(v!.trex_implementation_authority),\n `${path}.trex_implementation_authority`,\n \"string\",\n v!.trex_implementation_authority,\n );\n ctx.check(\n isString(v!.erc3643_token_impl),\n `${path}.erc3643_token_impl`,\n \"string\",\n v!.erc3643_token_impl,\n );\n ctx.check(\n isString(v!.erc3643_modular_compliance_impl),\n `${path}.erc3643_modular_compliance_impl`,\n \"string\",\n v!.erc3643_modular_compliance_impl,\n );\n ctx.check(\n isString(v!.erc3643_identity_registry_storage),\n `${path}.erc3643_identity_registry_storage`,\n \"string\",\n v!.erc3643_identity_registry_storage,\n );\n ctx.check(\n isString(v!.erc3643_claim_topics_registry),\n `${path}.erc3643_claim_topics_registry`,\n \"string\",\n v!.erc3643_claim_topics_registry,\n );\n ctx.check(\n isString(v!.erc3643_trusted_issuers_registry),\n `${path}.erc3643_trusted_issuers_registry`,\n \"string\",\n v!.erc3643_trusted_issuers_registry,\n );\n ctx.check(\n isString(v!.erc3643_identity_registry),\n `${path}.erc3643_identity_registry`,\n \"string\",\n v!.erc3643_identity_registry,\n );\n ctx.check(isString(v!.claim_issuer), `${path}.claim_issuer`, \"string\", v!.claim_issuer);\n ctx.check(\n isString(v!.claim_issuer_management_key),\n `${path}.claim_issuer_management_key`,\n \"string\",\n v!.claim_issuer_management_key,\n );\n ctx.check(\n isString(v!.claim_signer_address),\n `${path}.claim_signer_address`,\n \"string\",\n v!.claim_signer_address,\n );\n ctx.check(\n isString(v!.token_implementation),\n `${path}.token_implementation`,\n \"string\",\n v!.token_implementation,\n );\n ctx.check(\n isString(v!.modular_compliance_implementation),\n `${path}.modular_compliance_implementation`,\n \"string\",\n v!.modular_compliance_implementation,\n );\n ctx.check(\n isString(v!.trex_factory_implementation_authority),\n `${path}.trex_factory_implementation_authority`,\n \"string\",\n v!.trex_factory_implementation_authority,\n );\n ctx.check(isString(v!.trex_factory), `${path}.trex_factory`, \"string\", v!.trex_factory);\n ctx.check(isString(v!.trex_gateway), `${path}.trex_gateway`, \"string\", v!.trex_gateway);\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 isNullableString(v!.settlement_token_name),\n `${path}.settlement_token_name`,\n \"string | null\",\n v!.settlement_token_name,\n );\n ctx.check(\n isNullableString(v!.settlement_token_symbol),\n `${path}.settlement_token_symbol`,\n \"string | null\",\n v!.settlement_token_symbol,\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 v!.target_raise === undefined || isNullableString(v!.target_raise),\n `${path}.target_raise`,\n \"string | null | undefined\",\n v!.target_raise,\n );\n ctx.check(\n v!.target_raise_deadline === undefined ||\n isNullableString(v!.target_raise_deadline),\n `${path}.target_raise_deadline`,\n \"string | null | undefined\",\n v!.target_raise_deadline,\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(isString(v!.org_id), `${path}.org_id`, \"string\", v!.org_id);\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!.compliance_factory !== null && v!.compliance_factory !== undefined) {\n isComplianceFactoryDetails(v!.compliance_factory, ctx, `${path}.compliance_factory`);\n }\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 validateSdkComplianceFactoriesResponse(\n value: unknown,\n): import(\"./types\").SdkComplianceFactoriesResponse {\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, factory] of Object.entries(value.data as Record<string, unknown>)) {\n isComplianceFactoryDetails(factory, 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\").SdkComplianceFactoriesResponse;\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 SdkComplianceFactoriesResponse,\n SdkKycTiersResponse,\n SdkNetworksResponse,\n SereelSdkClient,\n} from \"./types\";\nimport {\n validateSdkAssetResponse,\n validateSdkAssetsResponse,\n validateSdkComplianceFactoriesResponse,\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 getComplianceFactories(): Promise<SdkComplianceFactoriesResponse> {\n return requestJson(\n resolved,\n \"/sdk/compliance-factories\",\n validateSdkComplianceFactoriesResponse,\n );\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
@@ -97,9 +97,9 @@ interface SdkSecurityDetails {
97
97
  }
98
98
  interface SdkIssuerSummary {
99
99
  id: string;
100
- legal_name: string;
100
+ legal_name: string | null;
101
101
  display_name: string | null;
102
- jurisdiction: string;
102
+ jurisdiction: string | null;
103
103
  website: string | null;
104
104
  logo_url: string | null;
105
105
  }
@@ -130,6 +130,8 @@ interface SdkBookSummary {
130
130
  fund_config: SdkFundConfig;
131
131
  status: IssuanceStatus;
132
132
  visibility: string | null;
133
+ target_raise?: string | null;
134
+ target_raise_deadline?: string | null;
133
135
  created_at: string | null;
134
136
  }
135
137
  interface SdkAssetsResponse {
package/dist/index.d.ts CHANGED
@@ -97,9 +97,9 @@ interface SdkSecurityDetails {
97
97
  }
98
98
  interface SdkIssuerSummary {
99
99
  id: string;
100
- legal_name: string;
100
+ legal_name: string | null;
101
101
  display_name: string | null;
102
- jurisdiction: string;
102
+ jurisdiction: string | null;
103
103
  website: string | null;
104
104
  logo_url: string | null;
105
105
  }
@@ -130,6 +130,8 @@ interface SdkBookSummary {
130
130
  fund_config: SdkFundConfig;
131
131
  status: IssuanceStatus;
132
132
  visibility: string | null;
133
+ target_raise?: string | null;
134
+ target_raise_deadline?: string | null;
133
135
  created_at: string | null;
134
136
  }
135
137
  interface SdkAssetsResponse {
package/dist/index.js CHANGED
@@ -301,9 +301,9 @@ function isIssuerSummary(value, ctx, path) {
301
301
  if (!ctx.check(v !== void 0, path, "object", value)) return false;
302
302
  ctx.check(isString(v.id), `${path}.id`, "string", v.id);
303
303
  ctx.check(
304
- isString(v.legal_name),
304
+ isNullableString(v.legal_name),
305
305
  `${path}.legal_name`,
306
- "string",
306
+ "string | null",
307
307
  v.legal_name
308
308
  );
309
309
  ctx.check(
@@ -313,9 +313,9 @@ function isIssuerSummary(value, ctx, path) {
313
313
  v.display_name
314
314
  );
315
315
  ctx.check(
316
- isString(v.jurisdiction),
316
+ isNullableString(v.jurisdiction),
317
317
  `${path}.jurisdiction`,
318
- "string",
318
+ "string | null",
319
319
  v.jurisdiction
320
320
  );
321
321
  ctx.check(
@@ -726,6 +726,18 @@ function isBookSummary(value, ctx, path) {
726
726
  "string | null",
727
727
  v.visibility
728
728
  );
729
+ ctx.check(
730
+ v.target_raise === void 0 || isNullableString(v.target_raise),
731
+ `${path}.target_raise`,
732
+ "string | null | undefined",
733
+ v.target_raise
734
+ );
735
+ ctx.check(
736
+ v.target_raise_deadline === void 0 || isNullableString(v.target_raise_deadline),
737
+ `${path}.target_raise_deadline`,
738
+ "string | null | undefined",
739
+ v.target_raise_deadline
740
+ );
729
741
  ctx.check(
730
742
  isNullableString(v.created_at),
731
743
  `${path}.created_at`,
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 ComplianceFactoryDetails,\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 isComplianceFactoryDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is ComplianceFactoryDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.deployer), `${path}.deployer`, \"string\", v!.deployer);\n ctx.check(isString(v!.salt), `${path}.salt`, \"string\", v!.salt);\n ctx.check(isString(v!.timestamp), `${path}.timestamp`, \"string\", v!.timestamp);\n ctx.check(\n isString(v!.identity_implementation),\n `${path}.identity_implementation`,\n \"string\",\n v!.identity_implementation,\n );\n ctx.check(\n isString(v!.implementation_authority),\n `${path}.implementation_authority`,\n \"string\",\n v!.implementation_authority,\n );\n ctx.check(isString(v!.id_factory), `${path}.id_factory`, \"string\", v!.id_factory);\n ctx.check(isString(v!.gateway), `${path}.gateway`, \"string\", v!.gateway);\n ctx.check(\n isString(v!.trex_implementation_authority),\n `${path}.trex_implementation_authority`,\n \"string\",\n v!.trex_implementation_authority,\n );\n ctx.check(\n isString(v!.erc3643_token_impl),\n `${path}.erc3643_token_impl`,\n \"string\",\n v!.erc3643_token_impl,\n );\n ctx.check(\n isString(v!.erc3643_modular_compliance_impl),\n `${path}.erc3643_modular_compliance_impl`,\n \"string\",\n v!.erc3643_modular_compliance_impl,\n );\n ctx.check(\n isString(v!.erc3643_identity_registry_storage),\n `${path}.erc3643_identity_registry_storage`,\n \"string\",\n v!.erc3643_identity_registry_storage,\n );\n ctx.check(\n isString(v!.erc3643_claim_topics_registry),\n `${path}.erc3643_claim_topics_registry`,\n \"string\",\n v!.erc3643_claim_topics_registry,\n );\n ctx.check(\n isString(v!.erc3643_trusted_issuers_registry),\n `${path}.erc3643_trusted_issuers_registry`,\n \"string\",\n v!.erc3643_trusted_issuers_registry,\n );\n ctx.check(\n isString(v!.erc3643_identity_registry),\n `${path}.erc3643_identity_registry`,\n \"string\",\n v!.erc3643_identity_registry,\n );\n ctx.check(isString(v!.claim_issuer), `${path}.claim_issuer`, \"string\", v!.claim_issuer);\n ctx.check(\n isString(v!.claim_issuer_management_key),\n `${path}.claim_issuer_management_key`,\n \"string\",\n v!.claim_issuer_management_key,\n );\n ctx.check(\n isString(v!.claim_signer_address),\n `${path}.claim_signer_address`,\n \"string\",\n v!.claim_signer_address,\n );\n ctx.check(\n isString(v!.token_implementation),\n `${path}.token_implementation`,\n \"string\",\n v!.token_implementation,\n );\n ctx.check(\n isString(v!.modular_compliance_implementation),\n `${path}.modular_compliance_implementation`,\n \"string\",\n v!.modular_compliance_implementation,\n );\n ctx.check(\n isString(v!.trex_factory_implementation_authority),\n `${path}.trex_factory_implementation_authority`,\n \"string\",\n v!.trex_factory_implementation_authority,\n );\n ctx.check(isString(v!.trex_factory), `${path}.trex_factory`, \"string\", v!.trex_factory);\n ctx.check(isString(v!.trex_gateway), `${path}.trex_gateway`, \"string\", v!.trex_gateway);\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 isNullableString(v!.settlement_token_name),\n `${path}.settlement_token_name`,\n \"string | null\",\n v!.settlement_token_name,\n );\n ctx.check(\n isNullableString(v!.settlement_token_symbol),\n `${path}.settlement_token_symbol`,\n \"string | null\",\n v!.settlement_token_symbol,\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(isString(v!.org_id), `${path}.org_id`, \"string\", v!.org_id);\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!.compliance_factory !== null && v!.compliance_factory !== undefined) {\n isComplianceFactoryDetails(v!.compliance_factory, ctx, `${path}.compliance_factory`);\n }\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 validateSdkComplianceFactoriesResponse(\n value: unknown,\n): import(\"./types\").SdkComplianceFactoriesResponse {\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, factory] of Object.entries(value.data as Record<string, unknown>)) {\n isComplianceFactoryDetails(factory, 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\").SdkComplianceFactoriesResponse;\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 SdkComplianceFactoriesResponse,\n SdkKycTiersResponse,\n SdkNetworksResponse,\n SereelSdkClient,\n} from \"./types\";\nimport {\n validateSdkAssetResponse,\n validateSdkAssetsResponse,\n validateSdkComplianceFactoriesResponse,\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 getComplianceFactories(): Promise<SdkComplianceFactoriesResponse> {\n return requestJson(\n resolved,\n \"/sdk/compliance-factories\",\n validateSdkComplianceFactoriesResponse,\n );\n },\n\n getKycTiers(): Promise<SdkKycTiersResponse> {\n return requestJson(resolved, \"/sdk/kyc_tiers\", validateSdkKycTiersResponse);\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 ComplianceFactoryDetails,\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 isNullableString(v!.legal_name),\n `${path}.legal_name`,\n \"string | null\",\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 isNullableString(v!.jurisdiction),\n `${path}.jurisdiction`,\n \"string | null\",\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 isComplianceFactoryDetails(\n value: unknown,\n ctx: ValidationContext,\n path: string,\n): value is ComplianceFactoryDetails {\n const v = asRecord(value);\n if (!ctx.check(v !== undefined, path, \"object\", value)) return false;\n ctx.check(isString(v!.deployer), `${path}.deployer`, \"string\", v!.deployer);\n ctx.check(isString(v!.salt), `${path}.salt`, \"string\", v!.salt);\n ctx.check(isString(v!.timestamp), `${path}.timestamp`, \"string\", v!.timestamp);\n ctx.check(\n isString(v!.identity_implementation),\n `${path}.identity_implementation`,\n \"string\",\n v!.identity_implementation,\n );\n ctx.check(\n isString(v!.implementation_authority),\n `${path}.implementation_authority`,\n \"string\",\n v!.implementation_authority,\n );\n ctx.check(isString(v!.id_factory), `${path}.id_factory`, \"string\", v!.id_factory);\n ctx.check(isString(v!.gateway), `${path}.gateway`, \"string\", v!.gateway);\n ctx.check(\n isString(v!.trex_implementation_authority),\n `${path}.trex_implementation_authority`,\n \"string\",\n v!.trex_implementation_authority,\n );\n ctx.check(\n isString(v!.erc3643_token_impl),\n `${path}.erc3643_token_impl`,\n \"string\",\n v!.erc3643_token_impl,\n );\n ctx.check(\n isString(v!.erc3643_modular_compliance_impl),\n `${path}.erc3643_modular_compliance_impl`,\n \"string\",\n v!.erc3643_modular_compliance_impl,\n );\n ctx.check(\n isString(v!.erc3643_identity_registry_storage),\n `${path}.erc3643_identity_registry_storage`,\n \"string\",\n v!.erc3643_identity_registry_storage,\n );\n ctx.check(\n isString(v!.erc3643_claim_topics_registry),\n `${path}.erc3643_claim_topics_registry`,\n \"string\",\n v!.erc3643_claim_topics_registry,\n );\n ctx.check(\n isString(v!.erc3643_trusted_issuers_registry),\n `${path}.erc3643_trusted_issuers_registry`,\n \"string\",\n v!.erc3643_trusted_issuers_registry,\n );\n ctx.check(\n isString(v!.erc3643_identity_registry),\n `${path}.erc3643_identity_registry`,\n \"string\",\n v!.erc3643_identity_registry,\n );\n ctx.check(isString(v!.claim_issuer), `${path}.claim_issuer`, \"string\", v!.claim_issuer);\n ctx.check(\n isString(v!.claim_issuer_management_key),\n `${path}.claim_issuer_management_key`,\n \"string\",\n v!.claim_issuer_management_key,\n );\n ctx.check(\n isString(v!.claim_signer_address),\n `${path}.claim_signer_address`,\n \"string\",\n v!.claim_signer_address,\n );\n ctx.check(\n isString(v!.token_implementation),\n `${path}.token_implementation`,\n \"string\",\n v!.token_implementation,\n );\n ctx.check(\n isString(v!.modular_compliance_implementation),\n `${path}.modular_compliance_implementation`,\n \"string\",\n v!.modular_compliance_implementation,\n );\n ctx.check(\n isString(v!.trex_factory_implementation_authority),\n `${path}.trex_factory_implementation_authority`,\n \"string\",\n v!.trex_factory_implementation_authority,\n );\n ctx.check(isString(v!.trex_factory), `${path}.trex_factory`, \"string\", v!.trex_factory);\n ctx.check(isString(v!.trex_gateway), `${path}.trex_gateway`, \"string\", v!.trex_gateway);\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 isNullableString(v!.settlement_token_name),\n `${path}.settlement_token_name`,\n \"string | null\",\n v!.settlement_token_name,\n );\n ctx.check(\n isNullableString(v!.settlement_token_symbol),\n `${path}.settlement_token_symbol`,\n \"string | null\",\n v!.settlement_token_symbol,\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 v!.target_raise === undefined || isNullableString(v!.target_raise),\n `${path}.target_raise`,\n \"string | null | undefined\",\n v!.target_raise,\n );\n ctx.check(\n v!.target_raise_deadline === undefined ||\n isNullableString(v!.target_raise_deadline),\n `${path}.target_raise_deadline`,\n \"string | null | undefined\",\n v!.target_raise_deadline,\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(isString(v!.org_id), `${path}.org_id`, \"string\", v!.org_id);\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!.compliance_factory !== null && v!.compliance_factory !== undefined) {\n isComplianceFactoryDetails(v!.compliance_factory, ctx, `${path}.compliance_factory`);\n }\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 validateSdkComplianceFactoriesResponse(\n value: unknown,\n): import(\"./types\").SdkComplianceFactoriesResponse {\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, factory] of Object.entries(value.data as Record<string, unknown>)) {\n isComplianceFactoryDetails(factory, 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\").SdkComplianceFactoriesResponse;\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 SdkComplianceFactoriesResponse,\n SdkKycTiersResponse,\n SdkNetworksResponse,\n SereelSdkClient,\n} from \"./types\";\nimport {\n validateSdkAssetResponse,\n validateSdkAssetsResponse,\n validateSdkComplianceFactoriesResponse,\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 getComplianceFactories(): Promise<SdkComplianceFactoriesResponse> {\n return requestJson(\n resolved,\n \"/sdk/compliance-factories\",\n validateSdkComplianceFactoriesResponse,\n );\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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sereel/sdk",
3
- "version": "0.2.8",
3
+ "version": "0.2.10",
4
4
  "description": "TypeScript SDK for Sereel asset read endpoints",
5
5
  "license": "MIT",
6
6
  "type": "module",