passkey-kit 0.17.1 → 0.17.3

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
@@ -277,15 +277,22 @@ import { SignerStore, SignerKey } from "passkey-kit";
277
277
 
278
278
  // Add an unlimited Ed25519 co-signer, stored persistently.
279
279
  const tx = await kit.addEd25519("G…", undefined, SignerStore.Persistent);
280
- await kit.sign(tx); // authorize with the connected passkey
280
+ await kit.signAdmin(tx); // wallet-admin write: declares reentry intent
281
281
  await server.send(tx);
282
282
 
283
283
  // Remove it.
284
284
  const rm = await kit.remove(SignerKey.Ed25519("G…"));
285
- await kit.sign(rm);
285
+ await kit.signAdmin(rm);
286
286
  await server.send(rm);
287
287
  ```
288
288
 
289
+ Generic dApp calls (transfers, swaps, mints) keep using `kit.sign(tx)`: it
290
+ refuses any wallet-admin call (`add_signer`, `add_secp256r1`, `update_signer`,
291
+ `remove_signer`, `upgrade`) at the entry root or nested beneath it. The only
292
+ legit exception is a nested self-`remove_signer` (the contract lets a limited
293
+ signer remove itself); pass `allowWalletReentry: true` — or `kit.signAdmin(tx)`
294
+ for full admin transactions — to declare that intent.
295
+
289
296
  ## `PasskeyServer` (server)
290
297
 
291
298
  Server-only facade (`passkey-kit/server`). Holds the relayer secret — never import it from browser code.
@@ -344,14 +351,15 @@ The SDK abstracts discovery behind a `SignerIndexer` interface (`getSigners` / `
344
351
 
345
352
  | Backend | Config | Wire | Status |
346
353
  |---|---|---|---|
347
- | `MercuryIndexer` | `MercuryIndexerConfig` (`url?`, `rpc?`) | Keyless REST (`GET /api/wallet/*`, `/api/lookup/*`) | Signer enumeration is live on testnet and mainnet. Schema-2 wallet candidates are pending. |
354
+ | `MercuryIndexer` | `MercuryIndexerConfig` (`url?`, `rpc?`) | Keyless REST (`GET /api/wallet/*`, `/api/v2/lookup/*`, `/api/lookup/address/*`) | The SDK uses the versioned credential route on supported networks. Testnet fixtures verified the schema-2 response on 2026-09-08. |
348
355
 
349
356
  > [!NOTE]
350
357
  > Mercury's hosted passkey-indexer is public and **keyless** on testnet and mainnet.
351
- > Its current API supports signer enumeration.
352
- > As of 2026-09-01, its lookup route does not return the required schema-2 birth claims.
353
- > The SDK therefore fails closed for fresh-device discovery.
354
- > Verified local wallet records continue to connect.
358
+ > Its v2 credential route returns immutable birth claims and complete ledger positions.
359
+ > The SDK validates the frozen v2 shape.
360
+ > It verifies candidate birth, current code, and signer state independently.
361
+ > An incomplete, stale, malformed, or ambiguous result still fails closed.
362
+ > The 2026-09-08 fixture check covered testnet only. It did not independently verify mainnet v2 responses.
355
363
  > See the [schema-2 response contract](docs/indexer-signer-provenance-response.md).
356
364
 
