passkey-kit 0.13.1 → 0.15.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.
Files changed (64) hide show
  1. package/README.md +29 -20
  2. package/dist/constants.d.ts +20 -5
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +20 -5
  5. package/dist/constants.js.map +1 -1
  6. package/dist/contract-errors.d.ts.map +1 -1
  7. package/dist/contract-errors.js +3 -0
  8. package/dist/contract-errors.js.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/indexer/mercury.d.ts +6 -0
  14. package/dist/indexer/mercury.d.ts.map +1 -1
  15. package/dist/indexer/mercury.js +10 -2
  16. package/dist/indexer/mercury.js.map +1 -1
  17. package/dist/kit/auth-payload.d.ts +17 -0
  18. package/dist/kit/auth-payload.d.ts.map +1 -1
  19. package/dist/kit/auth-payload.js +24 -0
  20. package/dist/kit/auth-payload.js.map +1 -1
  21. package/dist/kit/deploy-ops.d.ts +9 -7
  22. package/dist/kit/deploy-ops.d.ts.map +1 -1
  23. package/dist/kit/deploy-ops.js +11 -8
  24. package/dist/kit/deploy-ops.js.map +1 -1
  25. package/dist/kit/tx-ops.d.ts +7 -4
  26. package/dist/kit/tx-ops.d.ts.map +1 -1
  27. package/dist/kit/tx-ops.js +27 -6
  28. package/dist/kit/tx-ops.js.map +1 -1
  29. package/dist/kit.d.ts +16 -8
  30. package/dist/kit.d.ts.map +1 -1
  31. package/dist/kit.js +85 -22
  32. package/dist/kit.js.map +1 -1
  33. package/dist/managers/signer-manager.d.ts +13 -2
  34. package/dist/managers/signer-manager.d.ts.map +1 -1
  35. package/dist/managers/signer-manager.js +22 -3
  36. package/dist/managers/signer-manager.js.map +1 -1
  37. package/dist/managers/submission-manager.d.ts +12 -17
  38. package/dist/managers/submission-manager.d.ts.map +1 -1
  39. package/dist/managers/submission-manager.js +77 -19
  40. package/dist/managers/submission-manager.js.map +1 -1
  41. package/dist/relayer.d.ts +2 -2
  42. package/dist/relayer.d.ts.map +1 -1
  43. package/dist/relayer.js +6 -3
  44. package/dist/relayer.js.map +1 -1
  45. package/dist/rpc-data.d.ts +10 -0
  46. package/dist/rpc-data.d.ts.map +1 -1
  47. package/dist/rpc-data.js +12 -0
  48. package/dist/rpc-data.js.map +1 -1
  49. package/dist/server.d.ts +4 -4
  50. package/dist/server.d.ts.map +1 -1
  51. package/dist/server.js +12 -5
  52. package/dist/server.js.map +1 -1
  53. package/dist/types.d.ts +1 -1
  54. package/dist/utils.d.ts +36 -2
  55. package/dist/utils.d.ts.map +1 -1
  56. package/dist/utils.js +162 -46
  57. package/dist/utils.js.map +1 -1
  58. package/dist/validation.d.ts +6 -4
  59. package/dist/validation.d.ts.map +1 -1
  60. package/dist/validation.js +8 -6
  61. package/dist/validation.js.map +1 -1
  62. package/dist/version.d.ts +1 -1
  63. package/dist/version.js +1 -1
  64. package/package.json +7 -7
@@ -1,11 +1,9 @@
1
1
  /**
2
- * Submission manager: builds and signs the deploy transaction with the fee-
3
- * paying deployer keypair, derives deterministic wallet addresses, and drives
4
- * the footprint-restore flow.
2
+ * Submission manager: builds and authorizes deploys, derives deterministic
3
+ * wallet addresses, and drives the footprint-restore flow.
5
4
  *
6
5
  * Network submission itself is the server's job (`PasskeyServer` / relayer); this
7
- * manager owns the deployer keypair and the fee-payer signature that make a
8
- * deploy transaction submittable.
6
+ * manager owns the deployer identity and its deploy authorization signature.
9
7
  *
10
8
  * @packageDocumentation
11
9
  */
@@ -20,30 +18,27 @@ export interface SubmissionManagerDeps {
20
18
  networkPassphrase: string;
21
19
  walletWasmHash: string;
22
20
  deployerKeypair: Keypair;
21
+ restoreKeypair?: Keypair;
23
22
  timeoutInSeconds: number;
24
23
  }
