@accesly/core 1.4.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -297,6 +297,46 @@ var AccesslyEndpoints = class {
297
297
  submitTx(req) {
298
298
  return this.client.post("/tx/submit", req);
299
299
  }
300
+ /**
301
+ * Cognito-auth. Simula `smart_account.add_context_rule(...)` para activar un
302
+ * nuevo asset (e.g. USDC) en una wallet ya deployada. Caso típico: wallets
303
+ * pre-1.4 que vienen con rule 0 = XLM solo y necesitan agregar rule N+1
304
+ * para USDC sin re-deployar.
305
+ *
306
+ * Response shape idéntico a `simulateTx` — el SDK firma el `auth_digest` con
307
+ * el mismo passkey contra la regla admin-cfg.
308
+ */
309
+ activateAssetSimulate(req) {
310
+ return this.client.post(
311
+ "/tx/activate-asset/simulate",
312
+ req
313
+ );
314
+ }
315
+ /** Cognito-auth. Submit del add_context_rule firmado (mismo shape que submitTx). */
316
+ activateAssetSubmit(req) {
317
+ return this.client.post(
318
+ "/tx/activate-asset/submit",
319
+ req
320
+ );
321
+ }
322
+ /**
323
+ * Cognito-auth. Cotiza un swap XLM↔USDC via Soroswap Aggregator y devuelve
324
+ * el material para que el SDK firme la auth entry contra la regla
325
+ * biometric-tx del asset de entrada.
326
+ */
327
+ swapSimulate(req) {
328
+ return this.client.post(
329
+ "/tx/swap/simulate",
330
+ req
331
+ );
332
+ }
333
+ /** Cognito-auth. Submit del swap firmado (mismo shape que submitTx). */
334
+ swapSubmit(req) {
335
+ return this.client.post(
336
+ "/tx/swap/submit",
337
+ req
338
+ );
339
+ }
300
340
  /** Cognito-auth. Starts a KYC verification with Etherfuse. */
301
341
  kycStart() {
302
342
  return this.client.post("/kyc");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/api/errors.ts","../../src/api/client.ts","../../src/api/endpoints.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Typed error hierarchy for the Accesly API client.\n *\n * Every error thrown by the API client is a subclass of `AccesslyApiError`,\n * so consumers can do:\n * try { ... } catch (e) {\n * if (e instanceof AuthError) return relogin();\n * if (e instanceof NetworkError) return retryLater();\n * throw e;\n * }\n */\n\nexport interface AccesslyApiErrorOptions {\n readonly status: number;\n readonly code?: string | undefined;\n readonly requestId?: string | undefined;\n readonly cause?: unknown;\n}\n\nexport class AccesslyApiError extends Error {\n readonly status: number;\n readonly code: string;\n readonly requestId: string | undefined;\n override readonly cause: unknown;\n\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message);\n this.name = 'AccesslyApiError';\n this.status = opts.status;\n this.code = opts.code ?? `HTTP_${opts.status}`;\n this.requestId = opts.requestId;\n this.cause = opts.cause;\n }\n}\n\n/** 401 / 403 — caller should re-authenticate (or check appId/permissions). */\nexport class AuthError extends AccesslyApiError {\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message, opts);\n this.name = 'AuthError';\n }\n}\n\n/** 400 / 422 — request body or query was malformed. */\nexport class ValidationError extends AccesslyApiError {\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message, opts);\n this.name = 'ValidationError';\n }\n}\n\n/** 404 — resource does not exist. */\nexport class NotFoundError extends AccesslyApiError {\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message, opts);\n this.name = 'NotFoundError';\n }\n}\n\n/** 429 — caller should back off. */\nexport class RateLimitError extends AccesslyApiError {\n readonly retryAfterSeconds: number | undefined;\n\n constructor(\n message: string,\n opts: AccesslyApiErrorOptions & { retryAfterSeconds?: number | undefined },\n ) {\n super(message, opts);\n this.name = 'RateLimitError';\n this.retryAfterSeconds = opts.retryAfterSeconds;\n }\n}\n\n/** 5xx — server-side problem, the client already exhausted its retries. */\nexport class ServerError extends AccesslyApiError {\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message, opts);\n this.name = 'ServerError';\n }\n}\n\n/** Fetch threw (DNS fail, TLS error, abort, etc.) or response was not parseable. */\nexport class NetworkError extends AccesslyApiError {\n constructor(message: string, opts: Omit<AccesslyApiErrorOptions, 'status'>) {\n super(message, { ...opts, status: 0 });\n this.name = 'NetworkError';\n }\n}\n\n/**\n * Maps an HTTP status code + body to the right error subclass.\n */\nexport function errorForResponse(\n status: number,\n body: unknown,\n requestId: string | undefined,\n): AccesslyApiError {\n const message = extractMessage(body) ?? `HTTP ${status}`;\n const opts: AccesslyApiErrorOptions = { status, code: extractCode(body), requestId };\n if (status === 401 || status === 403) return new AuthError(message, opts);\n if (status === 404) return new NotFoundError(message, opts);\n if (status === 429) {\n return new RateLimitError(message, {\n ...opts,\n retryAfterSeconds: extractRetryAfter(body),\n });\n }\n if (status >= 400 && status < 500) return new ValidationError(message, opts);\n if (status >= 500) return new ServerError(message, opts);\n return new AccesslyApiError(message, opts);\n}\n\nfunction extractMessage(body: unknown): string | undefined {\n if (body && typeof body === 'object') {\n const b = body as { message?: unknown; error?: unknown };\n if (typeof b.message === 'string') return b.message;\n if (typeof b.error === 'string') return b.error;\n }\n return undefined;\n}\n\nfunction extractCode(body: unknown): string | undefined {\n if (body && typeof body === 'object') {\n const b = body as { code?: unknown };\n if (typeof b.code === 'string') return b.code;\n }\n return undefined;\n}\n\nfunction extractRetryAfter(body: unknown): number | undefined {\n if (body && typeof body === 'object') {\n const b = body as { retryAfter?: unknown };\n if (typeof b.retryAfter === 'number' && b.retryAfter >= 0) return b.retryAfter;\n }\n return undefined;\n}\n","/**\n * Typed HTTP client for the Accesly backend.\n *\n * - Auto-injects `Authorization: <idToken>` (no `Bearer ` prefix — the backend\n * API Gateway REST v1 + Cognito Authorizer expects the raw JWT, see the\n * handoff doc gotcha).\n * - Retries idempotent requests on 5xx / network errors with exponential\n * backoff + jitter.\n * - Emits structured telemetry events the consumer can hook into.\n */\n\nimport { AccesslyApiError, NetworkError, errorForResponse } from './errors.js';\n\nexport type IdTokenProvider = () => string | null | Promise<string | null>;\n\nexport type TelemetryEvent =\n | { kind: 'request'; method: string; url: string; attempt: number }\n | {\n kind: 'response';\n method: string;\n url: string;\n status: number;\n durationMs: number;\n attempt: number;\n }\n | {\n kind: 'error';\n method: string;\n url: string;\n error: string;\n attempt: number;\n }\n | { kind: 'retry'; method: string; url: string; attempt: number; delayMs: number };\n\nexport type TelemetrySink = (event: TelemetryEvent) => void;\n\nexport interface AccesslyApiClientOptions {\n readonly baseUrl: string;\n /** Returns the current idToken, or null if the caller is anonymous. */\n readonly getIdToken?: IdTokenProvider;\n /** Override the global `fetch`. Tests only. */\n readonly fetchImpl?: typeof fetch;\n /** Max retries for idempotent requests on 5xx / network errors. Default 3. */\n readonly maxRetries?: number;\n /** Request timeout in ms. Default 30_000. */\n readonly timeoutMs?: number;\n /** Telemetry sink. Default no-op. */\n readonly telemetry?: TelemetrySink;\n /**\n * Override the backoff delay calculator (ms by attempt index, 1-based).\n * Tests only. Default: 500 * 2^(attempt-1) ± 20% jitter.\n */\n readonly backoffMs?: (attempt: number) => number;\n}\n\nexport type Json =\n | null\n | boolean\n | number\n | string\n | readonly Json[]\n | { readonly [k: string]: Json };\n\nexport interface RequestOptions {\n readonly headers?: Record<string, string>;\n readonly signal?: AbortSignal;\n readonly query?: Record<string, string | number | boolean | undefined>;\n /** If `false`, the request will NOT be retried. Default `true` for GET. */\n readonly retry?: boolean;\n}\n\n/** HTTP methods the client supports. */\ntype HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n\nconst IDEMPOTENT_METHODS: ReadonlySet<HttpMethod> = new Set(['GET']);\n\nexport class AccesslyApiClient {\n private readonly baseUrl: string;\n private readonly getIdToken: IdTokenProvider | undefined;\n private readonly fetchImpl: typeof fetch;\n private readonly maxRetries: number;\n private readonly timeoutMs: number;\n private readonly telemetry: TelemetrySink;\n private readonly backoffMs: (attempt: number) => number;\n\n constructor(opts: AccesslyApiClientOptions) {\n if (!opts.baseUrl) throw new TypeError('AccesslyApiClient: baseUrl is required');\n this.baseUrl = opts.baseUrl.replace(/\\/+$/, '');\n this.getIdToken = opts.getIdToken;\n // `?? fetch` keeps a reference even after globalThis.fetch is reassigned\n // in tests, so users get the fetch they had when constructing the client.\n this.fetchImpl = opts.fetchImpl ?? globalThis.fetch.bind(globalThis);\n this.maxRetries = opts.maxRetries ?? 3;\n this.timeoutMs = opts.timeoutMs ?? 30_000;\n this.telemetry = opts.telemetry ?? (() => undefined);\n this.backoffMs = opts.backoffMs ?? defaultBackoff;\n }\n\n get<T>(path: string, opts?: RequestOptions): Promise<T> {\n return this.request<T>('GET', path, undefined, opts);\n }\n\n post<T>(path: string, body?: Json, opts?: RequestOptions): Promise<T> {\n return this.request<T>('POST', path, body, opts);\n }\n\n put<T>(path: string, body?: Json, opts?: RequestOptions): Promise<T> {\n return this.request<T>('PUT', path, body, opts);\n }\n\n delete<T>(path: string, opts?: RequestOptions): Promise<T> {\n return this.request<T>('DELETE', path, undefined, opts);\n }\n\n patch<T>(path: string, body?: Json, opts?: RequestOptions): Promise<T> {\n return this.request<T>('PATCH', path, body, opts);\n }\n\n private async request<T>(\n method: HttpMethod,\n path: string,\n body: Json | undefined,\n opts: RequestOptions | undefined,\n ): Promise<T> {\n const url = this.buildUrl(path, opts?.query);\n const shouldRetry = opts?.retry ?? IDEMPOTENT_METHODS.has(method);\n const idToken = this.getIdToken ? await this.getIdToken() : null;\n\n const headers: Record<string, string> = {\n Accept: 'application/json',\n ...opts?.headers,\n };\n if (body !== undefined) headers['Content-Type'] = 'application/json';\n if (idToken) {\n // NOTE: API Gateway REST v1 + Cognito Authorizer expects the bare JWT,\n // NOT `Bearer <jwt>`. See CloudServices-accesly/docs/Handoff_Fase3.md.\n headers['Authorization'] = idToken;\n }\n\n const init: RequestInit = { method, headers };\n if (body !== undefined) init.body = JSON.stringify(body);\n\n let attempt = 0;\n let lastError: unknown;\n const maxAttempts = shouldRetry ? this.maxRetries + 1 : 1;\n\n while (attempt < maxAttempts) {\n attempt += 1;\n this.telemetry({ kind: 'request', method, url, attempt });\n const startedAt = Date.now();\n const ac = new AbortController();\n const timeoutId = setTimeout(() => ac.abort(), this.timeoutMs);\n const signal = combineSignals(opts?.signal, ac.signal);\n try {\n const res = await this.fetchImpl(url, { ...init, signal });\n const durationMs = Date.now() - startedAt;\n this.telemetry({\n kind: 'response',\n method,\n url,\n status: res.status,\n durationMs,\n attempt,\n });\n clearTimeout(timeoutId);\n\n if (res.status >= 500 && shouldRetry && attempt < maxAttempts) {\n const delay = this.backoffMs(attempt);\n this.telemetry({ kind: 'retry', method, url, attempt, delayMs: delay });\n await sleep(delay);\n continue;\n }\n\n return await this.handleResponse<T>(res);\n } catch (err) {\n clearTimeout(timeoutId);\n if (err instanceof AccesslyApiError) {\n // Already shaped — bubble up without retrying.\n throw err;\n }\n const description = describeError(err);\n this.telemetry({ kind: 'error', method, url, error: description, attempt });\n lastError = err;\n if (shouldRetry && attempt < maxAttempts) {\n const delay = this.backoffMs(attempt);\n this.telemetry({ kind: 'retry', method, url, attempt, delayMs: delay });\n await sleep(delay);\n continue;\n }\n throw new NetworkError(`fetch failed: ${description}`, { cause: err });\n }\n }\n\n // Unreachable, but TS needs an explicit throw.\n throw new NetworkError('retries exhausted', { cause: lastError });\n }\n\n private async handleResponse<T>(res: Response): Promise<T> {\n const requestId =\n res.headers.get('x-amzn-RequestId') ?? res.headers.get('x-request-id') ?? undefined;\n if (res.ok) {\n if (res.status === 204) return undefined as unknown as T;\n const text = await res.text();\n if (text.length === 0) return undefined as unknown as T;\n try {\n return JSON.parse(text) as T;\n } catch (err) {\n throw new NetworkError('response is not valid JSON', { cause: err, requestId });\n }\n }\n // Non-2xx: try to parse a JSON body for the error shape.\n let parsed: unknown;\n try {\n const text = await res.text();\n parsed = text.length > 0 ? JSON.parse(text) : undefined;\n } catch {\n parsed = undefined;\n }\n throw errorForResponse(res.status, parsed, requestId);\n }\n\n private buildUrl(path: string, query?: RequestOptions['query']): string {\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n const url = new URL(this.baseUrl + cleanPath);\n if (query) {\n for (const [k, v] of Object.entries(query)) {\n if (v === undefined) continue;\n url.searchParams.set(k, String(v));\n }\n }\n return url.toString();\n }\n}\n\nfunction defaultBackoff(attempt: number): number {\n const base = 500 * 2 ** (attempt - 1);\n const jitter = base * 0.2 * (Math.random() * 2 - 1); // ±20%\n return Math.max(0, Math.floor(base + jitter));\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nfunction describeError(err: unknown): string {\n if (err instanceof Error) return `${err.name}: ${err.message}`;\n return String(err);\n}\n\nfunction combineSignals(a: AbortSignal | undefined, b: AbortSignal): AbortSignal {\n if (!a) return b;\n if (a.aborted) return a;\n if (b.aborted) return b;\n const ac = new AbortController();\n const onAbort = (): void => ac.abort();\n a.addEventListener('abort', onAbort, { once: true });\n b.addEventListener('abort', onAbort, { once: true });\n return ac.signal;\n}\n","/**\n * Typed wrappers for the Accesly backend REST endpoints. One method per\n * route in `CloudServices-accesly/docs/openapi.yaml`.\n *\n * Each wrapper is a one-liner over `AccesslyApiClient` — the value is the\n * typed signature, which makes auto-complete + refactors safe.\n */\n\nimport type {\n CreateWalletRequest,\n CreateWalletResponse,\n FinalizeRecoveryRequest,\n FinalizeRecoveryResponse,\n GetFragment2Request,\n GetFragment2Response,\n GetFragment3Response,\n GetWalletResponse,\n HealthResponse,\n KycStartResponse,\n OrderRequest,\n OrderResponse,\n RecoveryOtpRequestInput,\n RecoveryOtpRequestResponse,\n RecoveryOtpVerifyInput,\n RecoveryOtpVerifyResponse,\n SimulateRotateSignerRequest,\n SimulateRotateSignerResponse,\n SimulateTxRequest,\n SimulateTxResponse,\n SubmitTxRequest,\n SubmitTxResponse,\n WalletActivityResponse,\n WalletBalanceResponse,\n WalletHistoryRequestOptions,\n WalletHistoryResponse,\n} from '../types/api.js';\nimport { NotFoundError } from './errors.js';\nimport type { AccesslyApiClient, Json } from './client.js';\n\nexport class AccesslyEndpoints {\n constructor(private readonly client: AccesslyApiClient) {}\n\n /** Public liveness check. No auth header sent. */\n health(): Promise<HealthResponse> {\n return this.client.get<HealthResponse>('/health');\n }\n\n /** Cognito-auth. Deploys the user's Smart Account on Soroban. */\n createWallet(req: CreateWalletRequest): Promise<CreateWalletResponse> {\n return this.client.post<CreateWalletResponse>('/wallets', req as unknown as Json);\n }\n\n /**\n * Cognito-auth. Returns the user's already-deployed Smart Account metadata,\n * or `null` if the user has not yet completed `POST /wallets`.\n *\n * Idempotent — safe to call at the top of every authenticated session.\n * Cheap on the backend (metadata read, no KMS decrypt).\n */\n async getWallet(): Promise<GetWalletResponse | null> {\n try {\n return await this.client.get<GetWalletResponse>('/wallets');\n } catch (err) {\n if (err instanceof NotFoundError) return null;\n throw err;\n }\n }\n\n /** Cognito-auth. Returns F2 re-encrypted with a per-request session key. */\n getFragment2(req: GetFragment2Request): Promise<GetFragment2Response> {\n return this.client.post<GetFragment2Response>('/fragments/2', req as unknown as Json);\n }\n\n /**\n * Cognito-auth. Simula `XLM_SAC.transfer(from=smartAccount, to, amount)` y\n * devuelve los datos para que el SDK firme la auth entry client-side. NO\n * mueve fondos — solo prepara el material para `submitTx`.\n */\n simulateTx(req: SimulateTxRequest): Promise<SimulateTxResponse> {\n return this.client.post<SimulateTxResponse>('/tx/simulate', req as unknown as Json);\n }\n\n /**\n * Cognito-auth. Recibe la `SorobanAuthorizationEntry` firmada por el SDK +\n * el envelope que `simulateTx` devolvió. El backend re-simula con la firma\n * real, KMS-firma el envelope con `channels-fund` (developer-pays) y envía\n * a Soroban RPC. Devuelve el `txHash` para que la UI pueda mostrar el\n * resultado / link a explorer.\n */\n submitTx(req: SubmitTxRequest): Promise<SubmitTxResponse> {\n return this.client.post<SubmitTxResponse>('/tx/submit', req as unknown as Json);\n }\n\n /** Cognito-auth. Starts a KYC verification with Etherfuse. */\n kycStart(): Promise<KycStartResponse> {\n return this.client.post<KycStartResponse>('/kyc');\n }\n\n /** Cognito-auth. Reads the current user's KYC status. */\n kycStatus(): Promise<KycStartResponse> {\n return this.client.get<KycStartResponse>('/kyc');\n }\n\n /** Cognito-auth. Quote or submit an MXN→USDC onramp order. */\n onramp(req: OrderRequest): Promise<OrderResponse> {\n return this.client.post<OrderResponse>('/onramp', req as unknown as Json);\n }\n\n /** Cognito-auth. Quote or submit a USDC→MXN offramp order. */\n offramp(req: OrderRequest): Promise<OrderResponse> {\n return this.client.post<OrderResponse>('/offramp', req as unknown as Json);\n }\n\n /* ── v1.1.0: read-only wallet data ─────────────────────────────────────── */\n\n /**\n * Anónimo. Balance XLM del Smart Account (vía Soroban RPC, cached ~5s).\n * No requiere JWT — la address en sí es pública on-chain.\n */\n walletBalance(address: string): Promise<WalletBalanceResponse> {\n return this.client.get<WalletBalanceResponse>(\n `/wallets/${encodeURIComponent(address)}/balance`,\n );\n }\n\n /**\n * Anónimo. Últimos eventos on-chain del Smart Account (rotate_signer,\n * transfers, etc.). Cacheado ~15s. `limit` default 20, max 50.\n */\n walletActivity(address: string, limit?: number): Promise<WalletActivityResponse> {\n const qs = limit !== undefined ? `?limit=${encodeURIComponent(String(limit))}` : '';\n return this.client.get<WalletActivityResponse>(\n `/wallets/${encodeURIComponent(address)}/activity${qs}`,\n );\n }\n\n /**\n * Anónimo. Historial completo del wallet — pre-decodificado server-side desde\n * Stellar Expert (que en browser está bloqueado por CORS). Devuelve items\n * tipados: `wallet-created`, `signer-rotated`, `transfer-in`, `transfer-out`.\n *\n * Cursor-based: pasa `saCursor` y/o `txCursor` para paginar atrás. El primer\n * fetch (sin cursors) incluye un evento sintético `wallet-created` desde la\n * metadata del contrato.\n */\n walletHistory(\n address: string,\n opts: WalletHistoryRequestOptions = {},\n ): Promise<WalletHistoryResponse> {\n const params = new URLSearchParams();\n if (opts.smartAccountCursor) params.set('saCursor', opts.smartAccountCursor);\n if (opts.transfersCursor) params.set('txCursor', opts.transfersCursor);\n if (opts.transferScanLimit !== undefined) {\n params.set('scanLimit', String(opts.transferScanLimit));\n }\n const qs = params.toString();\n return this.client.get<WalletHistoryResponse>(\n `/wallets/${encodeURIComponent(address)}/history${qs ? '?' + qs : ''}`,\n );\n }\n\n /* ── Recovery v2 (Fase 1, 2026-06-15) ──────────────────────────────────── */\n\n /**\n * Anónimo. Pide al backend que mande un OTP de 6 dígitos al email.\n *\n * Rate-limited: el backend rechaza con 429 si pediste otro hace menos de\n * 60s o más de 3 en la última hora. Anti-enumeración: la respuesta es 200\n * OK aunque el email no exista.\n */\n requestRecoveryOtp(input: RecoveryOtpRequestInput): Promise<RecoveryOtpRequestResponse> {\n return this.client.post<RecoveryOtpRequestResponse>(\n '/recovery/otp/request',\n input as unknown as Json,\n );\n }\n\n /**\n * Anónimo. Verifica el OTP. Si OK, devuelve un `recoveryJwt` que\n * autoriza los dos endpoints siguientes (`getFragment3`,\n * `finalizeRecovery`) durante 5 min.\n */\n verifyRecoveryOtp(input: RecoveryOtpVerifyInput): Promise<RecoveryOtpVerifyResponse> {\n return this.client.post<RecoveryOtpVerifyResponse>(\n '/recovery/otp/verify',\n input as unknown as Json,\n );\n }\n\n /**\n * Anónimo + header `X-Recovery-Jwt`. Devuelve `{fragmentF3Encrypted,\n * recoverySalt}`. El SDK descifra F3 con la `recoveryKey` derivada\n * client-side (PBKDF2(password, recoverySalt, 600k)).\n */\n getFragment3(recoveryJwt: string): Promise<GetFragment3Response> {\n return this.client.get<GetFragment3Response>('/fragments/3', {\n headers: { 'X-Recovery-Jwt': recoveryJwt },\n });\n }\n\n /**\n * Anónimo + header `X-Recovery-Jwt`. El backend arma + simula la tx\n * `rotate_signer(newOwner, newSecp256r1, newEmailCommit)` contra el Smart\n * Account del usuario y devuelve el material que el SDK necesita para\n * firmar la `SorobanAuthorizationEntry` con la seed VIEJA (reconstruida\n * por Shamir(F2_recovery, F3)) contra la regla `admin-cfg`.\n */\n simulateRotateSigner(\n recoveryJwt: string,\n payload: SimulateRotateSignerRequest,\n ): Promise<SimulateRotateSignerResponse> {\n return this.client.post<SimulateRotateSignerResponse>(\n '/recovery/simulate-rotate-signer',\n payload as unknown as Json,\n {\n headers: { 'X-Recovery-Jwt': recoveryJwt },\n },\n );\n }\n\n /**\n * Anónimo + header `X-Recovery-Jwt`. Submitea la tx `rotate_signer` firmada\n * por el SDK con la seed reconstruida (F2+F3) y persiste las nuevas\n * F1'/F2'/F3' en DDB. Idempotente del lado backend.\n */\n finalizeRecovery(\n recoveryJwt: string,\n payload: FinalizeRecoveryRequest,\n ): Promise<FinalizeRecoveryResponse> {\n return this.client.post<FinalizeRecoveryResponse>(\n '/recovery/finalize',\n payload as unknown as Json,\n {\n headers: { 'X-Recovery-Jwt': recoveryJwt },\n },\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/api/errors.ts","../../src/api/client.ts","../../src/api/endpoints.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Typed error hierarchy for the Accesly API client.\n *\n * Every error thrown by the API client is a subclass of `AccesslyApiError`,\n * so consumers can do:\n * try { ... } catch (e) {\n * if (e instanceof AuthError) return relogin();\n * if (e instanceof NetworkError) return retryLater();\n * throw e;\n * }\n */\n\nexport interface AccesslyApiErrorOptions {\n readonly status: number;\n readonly code?: string | undefined;\n readonly requestId?: string | undefined;\n readonly cause?: unknown;\n}\n\nexport class AccesslyApiError extends Error {\n readonly status: number;\n readonly code: string;\n readonly requestId: string | undefined;\n override readonly cause: unknown;\n\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message);\n this.name = 'AccesslyApiError';\n this.status = opts.status;\n this.code = opts.code ?? `HTTP_${opts.status}`;\n this.requestId = opts.requestId;\n this.cause = opts.cause;\n }\n}\n\n/** 401 / 403 — caller should re-authenticate (or check appId/permissions). */\nexport class AuthError extends AccesslyApiError {\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message, opts);\n this.name = 'AuthError';\n }\n}\n\n/** 400 / 422 — request body or query was malformed. */\nexport class ValidationError extends AccesslyApiError {\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message, opts);\n this.name = 'ValidationError';\n }\n}\n\n/** 404 — resource does not exist. */\nexport class NotFoundError extends AccesslyApiError {\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message, opts);\n this.name = 'NotFoundError';\n }\n}\n\n/** 429 — caller should back off. */\nexport class RateLimitError extends AccesslyApiError {\n readonly retryAfterSeconds: number | undefined;\n\n constructor(\n message: string,\n opts: AccesslyApiErrorOptions & { retryAfterSeconds?: number | undefined },\n ) {\n super(message, opts);\n this.name = 'RateLimitError';\n this.retryAfterSeconds = opts.retryAfterSeconds;\n }\n}\n\n/** 5xx — server-side problem, the client already exhausted its retries. */\nexport class ServerError extends AccesslyApiError {\n constructor(message: string, opts: AccesslyApiErrorOptions) {\n super(message, opts);\n this.name = 'ServerError';\n }\n}\n\n/** Fetch threw (DNS fail, TLS error, abort, etc.) or response was not parseable. */\nexport class NetworkError extends AccesslyApiError {\n constructor(message: string, opts: Omit<AccesslyApiErrorOptions, 'status'>) {\n super(message, { ...opts, status: 0 });\n this.name = 'NetworkError';\n }\n}\n\n/**\n * Maps an HTTP status code + body to the right error subclass.\n */\nexport function errorForResponse(\n status: number,\n body: unknown,\n requestId: string | undefined,\n): AccesslyApiError {\n const message = extractMessage(body) ?? `HTTP ${status}`;\n const opts: AccesslyApiErrorOptions = { status, code: extractCode(body), requestId };\n if (status === 401 || status === 403) return new AuthError(message, opts);\n if (status === 404) return new NotFoundError(message, opts);\n if (status === 429) {\n return new RateLimitError(message, {\n ...opts,\n retryAfterSeconds: extractRetryAfter(body),\n });\n }\n if (status >= 400 && status < 500) return new ValidationError(message, opts);\n if (status >= 500) return new ServerError(message, opts);\n return new AccesslyApiError(message, opts);\n}\n\nfunction extractMessage(body: unknown): string | undefined {\n if (body && typeof body === 'object') {\n const b = body as { message?: unknown; error?: unknown };\n if (typeof b.message === 'string') return b.message;\n if (typeof b.error === 'string') return b.error;\n }\n return undefined;\n}\n\nfunction extractCode(body: unknown): string | undefined {\n if (body && typeof body === 'object') {\n const b = body as { code?: unknown };\n if (typeof b.code === 'string') return b.code;\n }\n return undefined;\n}\n\nfunction extractRetryAfter(body: unknown): number | undefined {\n if (body && typeof body === 'object') {\n const b = body as { retryAfter?: unknown };\n if (typeof b.retryAfter === 'number' && b.retryAfter >= 0) return b.retryAfter;\n }\n return undefined;\n}\n","/**\n * Typed HTTP client for the Accesly backend.\n *\n * - Auto-injects `Authorization: <idToken>` (no `Bearer ` prefix — the backend\n * API Gateway REST v1 + Cognito Authorizer expects the raw JWT, see the\n * handoff doc gotcha).\n * - Retries idempotent requests on 5xx / network errors with exponential\n * backoff + jitter.\n * - Emits structured telemetry events the consumer can hook into.\n */\n\nimport { AccesslyApiError, NetworkError, errorForResponse } from './errors.js';\n\nexport type IdTokenProvider = () => string | null | Promise<string | null>;\n\nexport type TelemetryEvent =\n | { kind: 'request'; method: string; url: string; attempt: number }\n | {\n kind: 'response';\n method: string;\n url: string;\n status: number;\n durationMs: number;\n attempt: number;\n }\n | {\n kind: 'error';\n method: string;\n url: string;\n error: string;\n attempt: number;\n }\n | { kind: 'retry'; method: string; url: string; attempt: number; delayMs: number };\n\nexport type TelemetrySink = (event: TelemetryEvent) => void;\n\nexport interface AccesslyApiClientOptions {\n readonly baseUrl: string;\n /** Returns the current idToken, or null if the caller is anonymous. */\n readonly getIdToken?: IdTokenProvider;\n /** Override the global `fetch`. Tests only. */\n readonly fetchImpl?: typeof fetch;\n /** Max retries for idempotent requests on 5xx / network errors. Default 3. */\n readonly maxRetries?: number;\n /** Request timeout in ms. Default 30_000. */\n readonly timeoutMs?: number;\n /** Telemetry sink. Default no-op. */\n readonly telemetry?: TelemetrySink;\n /**\n * Override the backoff delay calculator (ms by attempt index, 1-based).\n * Tests only. Default: 500 * 2^(attempt-1) ± 20% jitter.\n */\n readonly backoffMs?: (attempt: number) => number;\n}\n\nexport type Json =\n | null\n | boolean\n | number\n | string\n | readonly Json[]\n | { readonly [k: string]: Json };\n\nexport interface RequestOptions {\n readonly headers?: Record<string, string>;\n readonly signal?: AbortSignal;\n readonly query?: Record<string, string | number | boolean | undefined>;\n /** If `false`, the request will NOT be retried. Default `true` for GET. */\n readonly retry?: boolean;\n}\n\n/** HTTP methods the client supports. */\ntype HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n\nconst IDEMPOTENT_METHODS: ReadonlySet<HttpMethod> = new Set(['GET']);\n\nexport class AccesslyApiClient {\n private readonly baseUrl: string;\n private readonly getIdToken: IdTokenProvider | undefined;\n private readonly fetchImpl: typeof fetch;\n private readonly maxRetries: number;\n private readonly timeoutMs: number;\n private readonly telemetry: TelemetrySink;\n private readonly backoffMs: (attempt: number) => number;\n\n constructor(opts: AccesslyApiClientOptions) {\n if (!opts.baseUrl) throw new TypeError('AccesslyApiClient: baseUrl is required');\n this.baseUrl = opts.baseUrl.replace(/\\/+$/, '');\n this.getIdToken = opts.getIdToken;\n // `?? fetch` keeps a reference even after globalThis.fetch is reassigned\n // in tests, so users get the fetch they had when constructing the client.\n this.fetchImpl = opts.fetchImpl ?? globalThis.fetch.bind(globalThis);\n this.maxRetries = opts.maxRetries ?? 3;\n this.timeoutMs = opts.timeoutMs ?? 30_000;\n this.telemetry = opts.telemetry ?? (() => undefined);\n this.backoffMs = opts.backoffMs ?? defaultBackoff;\n }\n\n get<T>(path: string, opts?: RequestOptions): Promise<T> {\n return this.request<T>('GET', path, undefined, opts);\n }\n\n post<T>(path: string, body?: Json, opts?: RequestOptions): Promise<T> {\n return this.request<T>('POST', path, body, opts);\n }\n\n put<T>(path: string, body?: Json, opts?: RequestOptions): Promise<T> {\n return this.request<T>('PUT', path, body, opts);\n }\n\n delete<T>(path: string, opts?: RequestOptions): Promise<T> {\n return this.request<T>('DELETE', path, undefined, opts);\n }\n\n patch<T>(path: string, body?: Json, opts?: RequestOptions): Promise<T> {\n return this.request<T>('PATCH', path, body, opts);\n }\n\n private async request<T>(\n method: HttpMethod,\n path: string,\n body: Json | undefined,\n opts: RequestOptions | undefined,\n ): Promise<T> {\n const url = this.buildUrl(path, opts?.query);\n const shouldRetry = opts?.retry ?? IDEMPOTENT_METHODS.has(method);\n const idToken = this.getIdToken ? await this.getIdToken() : null;\n\n const headers: Record<string, string> = {\n Accept: 'application/json',\n ...opts?.headers,\n };\n if (body !== undefined) headers['Content-Type'] = 'application/json';\n if (idToken) {\n // NOTE: API Gateway REST v1 + Cognito Authorizer expects the bare JWT,\n // NOT `Bearer <jwt>`. See CloudServices-accesly/docs/Handoff_Fase3.md.\n headers['Authorization'] = idToken;\n }\n\n const init: RequestInit = { method, headers };\n if (body !== undefined) init.body = JSON.stringify(body);\n\n let attempt = 0;\n let lastError: unknown;\n const maxAttempts = shouldRetry ? this.maxRetries + 1 : 1;\n\n while (attempt < maxAttempts) {\n attempt += 1;\n this.telemetry({ kind: 'request', method, url, attempt });\n const startedAt = Date.now();\n const ac = new AbortController();\n const timeoutId = setTimeout(() => ac.abort(), this.timeoutMs);\n const signal = combineSignals(opts?.signal, ac.signal);\n try {\n const res = await this.fetchImpl(url, { ...init, signal });\n const durationMs = Date.now() - startedAt;\n this.telemetry({\n kind: 'response',\n method,\n url,\n status: res.status,\n durationMs,\n attempt,\n });\n clearTimeout(timeoutId);\n\n if (res.status >= 500 && shouldRetry && attempt < maxAttempts) {\n const delay = this.backoffMs(attempt);\n this.telemetry({ kind: 'retry', method, url, attempt, delayMs: delay });\n await sleep(delay);\n continue;\n }\n\n return await this.handleResponse<T>(res);\n } catch (err) {\n clearTimeout(timeoutId);\n if (err instanceof AccesslyApiError) {\n // Already shaped — bubble up without retrying.\n throw err;\n }\n const description = describeError(err);\n this.telemetry({ kind: 'error', method, url, error: description, attempt });\n lastError = err;\n if (shouldRetry && attempt < maxAttempts) {\n const delay = this.backoffMs(attempt);\n this.telemetry({ kind: 'retry', method, url, attempt, delayMs: delay });\n await sleep(delay);\n continue;\n }\n throw new NetworkError(`fetch failed: ${description}`, { cause: err });\n }\n }\n\n // Unreachable, but TS needs an explicit throw.\n throw new NetworkError('retries exhausted', { cause: lastError });\n }\n\n private async handleResponse<T>(res: Response): Promise<T> {\n const requestId =\n res.headers.get('x-amzn-RequestId') ?? res.headers.get('x-request-id') ?? undefined;\n if (res.ok) {\n if (res.status === 204) return undefined as unknown as T;\n const text = await res.text();\n if (text.length === 0) return undefined as unknown as T;\n try {\n return JSON.parse(text) as T;\n } catch (err) {\n throw new NetworkError('response is not valid JSON', { cause: err, requestId });\n }\n }\n // Non-2xx: try to parse a JSON body for the error shape.\n let parsed: unknown;\n try {\n const text = await res.text();\n parsed = text.length > 0 ? JSON.parse(text) : undefined;\n } catch {\n parsed = undefined;\n }\n throw errorForResponse(res.status, parsed, requestId);\n }\n\n private buildUrl(path: string, query?: RequestOptions['query']): string {\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n const url = new URL(this.baseUrl + cleanPath);\n if (query) {\n for (const [k, v] of Object.entries(query)) {\n if (v === undefined) continue;\n url.searchParams.set(k, String(v));\n }\n }\n return url.toString();\n }\n}\n\nfunction defaultBackoff(attempt: number): number {\n const base = 500 * 2 ** (attempt - 1);\n const jitter = base * 0.2 * (Math.random() * 2 - 1); // ±20%\n return Math.max(0, Math.floor(base + jitter));\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nfunction describeError(err: unknown): string {\n if (err instanceof Error) return `${err.name}: ${err.message}`;\n return String(err);\n}\n\nfunction combineSignals(a: AbortSignal | undefined, b: AbortSignal): AbortSignal {\n if (!a) return b;\n if (a.aborted) return a;\n if (b.aborted) return b;\n const ac = new AbortController();\n const onAbort = (): void => ac.abort();\n a.addEventListener('abort', onAbort, { once: true });\n b.addEventListener('abort', onAbort, { once: true });\n return ac.signal;\n}\n","/**\n * Typed wrappers for the Accesly backend REST endpoints. One method per\n * route in `CloudServices-accesly/docs/openapi.yaml`.\n *\n * Each wrapper is a one-liner over `AccesslyApiClient` — the value is the\n * typed signature, which makes auto-complete + refactors safe.\n */\n\nimport type {\n CreateWalletRequest,\n CreateWalletResponse,\n FinalizeRecoveryRequest,\n FinalizeRecoveryResponse,\n GetFragment2Request,\n GetFragment2Response,\n GetFragment3Response,\n GetWalletResponse,\n HealthResponse,\n KycStartResponse,\n OrderRequest,\n OrderResponse,\n RecoveryOtpRequestInput,\n RecoveryOtpRequestResponse,\n RecoveryOtpVerifyInput,\n RecoveryOtpVerifyResponse,\n SimulateRotateSignerRequest,\n SimulateRotateSignerResponse,\n ActivateAssetSimulateRequest,\n SimulateSwapRequest,\n SimulateSwapResponse,\n SimulateTxRequest,\n SimulateTxResponse,\n SubmitTxRequest,\n SubmitTxResponse,\n WalletActivityResponse,\n WalletBalanceResponse,\n WalletHistoryRequestOptions,\n WalletHistoryResponse,\n} from '../types/api.js';\nimport { NotFoundError } from './errors.js';\nimport type { AccesslyApiClient, Json } from './client.js';\n\nexport class AccesslyEndpoints {\n constructor(private readonly client: AccesslyApiClient) {}\n\n /** Public liveness check. No auth header sent. */\n health(): Promise<HealthResponse> {\n return this.client.get<HealthResponse>('/health');\n }\n\n /** Cognito-auth. Deploys the user's Smart Account on Soroban. */\n createWallet(req: CreateWalletRequest): Promise<CreateWalletResponse> {\n return this.client.post<CreateWalletResponse>('/wallets', req as unknown as Json);\n }\n\n /**\n * Cognito-auth. Returns the user's already-deployed Smart Account metadata,\n * or `null` if the user has not yet completed `POST /wallets`.\n *\n * Idempotent — safe to call at the top of every authenticated session.\n * Cheap on the backend (metadata read, no KMS decrypt).\n */\n async getWallet(): Promise<GetWalletResponse | null> {\n try {\n return await this.client.get<GetWalletResponse>('/wallets');\n } catch (err) {\n if (err instanceof NotFoundError) return null;\n throw err;\n }\n }\n\n /** Cognito-auth. Returns F2 re-encrypted with a per-request session key. */\n getFragment2(req: GetFragment2Request): Promise<GetFragment2Response> {\n return this.client.post<GetFragment2Response>('/fragments/2', req as unknown as Json);\n }\n\n /**\n * Cognito-auth. Simula `XLM_SAC.transfer(from=smartAccount, to, amount)` y\n * devuelve los datos para que el SDK firme la auth entry client-side. NO\n * mueve fondos — solo prepara el material para `submitTx`.\n */\n simulateTx(req: SimulateTxRequest): Promise<SimulateTxResponse> {\n return this.client.post<SimulateTxResponse>('/tx/simulate', req as unknown as Json);\n }\n\n /**\n * Cognito-auth. Recibe la `SorobanAuthorizationEntry` firmada por el SDK +\n * el envelope que `simulateTx` devolvió. El backend re-simula con la firma\n * real, KMS-firma el envelope con `channels-fund` (developer-pays) y envía\n * a Soroban RPC. Devuelve el `txHash` para que la UI pueda mostrar el\n * resultado / link a explorer.\n */\n submitTx(req: SubmitTxRequest): Promise<SubmitTxResponse> {\n return this.client.post<SubmitTxResponse>('/tx/submit', req as unknown as Json);\n }\n\n /**\n * Cognito-auth. Simula `smart_account.add_context_rule(...)` para activar un\n * nuevo asset (e.g. USDC) en una wallet ya deployada. Caso típico: wallets\n * pre-1.4 que vienen con rule 0 = XLM solo y necesitan agregar rule N+1\n * para USDC sin re-deployar.\n *\n * Response shape idéntico a `simulateTx` — el SDK firma el `auth_digest` con\n * el mismo passkey contra la regla admin-cfg.\n */\n activateAssetSimulate(\n req: ActivateAssetSimulateRequest,\n ): Promise<SimulateTxResponse> {\n return this.client.post<SimulateTxResponse>(\n '/tx/activate-asset/simulate',\n req as unknown as Json,\n );\n }\n\n /** Cognito-auth. Submit del add_context_rule firmado (mismo shape que submitTx). */\n activateAssetSubmit(req: SubmitTxRequest): Promise<SubmitTxResponse> {\n return this.client.post<SubmitTxResponse>(\n '/tx/activate-asset/submit',\n req as unknown as Json,\n );\n }\n\n /**\n * Cognito-auth. Cotiza un swap XLM↔USDC via Soroswap Aggregator y devuelve\n * el material para que el SDK firme la auth entry contra la regla\n * biometric-tx del asset de entrada.\n */\n swapSimulate(req: SimulateSwapRequest): Promise<SimulateSwapResponse> {\n return this.client.post<SimulateSwapResponse>(\n '/tx/swap/simulate',\n req as unknown as Json,\n );\n }\n\n /** Cognito-auth. Submit del swap firmado (mismo shape que submitTx). */\n swapSubmit(req: SubmitTxRequest): Promise<SubmitTxResponse> {\n return this.client.post<SubmitTxResponse>(\n '/tx/swap/submit',\n req as unknown as Json,\n );\n }\n\n /** Cognito-auth. Starts a KYC verification with Etherfuse. */\n kycStart(): Promise<KycStartResponse> {\n return this.client.post<KycStartResponse>('/kyc');\n }\n\n /** Cognito-auth. Reads the current user's KYC status. */\n kycStatus(): Promise<KycStartResponse> {\n return this.client.get<KycStartResponse>('/kyc');\n }\n\n /** Cognito-auth. Quote or submit an MXN→USDC onramp order. */\n onramp(req: OrderRequest): Promise<OrderResponse> {\n return this.client.post<OrderResponse>('/onramp', req as unknown as Json);\n }\n\n /** Cognito-auth. Quote or submit a USDC→MXN offramp order. */\n offramp(req: OrderRequest): Promise<OrderResponse> {\n return this.client.post<OrderResponse>('/offramp', req as unknown as Json);\n }\n\n /* ── v1.1.0: read-only wallet data ─────────────────────────────────────── */\n\n /**\n * Anónimo. Balance XLM del Smart Account (vía Soroban RPC, cached ~5s).\n * No requiere JWT — la address en sí es pública on-chain.\n */\n walletBalance(address: string): Promise<WalletBalanceResponse> {\n return this.client.get<WalletBalanceResponse>(\n `/wallets/${encodeURIComponent(address)}/balance`,\n );\n }\n\n /**\n * Anónimo. Últimos eventos on-chain del Smart Account (rotate_signer,\n * transfers, etc.). Cacheado ~15s. `limit` default 20, max 50.\n */\n walletActivity(address: string, limit?: number): Promise<WalletActivityResponse> {\n const qs = limit !== undefined ? `?limit=${encodeURIComponent(String(limit))}` : '';\n return this.client.get<WalletActivityResponse>(\n `/wallets/${encodeURIComponent(address)}/activity${qs}`,\n );\n }\n\n /**\n * Anónimo. Historial completo del wallet — pre-decodificado server-side desde\n * Stellar Expert (que en browser está bloqueado por CORS). Devuelve items\n * tipados: `wallet-created`, `signer-rotated`, `transfer-in`, `transfer-out`.\n *\n * Cursor-based: pasa `saCursor` y/o `txCursor` para paginar atrás. El primer\n * fetch (sin cursors) incluye un evento sintético `wallet-created` desde la\n * metadata del contrato.\n */\n walletHistory(\n address: string,\n opts: WalletHistoryRequestOptions = {},\n ): Promise<WalletHistoryResponse> {\n const params = new URLSearchParams();\n if (opts.smartAccountCursor) params.set('saCursor', opts.smartAccountCursor);\n if (opts.transfersCursor) params.set('txCursor', opts.transfersCursor);\n if (opts.transferScanLimit !== undefined) {\n params.set('scanLimit', String(opts.transferScanLimit));\n }\n const qs = params.toString();\n return this.client.get<WalletHistoryResponse>(\n `/wallets/${encodeURIComponent(address)}/history${qs ? '?' + qs : ''}`,\n );\n }\n\n /* ── Recovery v2 (Fase 1, 2026-06-15) ──────────────────────────────────── */\n\n /**\n * Anónimo. Pide al backend que mande un OTP de 6 dígitos al email.\n *\n * Rate-limited: el backend rechaza con 429 si pediste otro hace menos de\n * 60s o más de 3 en la última hora. Anti-enumeración: la respuesta es 200\n * OK aunque el email no exista.\n */\n requestRecoveryOtp(input: RecoveryOtpRequestInput): Promise<RecoveryOtpRequestResponse> {\n return this.client.post<RecoveryOtpRequestResponse>(\n '/recovery/otp/request',\n input as unknown as Json,\n );\n }\n\n /**\n * Anónimo. Verifica el OTP. Si OK, devuelve un `recoveryJwt` que\n * autoriza los dos endpoints siguientes (`getFragment3`,\n * `finalizeRecovery`) durante 5 min.\n */\n verifyRecoveryOtp(input: RecoveryOtpVerifyInput): Promise<RecoveryOtpVerifyResponse> {\n return this.client.post<RecoveryOtpVerifyResponse>(\n '/recovery/otp/verify',\n input as unknown as Json,\n );\n }\n\n /**\n * Anónimo + header `X-Recovery-Jwt`. Devuelve `{fragmentF3Encrypted,\n * recoverySalt}`. El SDK descifra F3 con la `recoveryKey` derivada\n * client-side (PBKDF2(password, recoverySalt, 600k)).\n */\n getFragment3(recoveryJwt: string): Promise<GetFragment3Response> {\n return this.client.get<GetFragment3Response>('/fragments/3', {\n headers: { 'X-Recovery-Jwt': recoveryJwt },\n });\n }\n\n /**\n * Anónimo + header `X-Recovery-Jwt`. El backend arma + simula la tx\n * `rotate_signer(newOwner, newSecp256r1, newEmailCommit)` contra el Smart\n * Account del usuario y devuelve el material que el SDK necesita para\n * firmar la `SorobanAuthorizationEntry` con la seed VIEJA (reconstruida\n * por Shamir(F2_recovery, F3)) contra la regla `admin-cfg`.\n */\n simulateRotateSigner(\n recoveryJwt: string,\n payload: SimulateRotateSignerRequest,\n ): Promise<SimulateRotateSignerResponse> {\n return this.client.post<SimulateRotateSignerResponse>(\n '/recovery/simulate-rotate-signer',\n payload as unknown as Json,\n {\n headers: { 'X-Recovery-Jwt': recoveryJwt },\n },\n );\n }\n\n /**\n * Anónimo + header `X-Recovery-Jwt`. Submitea la tx `rotate_signer` firmada\n * por el SDK con la seed reconstruida (F2+F3) y persiste las nuevas\n * F1'/F2'/F3' en DDB. Idempotente del lado backend.\n */\n finalizeRecovery(\n recoveryJwt: string,\n payload: FinalizeRecoveryRequest,\n ): Promise<FinalizeRecoveryResponse> {\n return this.client.post<FinalizeRecoveryResponse>(\n '/recovery/finalize',\n payload as unknown as Json,\n {\n headers: { 'X-Recovery-Jwt': recoveryJwt },\n },\n );\n }\n}\n"]}
@@ -209,6 +209,51 @@ interface GetFragment2Response {
209
209
  */
210
210
  /** Assets soportados por `tx.send` (1.4+). USDC requiere wallet con rule 1 activado. */
211
211
  type TransferAsset = 'XLM' | 'USDC';
212
+ /** Assets activables vía `wallet.activateAsset(...)` (Fase C). */
213
+ type ActivatableAsset = 'USDC';
214
+ /**
215
+ * `POST /tx/activate-asset/simulate` — primer paso del flow "Activar USDC".
216
+ *
217
+ * Devuelve un `SimulateTxResponse` con el envelope + payload a firmar. El SDK
218
+ * firma contra la regla `admin-cfg` del Smart Account con el mismo passkey
219
+ * que se usa para transfers (mismo signer ed25519 vive en ambas reglas).
220
+ */
221
+ interface ActivateAssetSimulateRequest {
222
+ readonly asset: ActivatableAsset;
223
+ }
224
+ /**
225
+ * `POST /tx/swap/simulate` — cotiza un swap XLM↔USDC via Soroswap y devuelve
226
+ * el material que el SDK necesita para firmar la auth entry del Smart Account.
227
+ *
228
+ * El backend internamente:
229
+ * 1) Hits Soroswap `/quote` para descubrir path + amounts.
230
+ * 2) Hits Soroswap `/quote/build` para obtener el XDR del envelope.
231
+ * 3) Extrae la auth entry del SA + computa signature_payload_hash.
232
+ * 4) Devuelve `SimulateTxResponse` + el quote summary para mostrar en UI.
233
+ */
234
+ interface SimulateSwapRequest {
235
+ readonly fromAsset: TransferAsset;
236
+ readonly toAsset: TransferAsset;
237
+ /** Stroops del input (1e-7). */
238
+ readonly amountIn: string;
239
+ /** Tolerancia de slippage en basis points. Default 50 (0.5%). */
240
+ readonly slippageBps?: number;
241
+ }
242
+ interface SimulateSwapResponse extends SimulateTxResponse {
243
+ readonly quote: {
244
+ readonly fromAsset: TransferAsset;
245
+ readonly toAsset: TransferAsset;
246
+ readonly amountIn: string;
247
+ /** Stroops out proyectados (sin slippage aplicado). */
248
+ readonly amountOut: string;
249
+ /** Stroops min out aceptables (con slippage) — esto es lo que el router enforça. */
250
+ readonly minAmountOut: string;
251
+ /** "0.12" = 0.12% de price impact. */
252
+ readonly priceImpactPct: string;
253
+ /** `router` | `aggregator` | `sdex` — qué venue se usó. */
254
+ readonly platform: string;
255
+ };
256
+ }
212
257
  interface SimulateTxRequest {
213
258
  /**
214
259
  * Base-10 string del monto en unidades atómicas (1e-7 para ambos XLM y USDC).
@@ -512,6 +557,26 @@ declare class AccesslyEndpoints {
512
557
  * resultado / link a explorer.
513
558
  */
514
559
  submitTx(req: SubmitTxRequest): Promise<SubmitTxResponse>;
560
+ /**
561
+ * Cognito-auth. Simula `smart_account.add_context_rule(...)` para activar un
562
+ * nuevo asset (e.g. USDC) en una wallet ya deployada. Caso típico: wallets
563
+ * pre-1.4 que vienen con rule 0 = XLM solo y necesitan agregar rule N+1
564
+ * para USDC sin re-deployar.
565
+ *
566
+ * Response shape idéntico a `simulateTx` — el SDK firma el `auth_digest` con
567
+ * el mismo passkey contra la regla admin-cfg.
568
+ */
569
+ activateAssetSimulate(req: ActivateAssetSimulateRequest): Promise<SimulateTxResponse>;
570
+ /** Cognito-auth. Submit del add_context_rule firmado (mismo shape que submitTx). */
571
+ activateAssetSubmit(req: SubmitTxRequest): Promise<SubmitTxResponse>;
572
+ /**
573
+ * Cognito-auth. Cotiza un swap XLM↔USDC via Soroswap Aggregator y devuelve
574
+ * el material para que el SDK firme la auth entry contra la regla
575
+ * biometric-tx del asset de entrada.
576
+ */
577
+ swapSimulate(req: SimulateSwapRequest): Promise<SimulateSwapResponse>;
578
+ /** Cognito-auth. Submit del swap firmado (mismo shape que submitTx). */
579
+ swapSubmit(req: SubmitTxRequest): Promise<SubmitTxResponse>;
515
580
  /** Cognito-auth. Starts a KYC verification with Etherfuse. */
516
581
  kycStart(): Promise<KycStartResponse>;
517
582
  /** Cognito-auth. Reads the current user's KYC status. */
@@ -632,4 +697,4 @@ declare class NetworkError extends AccesslyApiError {
632
697
  */
633
698
  declare function errorForResponse(status: number, body: unknown, requestId: string | undefined): AccesslyApiError;
634
699
 
635
- export { AccesslyApiClient, type AccesslyApiClientOptions, AccesslyApiError, type AccesslyApiErrorOptions, AccesslyEndpoints, AuthError, type Base64String, type CreateWalletRequest, type CreateWalletResponse, type EncryptedFragmentWire, type FinalizeRecoveryRequest, type FinalizeRecoveryResponse, type GetFragment2Request, type GetFragment2Response, type GetFragment3Response, type GetWalletResponse, type HealthResponse, type HexString, type IdTokenProvider, type Json, type KycStartResponse, NetworkError, NotFoundError, type OrderAction, type OrderRequest, type OrderResponse, RateLimitError, type RecoveryOtpRequestInput, type RecoveryOtpRequestResponse, type RecoveryOtpVerifyInput, type RecoveryOtpVerifyResponse, type RequestOptions, ServerError, type SimulateRotateSignerRequest, type SimulateRotateSignerResponse, type SimulateTxRequest, type SimulateTxResponse, type SubmitTxRequest, type SubmitTxResponse, type TelemetryEvent, type TelemetrySink, type TransferAsset, ValidationError, type WalletActivityEvent, type WalletActivityResponse, type WalletBalanceResponse, type WalletHistoryItem, type WalletHistoryRequestOptions, type WalletHistoryResponse, errorForResponse };
700
+ export { AccesslyApiClient, type AccesslyApiClientOptions, AccesslyApiError, type AccesslyApiErrorOptions, AccesslyEndpoints, type ActivatableAsset, type ActivateAssetSimulateRequest, AuthError, type Base64String, type CreateWalletRequest, type CreateWalletResponse, type EncryptedFragmentWire, type FinalizeRecoveryRequest, type FinalizeRecoveryResponse, type GetFragment2Request, type GetFragment2Response, type GetFragment3Response, type GetWalletResponse, type HealthResponse, type HexString, type IdTokenProvider, type Json, type KycStartResponse, NetworkError, NotFoundError, type OrderAction, type OrderRequest, type OrderResponse, RateLimitError, type RecoveryOtpRequestInput, type RecoveryOtpRequestResponse, type RecoveryOtpVerifyInput, type RecoveryOtpVerifyResponse, type RequestOptions, ServerError, type SimulateRotateSignerRequest, type SimulateRotateSignerResponse, type SimulateSwapRequest, type SimulateSwapResponse, type SimulateTxRequest, type SimulateTxResponse, type SubmitTxRequest, type SubmitTxResponse, type TelemetryEvent, type TelemetrySink, type TransferAsset, ValidationError, type WalletActivityEvent, type WalletActivityResponse, type WalletBalanceResponse, type WalletHistoryItem, type WalletHistoryRequestOptions, type WalletHistoryResponse, errorForResponse };
@@ -209,6 +209,51 @@ interface GetFragment2Response {
209
209
  */
210
210
  /** Assets soportados por `tx.send` (1.4+). USDC requiere wallet con rule 1 activado. */
211
211
  type TransferAsset = 'XLM' | 'USDC';
212
+ /** Assets activables vía `wallet.activateAsset(...)` (Fase C). */
213
+ type ActivatableAsset = 'USDC';
214
+ /**
215
+ * `POST /tx/activate-asset/simulate` — primer paso del flow "Activar USDC".
216
+ *
217
+ * Devuelve un `SimulateTxResponse` con el envelope + payload a firmar. El SDK
218
+ * firma contra la regla `admin-cfg` del Smart Account con el mismo passkey
219
+ * que se usa para transfers (mismo signer ed25519 vive en ambas reglas).
220
+ */
221
+ interface ActivateAssetSimulateRequest {
222
+ readonly asset: ActivatableAsset;
223
+ }
224
+ /**
225
+ * `POST /tx/swap/simulate` — cotiza un swap XLM↔USDC via Soroswap y devuelve
226
+ * el material que el SDK necesita para firmar la auth entry del Smart Account.
227
+ *
228
+ * El backend internamente:
229
+ * 1) Hits Soroswap `/quote` para descubrir path + amounts.
230
+ * 2) Hits Soroswap `/quote/build` para obtener el XDR del envelope.
231
+ * 3) Extrae la auth entry del SA + computa signature_payload_hash.
232
+ * 4) Devuelve `SimulateTxResponse` + el quote summary para mostrar en UI.
233
+ */
234
+ interface SimulateSwapRequest {
235
+ readonly fromAsset: TransferAsset;
236
+ readonly toAsset: TransferAsset;
237
+ /** Stroops del input (1e-7). */
238
+ readonly amountIn: string;
239
+ /** Tolerancia de slippage en basis points. Default 50 (0.5%). */
240
+ readonly slippageBps?: number;
241
+ }
242
+ interface SimulateSwapResponse extends SimulateTxResponse {
243
+ readonly quote: {
244
+ readonly fromAsset: TransferAsset;
245
+ readonly toAsset: TransferAsset;
246
+ readonly amountIn: string;
247
+ /** Stroops out proyectados (sin slippage aplicado). */
248
+ readonly amountOut: string;
249
+ /** Stroops min out aceptables (con slippage) — esto es lo que el router enforça. */
250
+ readonly minAmountOut: string;
251
+ /** "0.12" = 0.12% de price impact. */
252
+ readonly priceImpactPct: string;
253
+ /** `router` | `aggregator` | `sdex` — qué venue se usó. */
254
+ readonly platform: string;
255
+ };
256
+ }
212
257
  interface SimulateTxRequest {
213
258
  /**
214
259
  * Base-10 string del monto en unidades atómicas (1e-7 para ambos XLM y USDC).
@@ -512,6 +557,26 @@ declare class AccesslyEndpoints {
512
557
  * resultado / link a explorer.
513
558
  */
514
559
  submitTx(req: SubmitTxRequest): Promise<SubmitTxResponse>;
560
+ /**
561
+ * Cognito-auth. Simula `smart_account.add_context_rule(...)` para activar un
562
+ * nuevo asset (e.g. USDC) en una wallet ya deployada. Caso típico: wallets
563
+ * pre-1.4 que vienen con rule 0 = XLM solo y necesitan agregar rule N+1
564
+ * para USDC sin re-deployar.
565
+ *
566
+ * Response shape idéntico a `simulateTx` — el SDK firma el `auth_digest` con
567
+ * el mismo passkey contra la regla admin-cfg.
568
+ */
569
+ activateAssetSimulate(req: ActivateAssetSimulateRequest): Promise<SimulateTxResponse>;
570
+ /** Cognito-auth. Submit del add_context_rule firmado (mismo shape que submitTx). */
571
+ activateAssetSubmit(req: SubmitTxRequest): Promise<SubmitTxResponse>;
572
+ /**
573
+ * Cognito-auth. Cotiza un swap XLM↔USDC via Soroswap Aggregator y devuelve
574
+ * el material para que el SDK firme la auth entry contra la regla
575
+ * biometric-tx del asset de entrada.
576
+ */
577
+ swapSimulate(req: SimulateSwapRequest): Promise<SimulateSwapResponse>;
578
+ /** Cognito-auth. Submit del swap firmado (mismo shape que submitTx). */
579
+ swapSubmit(req: SubmitTxRequest): Promise<SubmitTxResponse>;
515
580
  /** Cognito-auth. Starts a KYC verification with Etherfuse. */
516
581
  kycStart(): Promise<KycStartResponse>;
517
582
  /** Cognito-auth. Reads the current user's KYC status. */
@@ -632,4 +697,4 @@ declare class NetworkError extends AccesslyApiError {
632
697
  */
633
698
  declare function errorForResponse(status: number, body: unknown, requestId: string | undefined): AccesslyApiError;
634
699
 
635
- export { AccesslyApiClient, type AccesslyApiClientOptions, AccesslyApiError, type AccesslyApiErrorOptions, AccesslyEndpoints, AuthError, type Base64String, type CreateWalletRequest, type CreateWalletResponse, type EncryptedFragmentWire, type FinalizeRecoveryRequest, type FinalizeRecoveryResponse, type GetFragment2Request, type GetFragment2Response, type GetFragment3Response, type GetWalletResponse, type HealthResponse, type HexString, type IdTokenProvider, type Json, type KycStartResponse, NetworkError, NotFoundError, type OrderAction, type OrderRequest, type OrderResponse, RateLimitError, type RecoveryOtpRequestInput, type RecoveryOtpRequestResponse, type RecoveryOtpVerifyInput, type RecoveryOtpVerifyResponse, type RequestOptions, ServerError, type SimulateRotateSignerRequest, type SimulateRotateSignerResponse, type SimulateTxRequest, type SimulateTxResponse, type SubmitTxRequest, type SubmitTxResponse, type TelemetryEvent, type TelemetrySink, type TransferAsset, ValidationError, type WalletActivityEvent, type WalletActivityResponse, type WalletBalanceResponse, type WalletHistoryItem, type WalletHistoryRequestOptions, type WalletHistoryResponse, errorForResponse };
700
+ export { AccesslyApiClient, type AccesslyApiClientOptions, AccesslyApiError, type AccesslyApiErrorOptions, AccesslyEndpoints, type ActivatableAsset, type ActivateAssetSimulateRequest, AuthError, type Base64String, type CreateWalletRequest, type CreateWalletResponse, type EncryptedFragmentWire, type FinalizeRecoveryRequest, type FinalizeRecoveryResponse, type GetFragment2Request, type GetFragment2Response, type GetFragment3Response, type GetWalletResponse, type HealthResponse, type HexString, type IdTokenProvider, type Json, type KycStartResponse, NetworkError, NotFoundError, type OrderAction, type OrderRequest, type OrderResponse, RateLimitError, type RecoveryOtpRequestInput, type RecoveryOtpRequestResponse, type RecoveryOtpVerifyInput, type RecoveryOtpVerifyResponse, type RequestOptions, ServerError, type SimulateRotateSignerRequest, type SimulateRotateSignerResponse, type SimulateSwapRequest, type SimulateSwapResponse, type SimulateTxRequest, type SimulateTxResponse, type SubmitTxRequest, type SubmitTxResponse, type TelemetryEvent, type TelemetrySink, type TransferAsset, ValidationError, type WalletActivityEvent, type WalletActivityResponse, type WalletBalanceResponse, type WalletHistoryItem, type WalletHistoryRequestOptions, type WalletHistoryResponse, errorForResponse };
package/dist/api/index.js CHANGED
@@ -295,6 +295,46 @@ var AccesslyEndpoints = class {
295
295
  submitTx(req) {
296
296
  return this.client.post("/tx/submit", req);
297
297
  }
298
+ /**
299
+ * Cognito-auth. Simula `smart_account.add_context_rule(...)` para activar un
300
+ * nuevo asset (e.g. USDC) en una wallet ya deployada. Caso típico: wallets
301
+ * pre-1.4 que vienen con rule 0 = XLM solo y necesitan agregar rule N+1
302
+ * para USDC sin re-deployar.
303
+ *
304
+ * Response shape idéntico a `simulateTx` — el SDK firma el `auth_digest` con
305
+ * el mismo passkey contra la regla admin-cfg.
306
+ */
307
+ activateAssetSimulate(req) {
308
+ return this.client.post(
309
+ "/tx/activate-asset/simulate",
310
+ req
311
+ );
312
+ }
313
+ /** Cognito-auth. Submit del add_context_rule firmado (mismo shape que submitTx). */
314
+ activateAssetSubmit(req) {
315
+ return this.client.post(
316
+ "/tx/activate-asset/submit",
317
+ req
318
+ );
319
+ }
320
+ /**
321
+ * Cognito-auth. Cotiza un swap XLM↔USDC via Soroswap Aggregator y devuelve
322
+ * el material para que el SDK firme la auth entry contra la regla
323
+ * biometric-tx del asset de entrada.
324
+ */
325
+ swapSimulate(req) {
326
+ return this.client.post(
327
+ "/tx/swap/simulate",
328
+ req
329
+ );
330
+ }
331
+ /** Cognito-auth. Submit del swap firmado (mismo shape que submitTx). */
332
+ swapSubmit(req) {
333
+ return this.client.post(
334
+ "/tx/swap/submit",
335
+ req
336
+ );
337
+ }
298
338
  /** Cognito-auth. Starts a KYC verification with Etherfuse. */
299
339
  kycStart() {
300
340
  return this.client.post("/kyc");