357
365
  ```ts
@@ -493,6 +501,9 @@ enum SignerStore { Persistent = "Persistent", Temporary = "Temporary" }
493
501
 
494
502
  Signer and signature expiration are **UNIX timestamps in seconds** (inclusive: valid while `now <= expiration`). Pre-1.0 these were ledger sequence numbers; timestamps don't drift as ledger close-time changes.
495
503
 
504
+ `connectWallet` applies the same boundary to the stored on-chain passkey signer.
505
+ It uses the latest Stellar RPC ledger close timestamp.
506
+
496
507
  ## Caveats
497
508
 
498
509
  > [!WARNING]
@@ -500,7 +511,7 @@ Signer and signature expiration are **UNIX timestamps in seconds** (inclusive: v
500
511
 
501
512
  - **Limit value and authority.** Limit wallet balances, signer permissions, policy allowances, and relayer permissions. Monitor wallet activity. Keep independent recovery, submission, and authorized upgrade paths.
502
513
  - **Hosted services can fail or return stale data.** Do not treat relayer or indexer responses as authoritative chain state. Confirm security-sensitive state through Stellar RPC.
503
- - **Fresh-device discovery needs schema 2.** The hosted Mercury lookup does not yet return schema-2 birth claims. The SDK fails closed until deployment.
514
+ - **Fresh-device discovery needs a complete schema-2 result.** The SDK uses Mercury's v2 route on supported networks. Testnet fixtures verified the response on 2026-09-08. Mainnet v2 responses were not independently verified. The SDK still rejects incomplete, stale, malformed, or ambiguous results.
504
515
  - **Keep at least one durable admin signer.** The contract rejects any change that would remove or demote its last durable (`Persistent`, non-expiring) admin signer (`LastAdminSigner = 103`) or leave it without any durable signer (`LastSigner = 104`), so a wallet always retains one signer that cannot evict or expire. Signers outside that guard — `Temporary` storage or with an expiration — lapse on their own: add a replacement *before* removing or demoting an existing signer.
505
516
  - **The default deployer is a shared, public keypair — its secret is publicly derivable.** It salts deployment and signs only the CreateContractV2 authorization entry; the relayer supplies the envelope source, sequence, and fees. It never controls the wallet. Its determinism is load-bearing for discovery: overriding `deploySource` changes every derived address and breaks keyId → wallet lookup. Use a separate funded `restoreSource` for `restoreFootprint`; never fund the shared deployer. A third-party `bumpSequence` to `INT64_MAX` no longer blocks the current SDK because it never uses the shared deployer as an envelope source. Full analysis: [`docs/security-deterministic-deployer.md`](docs/security-deterministic-deployer.md).
506
517
  - **Current code identity is not signer provenance.** The SDK also verifies immutable birth code and address-bound proofs. See the [signer-provenance design](docs/security-signer-provenance-v2.md).
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ export { SignerKey, SignerStore, type SignerKeyTag, type SignerLimits, type Stor
15
15
  export type { PolicySignerTxOptions } from "./kit/wallet-ops.js";
16
16
  export { PasskeyKitError, PasskeyKitErrorCode, ConfigurationError, WalletNotConnectedError, WalletOwnershipError, WalletAmbiguousError, WebAuthnError, SigningError, SignerNotFoundError, SimulationError, SubmissionError, ValidationError, IndexerError, RelayerError, ContractError, wrapError, } from "./errors.js";
17
17
  export { CONTRACT_ERROR_REGISTRY, contractErrorFromCode, decodeContractError, type ContractErrorFamily, type ContractErrorInfo, } from "./contract-errors.js";
18
- export { MercuryIndexer, mercuryPasskeyIndexerUrl, MERCURY_PASSKEY_INDEXER_URLS, lookupWithRetry, type MercuryIndexerConfig, type SignerIndexer, type WalletSigner, type WalletCandidate, type IncompleteWalletCandidate, type WalletCandidateLookup, type IndexerHealth, type SignerStatus, type SignerStorageClass, type FindWalletsHardeningDeps, } from "./indexer/index.js";
18
+ export { MercuryIndexer, mercuryPasskeyIndexerUrl, MERCURY_PASSKEY_INDEXER_URLS, lookupWithRetry, type MercuryIndexerConfig, type SignerIndexer, type WalletSigner, type WalletCandidate, type WalletCandidateIncompleteReason, type IncompleteWalletCandidate, type WalletCandidateLookup, type WalletLookupIncompleteReason, type IndexerHealth, type SignerStatus, type SignerStorageClass, type FindWalletsHardeningDeps, } from "./indexer/index.js";
19
19
  export { PasskeyEventEmitter, type PasskeyEvent, type PasskeyEventMap, type EventListener, } from "./events.js";
20
20
  export { deriveContractAddress, extractPublicKeyFromAttestation, compactSignature, generateChallenge, isOnP256Curve, } from "./utils.js";
21
21
  export { validateAddress, validateAmount, validateExpiration, validateSecp256r1PublicKey, } from "./validation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EACL,UAAU,EACV,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAGrE,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAGjE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,4BAA4B,EAC5B,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EACL,UAAU,EACV,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAGrE,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAGjE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,4BAA4B,EAC5B,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,+BAA+B,EACpC,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,8EAA8E;AAC9E,SAAS;AACT,OAAO,EACL,UAAU,GAIX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAErE,4BAA4B;AAC5B,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE1D,qBAAqB;AACrB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,GAKb,MAAM,cAAc,CAAC;AAEtB,6CAA6C;AAC7C,OAAO,EACL,SAAS,EACT,WAAW,GAWZ,MAAM,YAAY,CAAC;AAGpB,eAAe;AACf,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,0BAA0B;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC;AAE9B,2EAA2E;AAC3E,kFAAkF;AAClF,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,4BAA4B,EAC5B,eAAe,GAWhB,MAAM,oBAAoB,CAAC;AAE5B,SAAS;AACT,OAAO,EACL,mBAAmB,GAIpB,MAAM,aAAa,CAAC;AAErB,8BAA8B;AAC9B,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,yBAAyB;AACzB,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAEzB,mBAAmB;AACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,8EAA8E;AAC9E,SAAS;AACT,OAAO,EACL,UAAU,GAIX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAErE,4BAA4B;AAC5B,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE1D,qBAAqB;AACrB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,GAKb,MAAM,cAAc,CAAC;AAEtB,6CAA6C;AAC7C,OAAO,EACL,SAAS,EACT,WAAW,GAWZ,MAAM,YAAY,CAAC;AAGpB,eAAe;AACf,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,0BAA0B;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC;AAE9B,2EAA2E;AAC3E,kFAAkF;AAClF,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,4BAA4B,EAC5B,eAAe,GAahB,MAAM,oBAAoB,CAAC;AAE5B,SAAS;AACT,OAAO,EACL,mBAAmB,GAIpB,MAAM,aAAa,CAAC;AAErB,8BAA8B;AAC9B,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,yBAAyB;AACzB,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAEzB,mBAAmB;AACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC"}
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * @packageDocumentation
11
11
  */
12
- export type { SignerIndexer, WalletSigner, WalletCandidate, IncompleteWalletCandidate, WalletCandidateLookup, IndexerHealth, SignerStatus, SignerStorageClass, FindWalletsHardeningDeps, } from "./types.js";
12
+ export type { SignerIndexer, WalletSigner, WalletCandidate, WalletCandidateIncompleteReason, IncompleteWalletCandidate, WalletCandidateLookup, WalletLookupIncompleteReason, IndexerHealth, SignerStatus, SignerStorageClass, FindWalletsHardeningDeps, } from "./types.js";
13
13
  export { MercuryIndexer, mercuryPasskeyIndexerUrl, type MercuryIndexerConfig, } from "./mercury.js";
14
14
  export { MERCURY_PASSKEY_INDEXER_URLS } from "../constants.js";
15
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,EACtB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC;CACtC,GACA,OAAO,CAAC,CAAC,EAAE,CAAC,CAcd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,+BAA+B,EAC/B,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,EAC5B,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,EACtB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC;CACtC,GACA,OAAO,CAAC,CAAC,EAAE,CAAC,CAcd"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,OAAO,EACL,cAAc,EACd,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAsB,EACtB,OAIC;IAED,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE9D,IAAI,IAAI,GAAQ,EAAE,CAAC;IACnB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,GAAG,MAAM,EAAE,EAAE,CAAC;QAClB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH,OAAO,EACL,cAAc,EACd,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAsB,EACtB,OAIC;IAED,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE9D,IAAI,IAAI,GAAQ,EAAE,CAAC;IACnB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,GAAG,MAAM,EAAE,EAAE,CAAC;QAClB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -12,7 +12,7 @@
12
12
  * `https://{testnet,mainnet}.mercurydata.app/rest/passkey-indexer`