25
24
  export declare class SubmissionManager {
26
25
  private readonly deps;
27
26
  constructor(deps: SubmissionManagerDeps);
28
- /** The deployer's `G…` public key (fee source + derivation deployer). */
27
+ /** The deployer's `G…` public key (address-derivation identity). */
29
28
  get deployerPublicKey(): string;
30
29
  /** Deterministically derive the wallet address for a passkey credential. */
31
30
  deriveWalletAddress(keyId: Buffer): string;
32
31
  /** Build the wallet deploy transaction (initial Secp256r1 signer). */
33
32
  buildDeployTransaction(keyId: Buffer, publicKey: Uint8Array): Promise<AssembledTransaction<PasskeyClient>>;
34
33
  /**
35
- * Sign a deploy transaction with the deployer keypair (the fee source) and
36
- * return the signed transaction XDR.
34
+ * Authorize a deploy and return its carrier transaction XDR.
37
35
  *
38
- * The deploy carries source-account auth, so it is submitted through the
39
- * relayer's fee-bump (`{ xdr }`) path. A fee-bumped Soroban inner transaction
40
- * must have `fee == resourceFee` the fee-bump supplies the inclusion fee
41
- * or the relayer rejects it with a fee mismatch ("Transaction fee must be
42
- * equal to the resource fee"). The assembled fee is `inclusion + resource`,
43
- * so pin it to the resource fee BEFORE the deployer signs (the signature
44
- * commits to the fee). `TransactionBuilder.cloneFrom` drops
45
- * `SorobanTransactionData` (→ txMalformed), so set the fee field surgically on
46
- * the envelope and rebuild.
36
+ * The shared deployer signs one address auth entry; the carrier has no usable
37
+ * source or envelope signature and `PasskeyServer` submits its `{func,auth}`.
38
+ * A custom deployer keeps the legacy self-source envelope path. Its inner fee
39
+ * must equal the resource fee before signing because the fee bump supplies the
40
+ * inclusion fee. `TransactionBuilder.cloneFrom` drops Soroban data, so that
41
+ * fee field is changed directly on the envelope.
47
42
  */
48
43
  signDeploy(tx: AssembledTransaction<PasskeyClient>): Promise<string>;
49
44
  /** Restore an archived footprint reported by simulation. */
@@ -1 +1 @@
1
- {"version":3,"file":"submission-manager.d.ts","sourceRoot":"","sources":["../../src/managers/submission-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAK/D,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,qBAAqB;IAExD,yEAAyE;IACzE,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,4EAA4E;IAC5E,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAU1C,sEAAsE;IACtE,sBAAsB,CACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAc/C;;;;;;;;;;;;;OAaG;IACG,UAAU,CAAC,EAAE,EAAE,oBAAoB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB1E,4DAA4D;IAC5D,gBAAgB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CAWpE"}
1
+ {"version":3,"file":"submission-manager.d.ts","sourceRoot":"","sources":["../../src/managers/submission-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAK/D,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAM1B,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,qBAAqB;IAExD,oEAAoE;IACpE,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,4EAA4E;IAC5E,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAU1C,sEAAsE;IACtE,sBAAsB,CACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAe/C;;;;;;;;;OASG;IACG,UAAU,CAAC,EAAE,EAAE,oBAAoB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoG1E,4DAA4D;IAC5D,gBAAgB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CAWpE"}
@@ -1,23 +1,24 @@
1
1
  /**
2
- * Submission manager: builds and signs the deploy transaction with the fee-
3
- * paying deployer keypair, derives deterministic wallet addresses, and drives
4
- * the footprint-restore flow.
2
+ * Submission manager: builds and authorizes deploys, derives deterministic
3
+ * wallet addresses, and drives the footprint-restore flow.
5
4
  *
6
5
  * Network submission itself is the server's job (`PasskeyServer` / relayer); this
7
- * manager owns the deployer keypair and the fee-payer signature that make a
8
- * deploy transaction submittable.
6
+ * manager owns the deployer identity and its deploy authorization signature.
9
7
  *
10
8
  * @packageDocumentation
11
9
  */
12
- import { TransactionBuilder } from "@stellar/stellar-sdk";
10
+ import { Address, TransactionBuilder, xdr } from "@stellar/stellar-sdk";
13
11
  import { buildDeployTransaction as buildDeployTransactionOp, deriveWalletAddress as deriveWalletAddressOp, } from "../kit/deploy-ops.js";
14
12
  import { restoreFootprint as restoreFootprintOp, } from "../kit/tx-ops.js";
13
+ import { buildSignaturePayload } from "../kit/auth-payload.js";
14
+ import { isDefaultDeployer } from "../utils.js";
15
+ const DEPLOY_AUTH_LIFETIME_LEDGERS = 720;
15
16
  export class SubmissionManager {
16
17
  deps;
17
18
  constructor(deps) {
18
19
  this.deps = deps;
19
20
  }
20
- /** The deployer's `G…` public key (fee source + derivation deployer). */
21
+ /** The deployer's `G…` public key (address-derivation identity). */
21
22
  get deployerPublicKey() {
22
23
  return this.deps.deployerKeypair.publicKey();
23
24
  }
@@ -35,27 +36,84 @@ export class SubmissionManager {
35
36
  networkPassphrase: this.deps.networkPassphrase,
36
37
  walletWasmHash: this.deps.walletWasmHash,
37
38
  deployerPublicKey: this.deployerPublicKey,
39
+ usingSharedDeployer: isDefaultDeployer(this.deployerPublicKey),
38
40
  timeoutInSeconds: this.deps.timeoutInSeconds,
39
41
  }, keyId, publicKey);
40
42
  }
41
43
  /**
42
- * Sign a deploy transaction with the deployer keypair (the fee source) and
43
- * return the signed transaction XDR.
44
+ * Authorize a deploy and return its carrier transaction XDR.
44
45
  *
45
- * The deploy carries source-account auth, so it is submitted through the
46
- * relayer's fee-bump (`{ xdr }`) path. A fee-bumped Soroban inner transaction
47
- * must have `fee == resourceFee` the fee-bump supplies the inclusion fee
48
- * or the relayer rejects it with a fee mismatch ("Transaction fee must be
49
- * equal to the resource fee"). The assembled fee is `inclusion + resource`,
50
- * so pin it to the resource fee BEFORE the deployer signs (the signature
51
- * commits to the fee). `TransactionBuilder.cloneFrom` drops
52
- * `SorobanTransactionData` (→ txMalformed), so set the fee field surgically on
53
- * the envelope and rebuild.
46
+ * The shared deployer signs one address auth entry; the carrier has no usable
47
+ * source or envelope signature and `PasskeyServer` submits its `{func,auth}`.
48
+ * A custom deployer keeps the legacy self-source envelope path. Its inner fee
49
+ * must equal the resource fee before signing because the fee bump supplies the
50
+ * inclusion fee. `TransactionBuilder.cloneFrom` drops Soroban data, so that
51
+ * fee field is changed directly on the envelope.
54
52
  */
55
53
  async signDeploy(tx) {
56
54
  if (!tx.built) {
57
55
  throw new Error("deploy transaction has not been built/simulated");
58
56
  }
57
+ if (isDefaultDeployer(this.deployerPublicKey)) {
58
+ const operation = tx.built.operations[0];
59
+ const auth = operation?.type === "invokeHostFunction" ? operation.auth ?? [] : [];
60
+ const latestLedger = tx.simulation?.latestLedger;
61
+ const authorizedFunction = auth[0]?.rootInvocation().function();
62
+ const authorizedCreate = authorizedFunction?.switch().name ===
63
+ "sorobanAuthorizedFunctionTypeCreateContractV2HostFn"
64
+ ? authorizedFunction.createContractV2HostFn()
65
+ : undefined;
66
+ const operationCreate = operation?.type === "invokeHostFunction" &&
67
+ operation.func.switch().name === "hostFunctionTypeCreateContractV2"
68
+ ? operation.func.createContractV2()
69
+ : undefined;
70
+ const fromAddress = authorizedCreate?.contractIdPreimage().fromAddress();
71
+ if (tx.built.operations.length !== 1 ||
72
+ tx.built.source === this.deployerPublicKey ||
73
+ tx.built.signatures.length !== 0 ||
74
+ auth.length !== 1 ||
75
+ latestLedger === undefined ||
76
+ !authorizedCreate ||
77
+ !operationCreate ||
78
+ !Buffer.from(authorizedCreate.toXDR()).equals(operationCreate.toXDR()) ||
79
+ !fromAddress ||
80
+ Address.fromScAddress(fromAddress.address()).toString() !==
81
+ this.deployerPublicKey ||
82
+ // The deployer signs the whole tree, so anything hanging off the root
83
+ // would be authorized too. A deployment needs no sub-invocations.
84
+ auth[0].rootInvocation().subInvocations().length !== 0) {
85
+ throw new Error("shared deploy simulation did not return one matching address authorization");
86
+ }
87
+ const nonceBytes = crypto.getRandomValues(new Uint8Array(8));
88
+ const expirationLedger = latestLedger + DEPLOY_AUTH_LIFETIME_LEDGERS;
89
+ const credentials = new xdr.SorobanAddressCredentials({
90
+ address: Address.fromString(this.deployerPublicKey).toScAddress(),
91
+ nonce: xdr.Int64.fromString(Buffer.from(nonceBytes).readBigInt64BE().toString()),
92
+ signatureExpirationLedger: expirationLedger,
93
+ signature: xdr.ScVal.scvVoid(),
94
+ });
95
+ const signedEntry = new xdr.SorobanAuthorizationEntry({
96
+ credentials: xdr.SorobanCredentials.sorobanCredentialsAddress(credentials),
97
+ rootInvocation: auth[0].rootInvocation(),
98
+ });
99
+ credentials.signature(xdr.ScVal.scvVec([
100
+ xdr.ScVal.scvMap([
101
+ new xdr.ScMapEntry({
102
+ key: xdr.ScVal.scvSymbol("public_key"),
103
+ val: xdr.ScVal.scvBytes(this.deps.deployerKeypair.rawPublicKey()),
104
+ }),
105
+ new xdr.ScMapEntry({
106
+ key: xdr.ScVal.scvSymbol("signature"),
107
+ val: xdr.ScVal.scvBytes(this.deps.deployerKeypair.sign(buildSignaturePayload(this.deps.networkPassphrase, signedEntry, expirationLedger))),
108
+ }),
109
+ ]),
110
+ ]));
111
+ const envelope = tx.built.toEnvelope();
112
+ envelope.v1().tx().operations()[0].body().invokeHostFunctionOp().auth([
113
+ signedEntry,
114
+ ]);
115
+ return envelope.toXDR("base64");
116
+ }
59
117
  const envelope = tx.built.toEnvelope();
60
118
  const inner = envelope.v1().tx();
61
119
  const resourceFee = inner.ext().sorobanData().resourceFee().toString();
@@ -69,7 +127,7 @@ export class SubmissionManager {
69
127
  return restoreFootprintOp({
70
128
  rpc: this.deps.rpc,
71
129
  networkPassphrase: this.deps.networkPassphrase,
72
- deployerKeypair: this.deps.deployerKeypair,
130
+ sourceKeypair: this.deps.restoreKeypair,
73
131
  timeoutInSeconds: this.deps.timeoutInSeconds,
74
132
  }, restorePreamble);
75
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"submission-manager.js","sourceRoot":"","sources":["../../src/managers/submission-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,EACL,sBAAsB,IAAI,wBAAwB,EAClD,mBAAmB,IAAI,qBAAqB,GAC7C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,IAAI,kBAAkB,GAEvC,MAAM,kBAAkB,CAAC;AAW1B,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,IAA2B;QAA3B,SAAI,GAAJ,IAAI,CAAuB;IAAG,CAAC;IAE5D,yEAAyE;IACzE,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;IAC/C,CAAC;IAED,4EAA4E;IAC5E,mBAAmB,CAAC,KAAa;QAC/B,OAAO,qBAAqB,CAC1B;YACE,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAC9C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,EACD,KAAK,CACN,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,sBAAsB,CACpB,KAAa,EACb,SAAqB;QAErB,OAAO,wBAAwB,CAC7B;YACE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACxB,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAC9C,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YACxC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;SAC7C,EACD,KAAK,EACL,SAAS,CACV,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,UAAU,CAAC,EAAuC;QACtD,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;QACvE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAE/B,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAC5C,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EACxB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CACb,CAAC;QACjB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5C,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,4DAA4D;IAC5D,gBAAgB,CAAC,eAAgC;QAC/C,OAAO,kBAAkB,CACvB;YACE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YAClB,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAC9C,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;YAC1C,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;SAC7C,EACD,eAAe,CAChB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"submission-manager.js","sourceRoot":"","sources":["../../src/managers/submission-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAKxE,OAAO,EACL,sBAAsB,IAAI,wBAAwB,EAClD,mBAAmB,IAAI,qBAAqB,GAC7C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,IAAI,kBAAkB,GAEvC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAYzC,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,IAA2B;QAA3B,SAAI,GAAJ,IAAI,CAAuB;IAAG,CAAC;IAE5D,oEAAoE;IACpE,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;IAC/C,CAAC;IAED,4EAA4E;IAC5E,mBAAmB,CAAC,KAAa;QAC/B,OAAO,qBAAqB,CAC1B;YACE,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAC9C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,EACD,KAAK,CACN,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,sBAAsB,CACpB,KAAa,EACb,SAAqB;QAErB,OAAO,wBAAwB,CAC7B;YACE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACxB,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAC9C,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YACxC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,mBAAmB,EAAE,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC9D,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;SAC7C,EACD,KAAK,EACL,SAAS,CACV,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,UAAU,CAAC,EAAuC;QACtD,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,SAAS,EAAE,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;YACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC;YAChE,MAAM,gBAAgB,GACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC,IAAI;gBACjC,qDAAqD;gBACnD,CAAC,CAAC,kBAAkB,CAAC,sBAAsB,EAAE;gBAC7C,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,eAAe,GACnB,SAAS,EAAE,IAAI,KAAK,oBAAoB;gBACxC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,kCAAkC;gBACjE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACnC,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,WAAW,GAAG,gBAAgB,EAAE,kBAAkB,EAAE,CAAC,WAAW,EAAE,CAAC;YAEzE,IACE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;gBAChC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB;gBAC1C,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;gBAChC,IAAI,CAAC,MAAM,KAAK,CAAC;gBACjB,YAAY,KAAK,SAAS;gBAC1B,CAAC,gBAAgB;gBACjB,CAAC,eAAe;gBAChB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBACtE,CAAC,WAAW;gBACZ,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;oBACrD,IAAI,CAAC,iBAAiB;gBACxB,sEAAsE;gBACtE,kEAAkE;gBAClE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC,MAAM,KAAK,CAAC,EACtD,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,gBAAgB,GAAG,YAAY,GAAG,4BAA4B,CAAC;YACrE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC;gBACpD,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE;gBACjE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CACzB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CACpD;gBACD,yBAAyB,EAAE,gBAAgB;gBAC3C,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;aAC/B,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC;gBACpD,WAAW,EAAE,GAAG,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,WAAW,CAAC;gBAC1E,cAAc,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,cAAc,EAAE;aAC1C,CAAC,CAAC;YACH,WAAW,CAAC,SAAS,CACnB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;oBACf,IAAI,GAAG,CAAC,UAAU,CAAC;wBACjB,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;wBACtC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;qBAClE,CAAC;oBACF,IAAI,GAAG,CAAC,UAAU,CAAC;wBACjB,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;wBACrC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CACrB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAC5B,qBAAqB,CACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAC3B,WAAW,EACX,gBAAgB,CACjB,CACF,CACF;qBACF,CAAC;iBACH,CAAC;aACH,CAAC,CACH,CAAC;YAEF,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACvC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC;gBACrE,WAAW;aACZ,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;QACvE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAE/B,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAC5C,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EACxB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CACb,CAAC;QACjB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5C,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,4DAA4D;IAC5D,gBAAgB,CAAC,eAAgC;QAC/C,OAAO,kBAAkB,CACvB;YACE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;YAClB,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAC9C,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YACvC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;SAC7C,EACD,eAAe,CAChB,CAAC;IACJ,CAAC;CACF"}
package/dist/relayer.d.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  * - {@link RelayerClient.send} — `{ func, auth }` for invokeHostFunction flows
11
11
  * (the preferred Soroban path; the relayer builds the envelope + pays fees).
12
12
  * - {@link RelayerClient.sendTransaction} — `{ xdr }` for a signed envelope
13
- * (e.g. a deploy transaction that needs source-account auth + a fee bump).
13
+ * (e.g. a custom-deployer transaction that needs a fee bump).
14
14
  *
15
15
  * Every method returns a discriminated {@link TransactionResult} and NEVER
16
16
  * throws for expected relayer/on-chain failures — a `PluginClientError` is
@@ -49,7 +49,7 @@ export declare class RelayerClient {
49
49
  send(func: string, auth: string[], options?: RelayerSubmitOptions): Promise<TransactionResult>;
50
50
  /**
51
51
  * Submit a signed transaction envelope via `{ xdr }` for a fee bump (preserves
52
- * the inner signature; use for deploys / source-account-auth transactions).
52
+ * the inner signature; use for custom-source / source-account-auth flows).
53
53
  */
54
54
  sendTransaction(xdr: string, options?: RelayerSubmitOptions): Promise<TransactionResult>;
55
55
  /** Poll a previously-submitted (`skipWait`) transaction by its relayer id. */
@@ -1 +1 @@
1
- {"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../src/relayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAQxE,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAaD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;gBAE9B,MAAM,EAAE,mBAAmB;IAevC;;;;OAIG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAW7B;;;OAGG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAU7B,8EAA8E;IACxE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAIzD,GAAG;IAUjB,OAAO,CAAC,QAAQ;IAqChB,OAAO,CAAC,QAAQ;CAiCjB"}
1
+ {"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../src/relayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAQxE,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgBD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;gBAE9B,MAAM,EAAE,mBAAmB;IAevC;;;;OAIG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAW7B;;;OAGG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAU7B,8EAA8E;IACxE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAIzD,GAAG;IAUjB,OAAO,CAAC,QAAQ;IAqChB,OAAO,CAAC,QAAQ;CAiCjB"}
package/dist/relayer.js CHANGED
@@ -10,7 +10,7 @@
10
10
  * - {@link RelayerClient.send} — `{ func, auth }` for invokeHostFunction flows
11
11
  * (the preferred Soroban path; the relayer builds the envelope + pays fees).
12
12
  * - {@link RelayerClient.sendTransaction} — `{ xdr }` for a signed envelope
13
- * (e.g. a deploy transaction that needs source-account auth + a fee bump).
13
+ * (e.g. a custom-deployer transaction that needs a fee bump).
14
14
  *
15
15
  * Every method returns a discriminated {@link TransactionResult} and NEVER
16
16
  * throws for expected relayer/on-chain failures — a `PluginClientError` is
@@ -28,8 +28,11 @@ import { DEFAULT_RELAYER_TIMEOUT_MS } from "./constants.js";
28
28
  * on-chain inclusion counts as success — anything else is failure or still
29
29
  * pending. An allowlist (not a failure denylist) is deliberate: an unrecognized
30
30
  * or non-terminal status must never be mistaken for a confirmed transaction.
31
+ * Word-bounded so negated forms ("unsuccessful", "unconfirmed") and
32
+ * non-terminal forms ("confirming") never match. Keep identical to
33
+ * relayer-proxy/src/constants.ts.
31
34
  */
32
- const SUCCESS_STATUS = /confirm|success/i;
35
+ const SUCCESS_STATUS = /\b(?:confirm(?:ed)?|success(?:ful)?)\b/i;
33
36
  /** Terminal-failure statuses. */
34
37
  const FAILURE_STATUS = /fail|error|revert|reject/i;
35
38
  export class RelayerClient {
@@ -60,7 +63,7 @@ export class RelayerClient {
60
63
  }
61
64
  /**
62
65
  * Submit a signed transaction envelope via `{ xdr }` for a fee bump (preserves
63
- * the inner signature; use for deploys / source-account-auth transactions).
66
+ * the inner signature; use for custom-source / source-account-auth flows).
64
67
  */
65
68
  async sendTransaction(xdr, options) {
66
69
  return this.run(() => this.channels.submitTransaction({
@@ -1 +1 @@
1
- {"version":3,"file":"relayer.js","sourceRoot":"","sources":["../src/relayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relayer.js","sourceRoot":"","sources":["../src/relayer.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,16 @@ export declare function contractDataLedgerKey(contractId: string, key: xdr.ScVal
25
25
  * a flaky RPC for an absent entry.
26
26
  */
27
27
  export declare function readContractData(rpc: Server, contractId: string, key: xdr.ScVal, durability: Durability): Promise<xdr.ScVal | null>;
28
+ /**
29
+ * Whether a contract's instance entry exists on-chain.
30
+ *
31
+ * Returns `false` only on a genuine not-found; a transport error (429/5xx/
32
+ * timeout) throws. `connectWallet` uses this to confirm the deterministically
33
+ * derived wallet address: only an authoritative not-found may abandon the
34
+ * canonical derivation for the storage/indexer fallbacks — a flaky RPC must
35
+ * never reroute resolution away from the canonical derivation.
36
+ */
37
+ export declare function contractInstanceExists(rpc: Server, contractId: string): Promise<boolean>;
28
38
  /**
29
39
  * Whether a contract-data entry exists in the given durability.
30
40
  *
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-data.d.ts","sourceRoot":"","sources":["../src/rpc-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEnE,oFAAoF;AACpF,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,GAAG,CAAC,SAAS,CAWf;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAM3B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,OAAO,CAAC,CAElB"}
1
+ {"version":3,"file":"rpc-data.d.ts","sourceRoot":"","sources":["../src/rpc-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEnE,oFAAoF;AACpF,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,GAAG,CAAC,SAAS,CAWf;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAM3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,OAAO,CAAC,CAElB"}
package/dist/rpc-data.js CHANGED
@@ -37,6 +37,18 @@ export async function readContractData(rpc, contractId, key, durability) {
37
37
  const entry = entries[0];
38
38
  return entry ? entry.val.contractData().val() : null;
39
39
  }
40
+ /**
41
+ * Whether a contract's instance entry exists on-chain.
42
+ *
43
+ * Returns `false` only on a genuine not-found; a transport error (429/5xx/
44
+ * timeout) throws. `connectWallet` uses this to confirm the deterministically
45
+ * derived wallet address: only an authoritative not-found may abandon the
46
+ * canonical derivation for the storage/indexer fallbacks — a flaky RPC must
47
+ * never reroute resolution away from the canonical derivation.
48
+ */
49
+ export async function contractInstanceExists(rpc, contractId) {
50
+ return contractDataExists(rpc, contractId, xdr.ScVal.scvLedgerKeyContractInstance(), Durability.Persistent);
51
+ }
40
52
  /**
41
53
  * Whether a contract-data entry exists in the given durability.
42
54
  *
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-data.js","sourceRoot":"","sources":["../src/rpc-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAe,MAAM,0BAA0B,CAAC;AAEnE,oFAAoF;AACpF,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,OAAO,GAAG,CAAC,SAAS,CAAC,YAAY,CAC/B,IAAI,GAAG,CAAC,qBAAqB,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;QACtD,GAAG;QACH,UAAU,EACR,UAAU,KAAK,UAAU,CAAC,SAAS;YACjC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,EAAE;YACxC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,UAAU,EAAE;KAC9C,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAC5C,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CACnD,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,OAAO,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"rpc-data.js","sourceRoot":"","sources":["../src/rpc-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAe,MAAM,0BAA0B,CAAC;AAEnE,oFAAoF;AACpF,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,OAAO,GAAG,CAAC,SAAS,CAAC,YAAY,CAC/B,IAAI,GAAG,CAAC,qBAAqB,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;QACtD,GAAG;QACH,UAAU,EACR,UAAU,KAAK,UAAU,CAAC,SAAS;YACjC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,EAAE;YACxC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,UAAU,EAAE;KAC9C,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAC5C,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CACnD,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAW,EACX,UAAkB;IAElB,OAAO,kBAAkB,CACvB,GAAG,EACH,UAAU,EACV,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,EACxC,UAAU,CAAC,UAAU,CACtB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,UAAkB,EAClB,GAAc,EACd,UAAsB;IAEtB,OAAO,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC;AAC7E,CAAC"}
package/dist/server.d.ts CHANGED
@@ -50,10 +50,10 @@ export declare class PasskeyServer {
50
50
  /**
51
51
  * Submit a transaction via the relayer for fee sponsorship.
52
52
  *
53
- * invokeHostFunction transactions without source-account auth use the preferred
54
- * `{ func, auth }` Soroban path; everything else (deploys, source-account auth)
55
- * is fee-bumped via the `{ xdr }` envelope path. Never throws — returns a typed
56
- * {@link TransactionResult}.
53
+ * Single-op invokeHostFunction transactions without source-account auth use
54
+ * the preferred `{ func, auth }` Soroban path (including shared-deployer
55
+ * deploys); everything else is fee-bumped via `{ xdr }`. Never throws —
56
+ * returns a typed {@link TransactionResult}.
57
57
  */
58
58
  send(input: AssembledTransaction<unknown> | Transaction | string, options?: RelayerSubmitOptions): Promise<TransactionResult>;
59
59
  /** Poll a `skipWait` submission by its relayer transaction id. */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAiB,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AASlG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AAEtB,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,qCAAqC;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAmCD,qBAAa,aAAa;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB;gBAE9B,MAAM,EAAE,mBAAmB;IAgCvC;;;;;;;OAOG;IACG,IAAI,CACR,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,MAAM,EAC3D,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAmC7B,kEAAkE;IAClE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgBjE,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAIvD;;;;OAIG;IACG,aAAa,CACjB,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAChE,KAAK,SAAI,GACR,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAmB/B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAiB,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AASlG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AAEtB,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,qCAAqC;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAmCD,qBAAa,aAAa;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB;gBAE9B,MAAM,EAAE,mBAAmB;IAgCvC;;;;;;;OAOG;IACG,IAAI,CACR,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,MAAM,EAC3D,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IA4C7B,kEAAkE;IAClE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgBjE,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAIvD;;;;OAIG;IACG,aAAa,CACjB,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAChE,KAAK,SAAI,GACR,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAmB/B"}
package/dist/server.js CHANGED
@@ -79,10 +79,10 @@ export class PasskeyServer {
79
79
  /**
80
80
  * Submit a transaction via the relayer for fee sponsorship.
81
81
  *
82
- * invokeHostFunction transactions without source-account auth use the preferred
83
- * `{ func, auth }` Soroban path; everything else (deploys, source-account auth)
84
- * is fee-bumped via the `{ xdr }` envelope path. Never throws — returns a typed
85
- * {@link TransactionResult}.
82
+ * Single-op invokeHostFunction transactions without source-account auth use
83
+ * the preferred `{ func, auth }` Soroban path (including shared-deployer
84
+ * deploys); everything else is fee-bumped via `{ xdr }`. Never throws —
85
+ * returns a typed {@link TransactionResult}.
86
86
  */
87
87
  async send(input, options) {
88
88
  if (!this.relayer) {
@@ -97,8 +97,15 @@ export class PasskeyServer {
97
97
  ? err
98
98
  : new RelayerError(err instanceof Error ? err.message : String(err), PasskeyKitErrorCode.RELAYER_REQUEST_FAILED));
99
99
  }
100
+ // The {func,auth} path submits exactly ONE host function — the relayer
101
+ // rebuilds the envelope around it. Only take it when the transaction is a
102
+ // single invokeHostFunction op; a multi-op envelope must go through the
103
+ // full-envelope fee-bump path or its extra operations would be silently
104
+ // dropped (and could report success after executing only the first).
100
105
  const op = built.operations[0];
101
- if (op?.type === "invokeHostFunction" && !hasSourceAccountAuth(built)) {
106
+ if (built.operations.length === 1 &&
107
+ op?.type === "invokeHostFunction" &&
108
+ !hasSourceAccountAuth(built)) {
102
109
  const invokeOp = op;
103
110
  const func = invokeOp.func.toXDR("base64");
104
111
  const auth = (invokeOp.auth ?? []).map((entry) => entry.toXDR("base64"));
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -91,7 +91,7 @@ export interface CreateWalletResult {
91
91
  keyIdBase64: string;
92
92
  /** Deployed smart-wallet contract address. */
93
93
  contractId: string;
94
- /** Signed deployment transaction, ready to submit (base64 XDR). */
94
+ /** Authorized deployment carrier, ready to submit (base64 XDR). */
95
95
  signedTx: string;
96
96
  }
97
97
  /** Result of connecting to an existing smart wallet. */
package/dist/utils.d.ts CHANGED
@@ -4,6 +4,20 @@
4
4
  * @packageDocumentation
5
5
  */
6
6
  import type { RegistrationResponseJSON } from "@simplewebauthn/browser";
7
+ /**
8
+ * Public key of the shared, deterministic default deployer, derived once from
9
+ * {@link DEFAULT_DEPLOYER_SEED}.
10
+ */
11
+ export declare const DEFAULT_DEPLOYER_PUBLIC_KEY: string;
12
+ /**
13
+ * True when `publicKey` is the shared, publicly-derivable default deployer.
14
+ *
15
+ * That account is a **sign-only / address-derivation** identity: the SDK must
16
+ * never use it as a transaction source (its sequence can be bricked by anyone
17
+ * via `bumpSequence`) or fee payer (its balance is sweepable by anyone). It may
18
+ * only sign Soroban auth entries and salt the deploy.
19
+ */
20
+ export declare function isDefaultDeployer(publicKey: string): boolean;
7
21
  /**
8
22
  * Derive a smart-wallet contract address from a passkey credential id.
9
23
  *
@@ -20,6 +34,13 @@ import type { RegistrationResponseJSON } from "@simplewebauthn/browser";
20
34
  * @returns The derived contract address (`C…`)
21
35
  */
22
36
  export declare function deriveContractAddress(keyId: Buffer, deployerPublicKey: string, networkPassphrase: string): string;
37
+ /**
38
+ * Whether an uncompressed `0x04 || x || y` key is a point on the P-256 curve
39
+ * (`y² ≡ x³ − 3x + b (mod p)`, coordinates in-field). A structurally valid but
40
+ * off-curve key would register fine and deploy a wallet no signature can ever
41
+ * satisfy, so extraction rejects it up front.
42
+ */
43
+ export declare function isOnP256Curve(publicKey: Uint8Array): boolean;
23
44
  /**
24
45
  * Extract the 65-byte uncompressed secp256r1 public key from a WebAuthn
25
46
  * registration (attestation) response.
@@ -29,17 +50,30 @@ export declare function deriveContractAddress(keyId: Buffer, deployerPublicKey:
29
50
  * 2. `response.publicKey` decoded from SPKI via WebCrypto (`crypto.subtle`),
30
51
  * which is the correct, non-magic-offset way to normalize the DER-encoded
31
52
  * SubjectPublicKeyInfo most authenticators return.
32
- * 3. Parsing the COSE key out of `authenticatorData` / `attestationObject`.
53
+ * 3. Parsing the COSE key out of `authenticatorData`, then
54
+ * `attestationObject` — with the COSE structure verified in place, never
55
+ * trusted fixed offsets.
33
56
  *
34
- * @throws {WebAuthnError} If the public key cannot be extracted.
57
+ * Whatever the source, the result must be a valid point ON the P-256 curve;
58
+ * a mangled key is rejected here rather than deployed as an unusable wallet
59
+ * signer.
60
+ *
61
+ * @throws {WebAuthnError} If no valid public key can be extracted.
35
62
  */
36
63
  export declare function extractPublicKeyFromAttestation(response: RegistrationResponseJSON["response"]): Promise<Uint8Array>;
37
64
  /**
38
65
  * Convert a DER-encoded ECDSA signature to Stellar's compact `r || s` form with
39
66
  * a low-S value (S <= n/2), as required by the secp256r1 host function.
40
67
  *
68
+ * The DER structure is validated before any offset is dereferenced:
69
+ * sequence/integer tags, short-form lengths that exactly span the buffer, and
70
+ * `r`/`s` values in `[1, n-1]`. A WebAuthn P-256 signature always fits
71
+ * short-form DER (total length < 128 bytes), so long-form lengths are rejected.
72
+ *
41
73
  * @param derSignature - The DER-encoded signature
42
74
  * @returns 64-byte compact signature (`r || s`)
75
+ * @throws {ValidationError} If the signature is not structurally valid DER or
76
+ * `r`/`s` are out of range for P-256.
43
77
  */
44
78
  export declare function compactSignature(derSignature: Buffer): Uint8Array;
45
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAcxE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAcR;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,GAC7C,OAAO,CAAC,UAAU,CAAC,CAsFrB;AAMD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAyBjE;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAYxE;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAE3B,CAAC;AAEd;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5D;AAWD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAcR;AAcD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAe5D;AAgDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,GAC7C,OAAO,CAAC,UAAU,CAAC,CAoDrB;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAmDjE;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C"}