13
13
  * GET / -> `{ service, status }` health
14
14
  * GET /api/wallet/:contractId -> signers (this backend's getSigners)
15
- * GET /api/lookup/:credentialId -> wallets by passkey keyId (hex)
15
+ * GET /api/v2/lookup/:credentialId -> wallets by passkey keyId (hex)
16
16
  * GET /api/lookup/address/:address -> wallets by ed25519 (G…) / policy (C…)
17
17
  * GET /api/stats -> indexer statistics
18
18
  *
@@ -50,6 +50,7 @@ export interface MercuryIndexerConfig {
50
50
  }
51
51
  export declare class MercuryIndexer implements SignerIndexer {
52
52
  private readonly config;
53
+ private expectedNetwork?;
53
54
  constructor(config: MercuryIndexerConfig);
54
55
  /**
55
56
  * Null-tolerant factory: resolve the hosted base URL for `networkPassphrase`
@@ -1 +1 @@
1
- {"version":3,"file":"mercury.d.ts","sourceRoot":"","sources":["../../src/indexer/mercury.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC;AAS3D,OAAO,KAAK,EACV,wBAAwB,EAExB,aAAa,EACb,aAAa,EAEb,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,MAAM,GACxB,MAAM,GAAG,SAAS,CAMpB;AAsCD,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,qBAAa,cAAe,YAAW,aAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IASzD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAC5D,iBAAiB,EAAE,MAAM,GACxB,cAAc,GAAG,IAAI;IAMxB;;;;OAIG;YACW,GAAG;IAqCX,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA8BzD;;;;;;OAMG;YACW,WAAW;IASnB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAYjE;;;;;;;OAOG;YACW,iBAAiB;IAiCzB,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;CAiBvC"}
1
+ {"version":3,"file":"mercury.d.ts","sourceRoot":"","sources":["../../src/indexer/mercury.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC;AAS3D,OAAO,KAAK,EACV,wBAAwB,EAExB,aAAa,EACb,aAAa,EAGb,qBAAqB,EAErB,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,MAAM,GACxB,MAAM,GAAG,SAAS,CAMpB;AA8FD,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,qBAAa,cAAe,YAAW,aAAa;IAGtC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,eAAe,CAAC,CAAwB;gBAEnB,MAAM,EAAE,oBAAoB;IAezD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAC5D,iBAAiB,EAAE,MAAM,GACxB,cAAc,GAAG,IAAI;IAaxB;;;;OAIG;YACW,GAAG;IAqCX,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA8BzD;;;;;;OAMG;YACW,WAAW;IASnB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkBjE;;;;;;;OAOG;YACW,iBAAiB;IAiCzB,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;CAiBvC"}
@@ -12,7 +12,7 @@
12
12
  * `https://{testnet,mainnet}.mercurydata.app/rest/passkey-indexer`
13
13
  * GET / -> `{ service, status }` health
14
14
  * GET /api/wallet/:contractId -> signers (this backend's getSigners)
15
- * GET /api/lookup/:credentialId -> wallets by passkey keyId (hex)
15
+ * GET /api/v2/lookup/:credentialId -> wallets by passkey keyId (hex)
16
16
  * GET /api/lookup/address/:address -> wallets by ed25519 (G…) / policy (C…)
17
17
  * GET /api/stats -> indexer statistics
18
18
  *
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * @packageDocumentation
22
22
  */
23
- import { Networks } from "@stellar/stellar-sdk";
23
+ import { Networks, StrKey } from "@stellar/stellar-sdk";
24
24
  import { Durability } from "@stellar/stellar-sdk/rpc";
25
25
  import { SignerKey } from "../types.js";
26
26
  import { IndexerError, PasskeyKitErrorCode } from "../errors.js";
@@ -43,11 +43,19 @@ export function mercuryPasskeyIndexerUrl(networkPassphrase) {
43
43
  }
44
44
  export class MercuryIndexer {
45
45
  config;
46
+ expectedNetwork;
46
47
  constructor(config) {
47
48
  this.config = config;
48
49
  if (!config.url) {
49
50
  throw new IndexerError("MercuryIndexer requires a url", PasskeyKitErrorCode.INDEXER_NOT_CONFIGURED);
50
51
  }
52
+ const normalizedUrl = config.url.replace(/\/$/, "");
53
+ if (normalizedUrl === MERCURY_PASSKEY_INDEXER_URLS.testnet) {
54
+ this.expectedNetwork = "testnet";
55
+ }
56
+ else if (normalizedUrl === MERCURY_PASSKEY_INDEXER_URLS.mainnet) {
57
+ this.expectedNetwork = "mainnet";
58
+ }
51
59
  }
52
60
  /**
53
61
  * Null-tolerant factory: resolve the hosted base URL for `networkPassphrase`
@@ -59,7 +67,14 @@ export class MercuryIndexer {
59
67
  const url = config.url ?? mercuryPasskeyIndexerUrl(networkPassphrase);
60
68
  if (!url)
61
69
  return null;
62
- return new MercuryIndexer({ ...config, url });
70
+ const indexer = new MercuryIndexer({ ...config, url });
71
+ if (networkPassphrase === Networks.TESTNET) {
72
+ indexer.expectedNetwork = "testnet";
73
+ }
74
+ if (networkPassphrase === Networks.PUBLIC) {
75
+ indexer.expectedNetwork = "mainnet";
76
+ }
77
+ return indexer;
63
78
  }
64
79
  /**
65
80
  * GET a passkey-indexer route. Returns the parsed JSON, or `null` on a `404`
@@ -134,11 +149,17 @@ export class MercuryIndexer {
134
149
  // Secp256r1 keys are looked up by hex credential id; ed25519/policy keys by
135
150
  // their strkey address. The SDK carries the Secp256r1 keyId as base64url, so
136
151
  // convert to the hex the credential-id route expects.
137
- const path = key.key === "Secp256r1"
138
- ? `/api/lookup/${base64url.toBuffer(key.value).toString("hex")}`
152
+ const credentialId = key.key === "Secp256r1"
153
+ ? base64url.toBuffer(key.value).toString("hex")
154
+ : undefined;
155
+ const path = credentialId
156
+ ? `/api/v2/lookup/${credentialId}`
139
157
  : `/api/lookup/address/${key.value}`;
140
158
  const res = await this.get(path);
141
- return this.confirmCandidates(parseLookupResponse(res), key);
159
+ const lookup = credentialId
160
+ ? parseV2LookupResponse(res, credentialId, this.expectedNetwork)
161
+ : parseLegacyLookupResponse(res);
162
+ return this.confirmCandidates(lookup, key);
142
163
  }
143
164
  /**
144
165
  * Keep a candidate only when it still holds the signer entry on-chain.
@@ -240,6 +261,11 @@ function parseLedger(value) {
240
261
  }
241
262
  return undefined;
242
263
  }
264
+ function parseV2Ledger(value) {
265
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 1
266
+ ? value
267
+ : undefined;
268
+ }
243
269
  function parseWalletRef(value) {
244
270
  if (!isRecord(value))
245
271
  return undefined;
@@ -280,7 +306,7 @@ function sameContractIds(candidates, otherRows) {
280
306
  [...candidateIds].every((contractId) => otherIds.has(contractId)));
281
307
  }
282
308
  /** Map a lookup JSON body onto {@link WalletCandidateLookup} without inventing birth data. */
283
- function parseLookupResponse(res) {
309
+ function parseLegacyLookupResponse(res) {
284
310
  if (!isRecord(res)) {
285
311
  return { complete: false, candidates: [] };
286
312
  }
@@ -320,6 +346,157 @@ function parseLookupResponse(res) {
320
346
  candidates,
321
347
  };
322
348
  }
349
+ const CANDIDATE_INCOMPLETE_REASONS = new Set([
350
+ "missing_birth",
351
+ "rpc_unchecked",
352
+ "signer_unconfirmed",
353
+ "instance_missing",
354
+ "wasm_unresolved",
355
+ "inconsistent_creation_ledger",
356
+ ]);
357
+ const LOOKUP_INCOMPLETE_REASONS = new Set([
358
+ "reducer_errors",
359
+ "index_behind",
360
+ ]);
361
+ const PUBLIC_KEY_HEX = /^04[0-9a-f]{128}$/;
362
+ function closedReasons(value, allowed) {
363
+ if (!Array.isArray(value) || value.length === 0)
364
+ return undefined;
365
+ if (!value.every((reason) => typeof reason === "string" && allowed.has(reason))) {
366
+ return undefined;
367
+ }
368
+ return value;
369
+ }
370
+ function v2SignerIsComplete(value) {
371
+ if (!isRecord(value))
372
+ return false;
373
+ const expiration = value.expiration;
374
+ const expirationUnit = value.expiration_unit;
375
+ return (typeof value.publicKey === "string" &&
376
+ PUBLIC_KEY_HEX.test(value.publicKey) &&
377
+ (expiration === null ||
378
+ (typeof expiration === "number" &&
379
+ Number.isSafeInteger(expiration) &&
380
+ expiration >= 0)) &&
381
+ ((expiration === null && expirationUnit === null) ||
382
+ (expiration !== null &&
383
+ (expirationUnit === "unix" || expirationUnit === "ledger"))) &&
384
+ (value.storage === "persistent" || value.storage === "temporary") &&
385
+ value.status === "live" &&
386
+ value.rpcConfirmed === true);
387
+ }
388
+ function parseV2DiagnosticCandidate(value) {
389
+ const candidate = parseWalletRef(value);
390
+ if (!candidate || !isRecord(value))
391
+ return candidate;
392
+ if (value.incomplete === true) {
393
+ const reasons = closedReasons(value.incompleteReasons, CANDIDATE_INCOMPLETE_REASONS);
394
+ if (reasons)
395
+ candidate.incompleteReasons = reasons;
396
+ }
397
+ return candidate;
398
+ }
399
+ function v2EnvelopeIsComplete(input, credentialId, indexedThroughLedger, expectedNetwork) {
400
+ if (!isRecord(input))
401
+ return false;
402
+ const value = input;
403
+ const rpcCheckedAtLedger = parseV2Ledger(value.rpcCheckedAtLedger);
404
+ return (value.schema === 2 &&
405
+ value.credentialId === credentialId &&
406
+ expectedNetwork !== undefined &&
407
+ value.network === expectedNetwork &&
408
+ value.complete === true &&
409
+ indexedThroughLedger !== undefined &&
410
+ rpcCheckedAtLedger !== undefined &&
411
+ indexedThroughLedger >= rpcCheckedAtLedger &&
412
+ Array.isArray(value.candidates) &&
413
+ (!Object.hasOwn(value, "wallets") ||
414
+ (Array.isArray(value.wallets) &&
415
+ sameContractIds(value.candidates
416
+ .map(parseWalletRef)
417
+ .filter((candidate) => candidate !== undefined), value.wallets))) &&
418
+ Number.isSafeInteger(value.count) &&
419
+ value.count === value.candidates.length &&
420
+ typeof value.ambiguous === "boolean" &&
421
+ !("incompleteReasons" in value));
422
+ }
423
+ function parseCompleteV2Candidate(value) {
424
+ if (!isRecord(value) || value.incomplete !== false)
425
+ return undefined;
426
+ if ("incompleteReasons" in value)
427
+ return undefined;
428
+ const contractId = value.contractId;
429
+ const birthWasmHash = value.birthWasmHash;
430
+ const creationTransactionHash = value.creationTransactionHash;
431
+ const creationLedger = parseV2Ledger(value.creationLedger);
432
+ if (typeof contractId !== "string" ||
433
+ !StrKey.isValidContract(contractId) ||
434
+ typeof birthWasmHash !== "string" ||
435
+ !HEX_64.test(birthWasmHash) ||
436
+ typeof creationTransactionHash !== "string" ||
437
+ !HEX_64.test(creationTransactionHash) ||
438
+ creationLedger === undefined ||
439
+ typeof value.currentWasmHash !== "string" ||
440
+ !HEX_64.test(value.currentWasmHash) ||
441
+ (value.generation !== "legacy" && value.generation !== "v1") ||
442
+ typeof value.derivedAddress !== "boolean" ||
443
+ typeof value.collision !== "boolean" ||
444
+ !v2SignerIsComplete(value.signer)) {
445
+ return undefined;
446
+ }
447
+ return {
448
+ contractId,
449
+ birthWasmHash,
450
+ creationTransactionHash,
451
+ creationLedger,
452
+ derivedAddress: value.derivedAddress,
453
+ collision: value.collision,
454
+ };
455
+ }
456
+ /** Parse the frozen Mercury credential-lookup v2 wire contract fail-closed. */
457
+ function parseV2LookupResponse(res, credentialId, expectedNetwork) {
458
+ if (!isRecord(res))
459
+ return { complete: false, candidates: [] };
460
+ const rows = Array.isArray(res.candidates) ? res.candidates : [];
461
+ const diagnosticRows = rows.length > 0 || !Array.isArray(res.wallets) ? rows : res.wallets;
462
+ const diagnosticCandidates = diagnosticRows
463
+ .map(parseV2DiagnosticCandidate)
464
+ .filter((candidate) => candidate !== undefined);
465
+ const indexedThroughLedger = parseV2Ledger(res.indexedThroughLedger);
466
+ const responseReasons = closedReasons(res.incompleteReasons, LOOKUP_INCOMPLETE_REASONS);
467
+ const incomplete = () => ({
468
+ complete: false,
469
+ ...(typeof res.schema === "number" ? { schema: res.schema } : {}),
470
+ ...(indexedThroughLedger !== undefined ? { indexedThroughLedger } : {}),
471
+ ...(responseReasons ? { incompleteReasons: responseReasons } : {}),
472
+ candidates: diagnosticCandidates,
473
+ });
474
+ if (!v2EnvelopeIsComplete(res, credentialId, indexedThroughLedger, expectedNetwork)) {
475
+ return incomplete();
476
+ }
477
+ const candidates = rows.map(parseCompleteV2Candidate);
478
+ if (candidates.some((candidate) => candidate === undefined)) {
479
+ return incomplete();
480
+ }
481
+ const completeCandidates = candidates;
482
+ const ids = new Set(completeCandidates.map(({ contractId }) => contractId));
483
+ const ambiguous = ids.size > 1;
484
+ const hasDerived = completeCandidates.some(({ derivedAddress }) => derivedAddress);
485
+ const hasNonDerived = completeCandidates.some(({ derivedAddress }) => !derivedAddress);
486
+ const collision = hasDerived && hasNonDerived;
487
+ if (ids.size !== completeCandidates.length ||
488
+ res.ambiguous !== ambiguous ||
489
+ completeCandidates.some((candidate) => candidate.creationLedger > res.indexedThroughLedger) ||
490
+ completeCandidates.some((candidate) => candidate.collision !== collision)) {
491
+ return incomplete();
492
+ }
493
+ return {
494
+ schema: 2,
495
+ complete: true,
496
+ indexedThroughLedger: res.indexedThroughLedger,
497
+ candidates: completeCandidates.map(({ derivedAddress: _derivedAddress, collision: _collision, ...candidate }) => candidate),
498
+ };
499
+ }
323
500
  /** Map a fully-decoded passkey-indexer signer row onto a {@link WalletSigner}. */
324
501
  function jsonToWalletSigner(json) {
325
502
  const publicKey = json.publicKey
@@ -1 +1 @@
1
- {"version":3,"file":"mercury.js","sourceRoot":"","sources":["../../src/indexer/mercury.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mercury.js","sourceRoot":"","sources":["../../src/indexer/mercury.ts"],"names":[],"mappings":"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"}
@@ -59,9 +59,15 @@ export interface WalletCandidate {
59
59
  /** Ledger that created the contract. */
60
60
  creationLedger: number;
61
61
  }
62
+ /** Closed Mercury v2 causes for one incomplete candidate. */
63
+ export type WalletCandidateIncompleteReason = "missing_birth" | "rpc_unchecked" | "signer_unconfirmed" | "instance_missing" | "wasm_unresolved" | "inconsistent_creation_ledger";
64
+ /** Closed Mercury v2 causes for an incomplete lookup response. */
65
+ export type WalletLookupIncompleteReason = "reducer_errors" | "index_behind";
62
66
  /** An incomplete row retained only for diagnostics. It is never connectable. */
63
67
  export type IncompleteWalletCandidate = Partial<WalletCandidate> & {
64
68
  contractId: string;
69
+ /** Mercury v2 candidate-level causes. Present only for an incomplete row. */
70
+ incompleteReasons?: WalletCandidateIncompleteReason[];
65
71
  };
66
72
  /**
67
73
  * Reverse-lookup result. `complete` is true only when the indexer claimed a
@@ -78,6 +84,8 @@ export type WalletCandidateLookup = {
78
84
  schema?: number;
79
85
  complete: false;
80
86
  indexedThroughLedger?: number;
87
+ /** Mercury v2 response-level causes. These do not describe one row. */
88
+ incompleteReasons?: WalletLookupIncompleteReason[];
81
89
  /** Diagnostic rows only. Callers must reject the full response. */
82
90
  candidates: IncompleteWalletCandidate[];
83
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,qDAAqD;AACrD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,GAAG,EAAE,SAAS,CAAC;IACf,2DAA2D;IAC3D,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,uCAAuC;IACvC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,gCAAgC;IAChC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,uBAAuB,EAAE,MAAM,CAAC;IAChC,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,gFAAgF;AAChF,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG;IACjE,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,IAAI,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B,GACD;IACE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mEAAmE;IACnE,UAAU,EAAE,yBAAyB,EAAE,CAAC;CACzC,CAAC;AAEN;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACpD,4EAA4E;IAC5E,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,+EAA+E;IAC/E,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,qDAAqD;AACrD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,GAAG,EAAE,SAAS,CAAC;IACf,2DAA2D;IAC3D,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,uCAAuC;IACvC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,gCAAgC;IAChC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,uBAAuB,EAAE,MAAM,CAAC;IAChC,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,6DAA6D;AAC7D,MAAM,MAAM,+BAA+B,GACvC,eAAe,GACf,eAAe,GACf,oBAAoB,GACpB,kBAAkB,GAClB,iBAAiB,GACjB,8BAA8B,CAAC;AAEnC,kEAAkE;AAClE,MAAM,MAAM,4BAA4B,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAE7E,gFAAgF;AAChF,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,+BAA+B,EAAE,CAAC;CACvD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,IAAI,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B,GACD;IACE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACnD,mEAAmE;IACnE,UAAU,EAAE,yBAAyB,EAAE,CAAC;CACzC,CAAC;AAEN;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACpD,4EAA4E;IAC5E,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,+EAA+E;IAC/E,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,CAAC;CAC3B"}
@@ -36,12 +36,44 @@ export interface SignAuthEntryDeps {
36
36
  spec: ContractSpec;
37
37
  signerContext: SignerContext;
38
38
  calculateExpiration: () => Promise<number>;
39
+ /** Connected wallet contract id. Required to refuse nested wallet-admin calls. */
40
+ contractId?: string;
39
41
  }
40
42
  /** Per-call signing options. */
41
43
  export interface SignOptions {
42
44
  /** Signature expiration ledger (defaults to the configured window). */
43
45
  expiration?: number;
46
+ /**
47
+ * Allow this entry to authorize nested calls back into the connected wallet
48
+ * (e.g. `add_signer`, `update_signer`, `remove_signer`, `upgrade`,
49
+ * `add_secp256r1`). Default `false`. Wallet-admin writes must use the
50
+ * dedicated builders (`addEd25519`, `addSecp256r1`, `addPolicy`, `remove`,
51
+ * `upgrade`), never a generic dApp `sign()` call.
52
+ */
53
+ allowWalletReentry?: boolean;
44
54
  }
55
+ /**
56
+ * Refuse any wallet-admin use covered by this signature — the entry root
57
+ * itself or any nested sub-invocation. A signature covers the whole
58
+ * authorization tree, so both shapes are the same grant:
59
+ *
60
+ * - Shape A (graft): dApp root (e.g. `evil.claim`) with a nested
61
+ * `wallet.add_signer(attacker)` sub-invocation.
62
+ * - Shape B (hostile root): the transaction's top-level call IS
63
+ * `wallet.add_signer(attacker)` (or `add_secp256r1` / `update_signer` /
64
+ * `remove_signer` / `upgrade`), built by a hostile dApp and handed to
65
+ * generic `sign()`. The auth-entry root is the admin call itself, so a
66
+ * sub-invocation-only check signs it clean.
67
+ *
68
+ * Legit wallet-admin writes build the admin call as the transaction's own
69
+ * host function through the dedicated builders (`addEd25519`,
70
+ * `addSecp256r1`, `addPolicy`, `remove`, `upgrade`). They pass
71
+ * `allowWalletReentry: true` at sign time to declare that intent. A generic
72
+ * dApp `sign()` call must never carry wallet-admin authority, root or nested.
73
+ *
74
+ * @throws {SigningError} If wallet-admin authority is found and not allowed.
75
+ */
76
+ export declare function assertNoWalletAdminReentry(entry: xdr.SorobanAuthorizationEntry, contractId: string | undefined, allowWalletReentry: boolean): void;
45
77
  /**
46
78
  * Sign a single Soroban authorization entry with a {@link Signer}, merging the
47
79
  * resulting `(SignerKey, Signature)` pair into the entry's flat `Signatures`
@@ -54,11 +86,35 @@ export declare function signAuthEntry(deps: SignAuthEntryDeps, entry: xdr.Soroba
54
86
  export interface SignTxDeps extends SignAuthEntryDeps {
55
87
  getContractId: () => string | undefined;
56
88
  }
89
+ /**
90
+ * Pin each wallet-admin entry root to the transaction's own top-level host
91
+ * function. The dedicated builders produce exactly this shape: the transaction
92
+ * invokes `wallet.<admin-fn>` and the single auth entry roots at that same
93
+ * call. A hostile dApp handing over a pre-built admin transaction cannot forge
94
+ * the caller's envelope, so a mismatch is refused even when the caller opted
95
+ * into `allowWalletReentry` (making `signAdmin` self-validating instead of a
96
+ * full bypass on misuse).
97
+ *
98
+ * Non-admin roots (dApp calls such as token transfers) pass through: the
99
+ * per-entry tree check already refused nested wallet-admin authority.
100
+ *
101
+ * @throws {SigningError} If a wallet-admin root does not match the top-level call.
102
+ */
103
+ export declare function assertAdminRootMatchesHostFunction(entry: xdr.SorobanAuthorizationEntry, contractId: string, hostFunc: xdr.HostFunction): void;
57
104
  /**
58
105
  * Sign every auth entry of an {@link AssembledTransaction} that is authorized by
59
106
  * the connected wallet, using `signer`. Returns the same transaction with its
60
107
  * auth entries signed.
61
108
  *
109
+ * Generic dApp `sign()` calls must never carry wallet-admin authority. Standalone
110
+ * `signAuthEntry()` has no transaction context, so a wallet-admin entry root is
111
+ * necessarily hostile there (dedicated builders are the only legit producers of
112
+ * admin roots, and they sign through this path with `allowWalletReentry: true`).
113
+ * This function additionally pins each wallet-admin entry root to the
114
+ * transaction's own top-level host function: the dedicated builders produce
115
+ * exactly that shape, while a hostile dApp handing over a pre-built admin
116
+ * transaction cannot forge the transaction envelope the caller already holds.
117
+ *
62
118
  * @throws {SigningError} If no wallet is connected.
63
119
  */
64
120
  export declare function sign<T>(deps: SignTxDeps, txn: AssembledTransaction<T>, signer: Signer, options?: SignOptions): Promise<AssembledTransaction<T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"tx-ops.d.ts","sourceRoot":"","sources":["../../src/kit/tx-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAiC,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EACV,oBAAoB,EACpB,IAAI,IAAI,YAAY,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAa3D,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/E;AAED,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5C;AAED,gCAAgC;AAChC,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,GAAG,CAAC,yBAAyB,EACpC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CA6CxC;AAED,gEAAgE;AAChE,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,CAAC,EAC1B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAkBlC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE;QAAE,KAAK,IAAI,GAAG,CAAC,sBAAsB,CAAA;KAAE,CAAC;CAC1D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IACJ,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,EACD,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,MAAM,CAAC,CAiDjB"}
1
+ {"version":3,"file":"tx-ops.d.ts","sourceRoot":"","sources":["../../src/kit/tx-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAA0C,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EACV,oBAAoB,EACpB,IAAI,IAAI,YAAY,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAa3D,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/E;AAED,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAyBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,GAAG,CAAC,yBAAyB,EACpC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,kBAAkB,EAAE,OAAO,GAC1B,IAAI,CAuDN;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,GAAG,CAAC,yBAAyB,EACpC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAoDxC;AAED,gEAAgE;AAChE,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,GAAG,CAAC,yBAAyB,EACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,GAAG,CAAC,YAAY,GACzB,IAAI,CA+BN;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,IAAI,CAAC,CAAC,EAC1B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAkClC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE;QAAE,KAAK,IAAI,GAAG,CAAC,sBAAsB,CAAA;KAAE,CAAC;CAC1D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IACJ,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,EACD,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,MAAM,CAAC,CAiDjB"}